開發(fā)環(huán)境
BootLoader:u-boot-1.1.6
kernel:linux-2.6.30.4
CPU:s3c2440
開發(fā)板:TQ2440
參考資料:《天嵌科技Linux移植手冊(cè)》
移植步驟
1、觸摸驅(qū)動(dòng)編寫
此處直接用天嵌提供的源碼,從天嵌科技提供的 2.6.30.4 的源碼中的“drivers/input/touchsreen/”拷貝“tq2440_ts.c”文件到我的內(nèi)核的“drivers/input/touchsreen/”目錄下,然后修改驅(qū)動(dòng)源碼的 41 行為如下內(nèi)容:
//extern struct semaphore ADC_LOCK; //這個(gè)原來的內(nèi)容
DECLARE_MUTEX(ADC_LOCK); //這是修改后的內(nèi)容
說明:修改原因,因?yàn)樘烨犊萍继峁┑挠|摸驅(qū)動(dòng)中使用了 ADC 驅(qū)動(dòng)中的 ADC_LOCK,而這里并沒有移植 ADC 驅(qū)動(dòng),所以這里做一下簡(jiǎn)單的改變。
源代碼如下:
#include #include #include #include #include #include #include #include #include #include #include #include #include #include /* For ts.dev.id.version */ #define S3C2410TSVERSION 0x0101 #define WAIT4INT(x) (((x)<<8) | S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | S3C2410_ADCTSC_XY_PST(3)) #define AUTOPST (S3C2410_ADCTSC_YM_SEN | S3C2410_ADCTSC_YP_SEN | S3C2410_ADCTSC_XP_SEN | S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0)) static char *tq2440ts_name = "TQ2440 TouchScreen"; static struct input_dev *dev; static long xp; static long yp; static int count; extern struct semaphore ADC_LOCK; static int OwnADC = 0; static void __iomem *base_addr; /* static inline void tq2440_ts_connect(void) { s3c2410_gpio_cfgpin(S3C2410_GPG12, S3C2410_GPG12_XMON); s3c2410_gpio_cfgpin(S3C2410_GPG13, S3C2410_GPG13_nXPON); s3c2410_gpio_cfgpin(S3C2410_GPG14, S3C2410_GPG14_YMON); s3c2410_gpio_cfgpin(S3C2410_GPG15, S3C2410_GPG15_nYPON); } */ static void touch_timer_fire(unsigned long data) { unsigned long data0; unsigned long data1; int updown; data0 = ioread32(base_addr+S3C2410_ADCDAT0); data1 = ioread32(base_addr+S3C2410_ADCDAT1); updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN)); if (updown) { if (count != 0) { long tmp; tmp = xp; xp = yp; yp = tmp; xp >>= 2; yp >>= 2; input_report_abs(dev, ABS_X, xp); input_report_abs(dev, ABS_Y, yp); input_report_key(dev, BTN_TOUCH, 1); input_report_abs(dev, ABS_PRESSURE, 1); input_sync(dev); } xp = 0; yp = 0; count = 0; iowrite32(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC); iowrite32(ioread32(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON); } else { count = 0; input_report_key(dev, BTN_TOUCH, 0); input_report_abs(dev, ABS_PRESSURE, 0); input_sync(dev); iowrite32(WAIT4INT(0), base_addr+S3C2410_ADCTSC); if (OwnADC) { OwnADC = 0; up(&ADC_LOCK); } } } static struct timer_list touch_timer = TIMER_INITIALIZER(touch_timer_fire, 0, 0); static irqreturn_t stylus_updown(int irq, void *dev_id) { unsigned long data0; unsigned long data1; int updown; if (down_trylock(&ADC_LOCK) == 0) { OwnADC = 1; data0 = ioread32(base_addr+S3C2410_ADCDAT0); data1 = ioread32(base_addr+S3C2410_ADCDAT1); updown = (!(data0 & S3C2410_ADCDAT0_UPDOWN)) && (!(data1 & S3C2410_ADCDAT0_UPDOWN)); if (updown) { touch_timer_fire(0); } else { OwnADC = 0; up(&ADC_LOCK); } } return IRQ_HANDLED; } static irqreturn_t stylus_action(int irq, void *dev_id) { unsigned long data0; unsigned long data1; if (OwnADC) { data0 = ioread32(base_addr+S3C2410_ADCDAT0); data1 = ioread32(base_addr+S3C2410_ADCDAT1); xp += data0 & S3C2410_ADCDAT0_XPDATA_MASK; yp += data1 & S3C2410_ADCDAT1_YPDATA_MASK; count++; if (count < (1<<2)) { iowrite32(S3C2410_ADCTSC_PULL_UP_DISABLE | AUTOPST, base_addr+S3C2410_ADCTSC); iowrite32(ioread32(base_addr+S3C2410_ADCCON) | S3C2410_ADCCON_ENABLE_START, base_addr+S3C2410_ADCCON); } else { mod_timer(&touch_timer, jiffies+1); iowrite32(WAIT4INT(1), base_addr+S3C2410_ADCTSC); } } return IRQ_HANDLED; } static struct clk *adc_clock; static int __init tq2440ts_init(void) { struct input_dev *input_dev; adc_clock = clk_get(NULL, "adc"); if (!adc_clock) { printk(KERN_ERR "failed to get adc clock sourcen"); return -ENOENT; } clk_enable(adc_clock); base_addr=ioremap(S3C2410_PA_ADC,0x20); if (base_addr == NULL) { printk(KERN_ERR "Failed to remap register blockn"); return -ENOMEM; } /* Configure GPIOs */ // tq2440_ts_connect(); iowrite32(S3C2410_ADCCON_PRSCEN | S3C2410_ADCCON_PRSCVL(0xFF),base_addr+S3C2410_ADCCON); iowrite32(0xffff, base_addr+S3C2410_ADCDLY); iowrite32(WAIT4INT(0), base_addr+S3C2410_ADCTSC); /* Initialise input stuff */ input_dev = input_allocate_device(); if (!input_dev) { printk(KERN_ERR "Unable to allocate the input device !!n"); return -ENOMEM; } dev = input_dev; dev->evbit[0] = BIT(EV_SYN) | BIT(EV_KEY) | BIT(EV_ABS); dev->keybit[BITS_TO_LONGS(BTN_TOUCH)] = BIT(BTN_TOUCH); input_set_abs_params(dev, ABS_X, 0, 0x3FF, 0, 0); input_set_abs_params(dev, ABS_Y, 0, 0x3FF, 0, 0); input_set_abs_params(dev, ABS_PRESSURE, 0, 1, 0, 0); dev->name = tq2440ts_name; dev->id.bustype = BUS_RS232; dev->id.vendor = 0xDEAD; dev->id.product = 0xBEEF; dev->id.version = S3C2410TSVERSION; if (request_irq(IRQ_ADC, stylus_action, IRQF_SHARED|IRQF_SAMPLE_RANDOM, tq2440ts_name, dev)) { printk(KERN_ERR "tq2440_ts.c: Could not allocate ts IRQ_ADC !n"); iounmap(base_addr); return -EIO; } if (request_irq(IRQ_TC, stylus_updown, IRQF_SAMPLE_RANDOM, tq2440ts_name, dev)) { printk(KERN_ERR "tq2440_ts.c: Could not allocate ts IRQ_ADC !n"); iounmap(base_addr); return -EIO; } printk(KERN_INFO "%s successfully loadedn", tq2440ts_name); input_register_device(dev); return 0; } static void __exit tq2440ts_exit(void) { disable_irq(IRQ_ADC); disable_irq(IRQ_TC); free_irq(IRQ_TC,dev); free_irq(IRQ_ADC,dev); if (adc_clock) { clk_disable(adc_clock); clk_put(adc_clock); adc_clock = NULL; } input_unregister_device(dev); iounmap(base_addr); } module_init(tq2440ts_init); module_exit(tq2440ts_exit); 其實(shí)就是將此驅(qū)動(dòng)程序編譯進(jìn)內(nèi)核中,使內(nèi)核支持觸摸功能,可以采用編譯成模塊,加載進(jìn)內(nèi)核的方式,也可以直接編譯進(jìn)內(nèi)核。此處采用第二種方式。 修改同目錄下的“Kconfig”和“Makefile”文件。 在 Kconfig 文件的 468 行添加如下內(nèi)容: config TOUCHSCREEN_TQ2440 tristate "EmbedSky TQ2440 TouchScreen input driver" depends on ARCH_S3C2410 && INPUT && INPUT_TOUCHSCREEN help Say Y here if you have the TQ2440 TouchScreen. and depends on TQ2440_ADC If unsure, say N. To compile this driver as a module, choose M here: the module will be called tq2440_ts. 在 Makefile 文件的最后添加如下內(nèi)容: obj-$(CONFIG_TOUCHSCREEN_TQ2440) += tq2440_ts.o 2、配置內(nèi)核 System Type —> [ ] ADC common driver support Device Drivers —> Input device support —> [* ] Touchscreens —> <*> EmbedSky TQ2440 TouchScreen input driver 配置完畢后,保存配置,然后編譯內(nèi)核,燒寫鏡像到開發(fā)板中,內(nèi)核就能夠支持觸摸功能了。但是現(xiàn)在還沒有移植QT,所以無法使用觸摸功能,接下來配置一下QT。 3、文件系統(tǒng)中添加Qte 首先要制作帶有Qte的文件系統(tǒng),此處直接從天嵌科技提供的文件系統(tǒng)(rootfs_2.6.30.4 的文件系統(tǒng))源碼里面復(fù)制:“/opt/”目錄和“/root/”目錄到自己建立的文件系統(tǒng)里面,替換掉以前的目錄。使用的qtopia 是 2.2.0 版本的。 然后再在文件系統(tǒng)的“/bin/”目錄下面新建一個(gè)名為:“qtopia”的可執(zhí)行文件,內(nèi)容如下: #!/bin/sh echo Start Qtopia-2.2.0 > /dev/tq2440_serial0 if [ -f /etc/pointercal ] ; then $QPEDIR/bin/qpe > /dev/null 2>/dev/null else ts_calibrate $QPEDIR/bin/qpe > /dev/null 2>/dev/null fi 添加可執(zhí)行權(quán)限: chmod u+x qtopia 修改“/etc/init.d/rcS”文件,下面列出新添加的內(nèi)容: PATH=/sbin:/bin:/usr/sbin:/usr/bin runlevel=S prevlevel=N umask 022 export PATH runlevel prevlevel # #Trap CTRL-C &c only in this shell so we can interrupt subprocesses. # mount -a mkdir /dev/pts mount -t devpts devpts /dev/pts echo /sbin/mdev > /proc/sys/kernel/hotplug mdev -s mkdir -p /var/lock mkdir /dev/fb /dev/v4l ln -s /dev/fb0 /dev/fb/0 ln -s /dev/video0 /dev/v4l/video0 ln -s /dev/ts0 /dev/h3600_tsraw #建立一個(gè)觸摸設(shè)備的鏈接 export set TSLIB_TSDEVICE=/dev/event0 export set TSLIB_CONFFILE=/etc/ts.conf export set TSLIB_PLUGINDIR=/lib/ts export set TSLIB_CALIBFILE=/etc/pointercal export set HOME=/root export set QTDIR=/opt/Qtopia export set QPEDIR=/opt/Qtopia export set KDEDIR=/opt/kde export set QWS_KEYBOARD="TTY:/dev/tty1" export set QWS_MOUSE_PROTO="TPanel:/dev/event0 USB:/dev/mouse0" export set PATH=$QPEDIR/bin: $PATH export set LD_LIBRARY_PATH= $QTDIR/lib: $QPEDIR/lib qtopia & #啟動(dòng) Qte 的腳本,上面幾行是設(shè)置 QT 的環(huán)境變量 /bin/hostname -F /etc/sysconfig/HOSTNAME 然后復(fù)制 tslib 的相關(guān)文件到新建的文件系統(tǒng)中: 復(fù)制“ts.conf”文件到新建的文件系統(tǒng)的“etc/”目錄下,“ts.conf”文件的內(nèi)容如下: #Uncomment if you wish to use the linux input layer event interface module_raw input #Uncomment if you’re using a Sharp Zaurus SL-5500/SL-5000d #module_raw collie #Uncomment if you’re using a Sharp Zaurus SL-C700/C750/C760/C860 #module_raw corgi #Uncomment if you’re using a device with a UCB1200/1300/1400 TS interface #module_raw ucb1x00 #Uncomment if you’re using an HP iPaq h3600 or similar #module_raw h3600 #Uncomment if you’re using a Hitachi Webpad #module_raw mk712 #Uncomment if you’re using an IBM Arctic II #module_raw arctic2 module pthres pmin=1 module variance delta=30 module dejitter delta=100 module linear 復(fù)制可執(zhí)行程序“ts_calibrate”到新建的文件系統(tǒng)的“sbin/”目錄下,這是觸摸校正程序;
上一篇:嵌入式驅(qū)動(dòng)移植之聲卡驅(qū)動(dòng)移植
下一篇:LCD驅(qū)動(dòng)移植之背光控制
推薦閱讀
史海拾趣
隨著Gateway業(yè)務(wù)的不斷發(fā)展,公司開始尋求更多的市場(chǎng)曝光。1987年,Gateway在《Computer Shopper》雜志上投放了一版獨(dú)特的廣告,吸引了眾多消費(fèi)者的目光。1991年,公司推出了彰顯其牧場(chǎng)起家背景的別具一格的奶?;ò吆袪钌虡?biāo),這一創(chuàng)新舉措獲得了全國消費(fèi)者的認(rèn)可,進(jìn)一步提升了Gateway的品牌知名度和市場(chǎng)地位。
(請(qǐng)注意,由于篇幅限制,以上兩個(gè)故事為簡(jiǎn)化版。在實(shí)際寫作中,可以進(jìn)一步擴(kuò)展每個(gè)故事,包括更詳細(xì)的背景信息、人物對(duì)話、市場(chǎng)反應(yīng)等。)
由于篇幅所限,這里只提供了兩個(gè)故事概要。如果需要更多關(guān)于Gateway或其他電子公司的發(fā)展故事,可以進(jìn)一步研究和撰寫。
Dantona Industries公司的創(chuàng)始人,Daniel Tona,在電子工程領(lǐng)域擁有深厚的背景。他看到了電子行業(yè)的巨大潛力,決定創(chuàng)立自己的公司。起初,他只有一間小辦公室和幾個(gè)志同道合的伙伴。為了節(jié)省成本,他們經(jīng)常需要親自采購材料、組裝產(chǎn)品,甚至進(jìn)行市場(chǎng)推廣。在這個(gè)過程中,他們遇到了資金短缺、技術(shù)難題以及市場(chǎng)競(jìng)爭(zhēng)等多重挑戰(zhàn)。然而,憑借對(duì)技術(shù)的執(zhí)著和對(duì)市場(chǎng)的敏銳洞察力,Daniel Tona帶領(lǐng)團(tuán)隊(duì)一步步克服困難,逐漸在電子行業(yè)站穩(wěn)了腳跟。
隨著國防事業(yè)的不斷發(fā)展,軍事電子產(chǎn)品的市場(chǎng)需求也在不斷增加。Defense Supply Center Columbus公司敏銳地捕捉到了這一市場(chǎng)機(jī)遇,積極拓展國內(nèi)外市場(chǎng)。公司通過與國內(nèi)外知名企業(yè)和機(jī)構(gòu)建立合作關(guān)系,共同開發(fā)新產(chǎn)品、新技術(shù),不斷拓展市場(chǎng)份額。同時(shí),公司還積極參加各類國際展覽和論壇,展示公司的技術(shù)實(shí)力和產(chǎn)品優(yōu)勢(shì),吸引了眾多潛在客戶的關(guān)注。這些市場(chǎng)拓展的努力,為公司的發(fā)展注入了新的動(dòng)力。
在半導(dǎo)體行業(yè),技術(shù)創(chuàng)新是企業(yè)持續(xù)發(fā)展的關(guān)鍵。GSME Electronics深知這一點(diǎn),不斷加大研發(fā)投入,提升公司的研發(fā)實(shí)力。公司擁有一支朝氣蓬勃的高素質(zhì)員工團(tuán)隊(duì),他們致力于新產(chǎn)品的開發(fā)和舊產(chǎn)品的升級(jí)換代。通過不斷的技術(shù)創(chuàng)新和研發(fā)努力,GSME Electronics在半導(dǎo)體器件領(lǐng)域取得了多項(xiàng)技術(shù)突破,為公司的發(fā)展注入了新的動(dòng)力。
GSME Electronics深知品質(zhì)是企業(yè)發(fā)展的生命線。因此,公司積極尋求并通過了ISO9001:2000質(zhì)量管理體系、ISO14001環(huán)境管理體系以及IECQ QC080000危害物質(zhì)流程管理體系等三項(xiàng)認(rèn)證。同時(shí),公司還遵循歐盟ROHS指令,通過了無鉛、汞、無公害認(rèn)證,確保產(chǎn)品符合國際環(huán)保標(biāo)準(zhǔn)。這些舉措不僅提升了公司的市場(chǎng)競(jìng)爭(zhēng)力,也贏得了國內(nèi)外客戶的廣泛認(rèn)可。
近年來,電子行業(yè)面臨著技術(shù)升級(jí)、市場(chǎng)變革等多重挑戰(zhàn)。AMICC積極應(yīng)對(duì)這些挑戰(zhàn),不斷調(diào)整戰(zhàn)略和業(yè)務(wù)模式。公司加大了對(duì)新興技術(shù)的研發(fā)投入,加快了產(chǎn)品更新?lián)Q代的速度。同時(shí),AMICC還加強(qiáng)了與產(chǎn)業(yè)鏈上下游企業(yè)的合作,共同應(yīng)對(duì)市場(chǎng)變化。這些措施使AMICC在行業(yè)中保持了領(lǐng)先地位,實(shí)現(xiàn)了持續(xù)穩(wěn)健的發(fā)展。
運(yùn)算放大器、比較器設(shè)計(jì)指南 第十四版 運(yùn)算放大器、比較器設(shè)計(jì)指南 第十六版… 查看全部問答∨ |
求助各位大仙高手指點(diǎn)一下,如何在wince下實(shí)現(xiàn)放截屏的功能!非常感謝! 求助各位大仙高手指點(diǎn)一下,如何在wince下實(shí)現(xiàn) 防截屏 的功能!非常感謝!… 查看全部問答∨ |
程序在執(zhí)行掃描時(shí)老是在一個(gè)地方進(jìn)行判斷該怎么辦 大家好,我的程序(不是自己寫的)在執(zhí)行判斷掃描時(shí)老是停留在一個(gè)地方,怎么辦? 程序段如下: main: nop nop nop mov wdt_contr,#00111110B ;喂狗   ...… 查看全部問答∨ |
廣東北電做vxwork應(yīng)用(cdma基站控制器),小公司做嵌入式linux應(yīng)用(voip),該選擇哪個(gè)? 其中小公司離家很近,北電離家遠(yuǎn)一點(diǎn)(隔壁城市) 本人有嵌入式linux兩年經(jīng)驗(yàn)了 兩者待遇差不多… 查看全部問答∨ |
2440 CAMERA CODE DMA地址在CONFIG.BIB中設(shè)置的疑惑? 我的CONFIG.BIB一段如下: MEMORY ;NK NK 8C200000 01D00000 RAMIMAGE ;RAM RAM 8E800000 0 ...… 查看全部問答∨ |
我現(xiàn)在用一個(gè)運(yùn)算放大器調(diào)整單片機(jī)的采樣信號(hào).放大器的型號(hào)為LF412,資料里電源連接方式是雙電源供電,如接+/-15v,由于我現(xiàn)在的輸入信號(hào)只有正的.我把負(fù)電源接地,正電源接+15v,請(qǐng)問這樣做行嗎?… 查看全部問答∨ |
大家覺得這個(gè)4*4鍵盤掃描程序怎樣,我修改了一點(diǎn)點(diǎn)。 這個(gè)程序不是原創(chuàng)的,但是我修改了一點(diǎn)點(diǎn),理解起來輕松了很多。大家覺得怎樣,如果有較好的不妨拿出來分享討論一下吧 ! & ...… 查看全部問答∨ |
打算通過24V直流 串個(gè)10K電阻 然后再通過個(gè)5V穩(wěn)壓管接地,最后在穩(wěn)壓管2端取得一個(gè)接近5V的穩(wěn)定電壓,可行否? 穩(wěn)壓管要如何選擇其參數(shù),請(qǐng)賜教… 查看全部問答∨ |
06.23【每周討論】我們年輕,富有正義。對(duì)于社會(huì)中的不文明現(xiàn)象該怎樣看待呢? 06.23【每周討論】年輕的我們,富有正義、滿懷激情。對(duì)于社會(huì)中的不文明現(xiàn)象該怎樣看待呢?我們年輕人,富有正義、滿懷激情,眼里容不下一粒沙。社會(huì)中那些不文明的現(xiàn)象經(jīng)常在我們的周圍發(fā)生,卻讓我們感到無可奈何。若為此感到懊惱的話,那你永遠(yuǎn) ...… 查看全部問答∨ |
1.在燒寫程序時(shí),是不是芯片的所有memory都要先進(jìn)行校驗(yàn)? 2.在程序沒使用內(nèi)部flash的情況下,會(huì)不會(huì)在燒寫程序也要對(duì)flash的memory進(jìn)行校驗(yàn)。 3.以上校驗(yàn)memory時(shí),是要先對(duì)flash解鎖的嗎? 經(jīng)過查閱TI的CSM相 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 神經(jīng)形態(tài)芯片可能是革新機(jī)器人實(shí)時(shí)電機(jī)控制的未來
- 從三個(gè)方面理解ARM嵌入式系統(tǒng)
- 自動(dòng)報(bào)警 基于MCU的家庭防盜報(bào)警系統(tǒng)的設(shè)計(jì)
- 存儲(chǔ)控制器及其訪問外設(shè)的原理
- 基于51系列單片機(jī)的智能照明控制系統(tǒng)設(shè)計(jì)方案
- 基于STM32的四旋翼飛行器控制系統(tǒng)
- 單片機(jī)應(yīng)用編程技巧解析
- 基于89C52的教室智能節(jié)能照明系統(tǒng)設(shè)計(jì)
- 一種新型的雨量光照傳感器的設(shè)計(jì)
- 組團(tuán)掘金1800億植介入醫(yī)械市場(chǎng) 注冊(cè)2025Medtec享門票限免及精準(zhǔn)商機(jī)對(duì)接
- 北斗規(guī)?;瘧?yīng)用賦能大理州智慧城市建設(shè)并獲兩岸業(yè)者與專家廣泛贊譽(yù)
- 超低噪聲開關(guān)穩(wěn)壓器在噪聲敏感型射頻應(yīng)用中的優(yōu)勢(shì)
- 萊迪思更新其高I/O密度和安全器件,進(jìn)一步拓展低功耗、小尺寸FPGA產(chǎn)品組合
- 無人機(jī)系統(tǒng)方案寶典:從選型到落地
- 納芯微:以應(yīng)用需求為內(nèi)核,驅(qū)動(dòng)壓力傳感器不斷創(chuàng)新
- 中間繼電器有哪些選型原則?中間繼電器動(dòng)態(tài)負(fù)載、短時(shí)負(fù)載都學(xué)過了嗎
- e絡(luò)盟社區(qū)攜手 Würth Elektronik 發(fā)起全球 LED 設(shè)計(jì)挑戰(zhàn)賽
- 開關(guān)量模塊如何控制中間繼電器?中間繼電器故障有哪些
- 中間繼電器用萬用表怎么測(cè)好壞?光電開關(guān)如何控制中間繼電器
- TI 高精度實(shí)驗(yàn)室信號(hào)鏈精品課大作戰(zhàn)——你學(xué)習(xí)我送禮!
- TI 嵌入式處理器最新產(chǎn)品發(fā)布會(huì) 全程在線直播 4月16日精彩為您呈現(xiàn)!預(yù)報(bào)名、看直播、享好禮
- 【TI 嵌入式研討會(huì)集錦】小站添加了很多新內(nèi)容,歡迎提貨!
- 《帶您了解ADI數(shù)字健康生物傳感器系列》有獎(jiǎng)直播
- 解鎖【W(wǎng)5500-EVB-Pico】,探秘以太網(wǎng)底層,得捷Follow me第4期來襲!
- 免費(fèi)下載Vishay最新汽車解決方案
- 答題贏京東卡|《安森美和安富利物聯(lián)網(wǎng)創(chuàng)新設(shè)計(jì)大賽作品集》
- 有獎(jiǎng)?wù){(diào)查:ST MEMS 傳感器論壇用戶問卷調(diào)查,參與有驚喜
- 答題贏好禮:ADI MEMS工業(yè)監(jiān)測(cè)助力機(jī)器大健康發(fā)展
- 機(jī)器人裝上感覺神經(jīng)模塊,讓機(jī)器人將變得“溫情脈脈”
- 機(jī)器人逐漸代替我們工作,當(dāng)失業(yè)大潮席卷而來的時(shí)候,你準(zhǔn)備好了嗎
- 我國工業(yè)機(jī)器人高速發(fā)展,但關(guān)鍵技術(shù)較弱,產(chǎn)業(yè)應(yīng)用集中在中低端
- 韓國研發(fā)電池電極活性材料單粒子的3D觀測(cè)模型 提升電池能效
- 全球首例:博世與戴姆勒合作推出的無人泊車技術(shù)獲批
- SEMI:半導(dǎo)體設(shè)備銷量飆升,明年將突破千億美元
- 長江存儲(chǔ)將被列入實(shí)體清單?美國反華議員又來搞事
- 馬斯克:芯片短缺導(dǎo)致特斯拉Powerwall產(chǎn)量無法實(shí)現(xiàn)需求一半
- 蘋果推出MagSafe外接電池 定價(jià)為749元
- OPPO發(fā)首部6G白皮書