前言
我們在前面的arm系列課程,已經(jīng)講解了arm的架構(gòu)、匯編指令、異常、常用外設(shè)的控制器驅(qū)動,那么我們已經(jīng)具備開發(fā)arm系列產(chǎn)品的基本技能。
本篇給大家介紹一款比較常用的bootloader:uboot,通過uboot的介紹以及源代碼的詳細(xì)分析,讓大家把之前所有ARM相關(guān)的知識點(diǎn)融會貫通起來。
一、uboot
1. 概念
U-Boot 是一個主要用于嵌入式系統(tǒng)的引導(dǎo)加載程序,可以支持多種不同的計算機(jī)系統(tǒng)結(jié)構(gòu),包括PPC、ARM、AVR32、MIPS、x86、68k、Nios與MicroBlaze。這也是一套在GNU通用公共許可證之下發(fā)布的自由軟件。
U-Boot不僅僅支持嵌入式Linux系統(tǒng)的引導(dǎo),它還支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS, android嵌入式操作系統(tǒng)。其目前要支持的目標(biāo)操作系統(tǒng)是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS, android。
2. uboot基本功能
U-Boot可支持的主要功能列表:
系統(tǒng)引導(dǎo)支持NFS掛載、RAMDISK(壓縮或非壓縮)形式的根文件系統(tǒng);支持NFS掛載、從FLASH中引導(dǎo)壓縮或非壓縮系統(tǒng)內(nèi)核;
基本輔助功能強(qiáng)大的操作系統(tǒng)接口功能;可靈活設(shè)置、傳遞多個關(guān)鍵參數(shù)給操作系統(tǒng),適合系統(tǒng)在不同開發(fā)階段的調(diào)試要求與產(chǎn)品發(fā)布,尤以Linux支持最為強(qiáng)勁;支持目標(biāo)板環(huán)境參數(shù)多種存儲方式,如FLASH、NVRAM、EEPROM;
CRC32校驗(yàn)可校驗(yàn)FLASH中內(nèi)核、RAMDISK鏡像文件是否完好;
設(shè)備驅(qū)動串口、SDRAM、FLASH、以太網(wǎng)、LCD、NVRAM、EEPROM、鍵盤、USB、PCMCIA、PCI、RTC等驅(qū)動支持;
上電自檢功能SDRAM、FLASH大小自動檢測;SDRAM故障檢測;CPU型號。
3. 常用命令
uboot命令比較多,下面只列舉網(wǎng)絡(luò)啟動要用到的命令:
命令 | 含義 |
---|---|
bootdelay | 執(zhí)行自動啟動(bootcmd中的命令)的等候秒數(shù) |
baudrate | 串口控制臺的波特率 |
netmask | 以太網(wǎng)的網(wǎng)絡(luò)掩碼 |
ethaddr | 以太網(wǎng)的MAC地址 |
bootfile | 默認(rèn)的下載文件名 |
printenv | 打印Uboot環(huán)境變量 |
setenv | 設(shè)置Uboot環(huán)境變量 |
ipaddr | 本地的IP地址 |
serverip | TFTP服務(wù)器端的IP地址 |
gateway | 以太網(wǎng)的網(wǎng)關(guān) |
bootcmd | 自動啟動時執(zhí)行命令 |
bootargs | 傳遞給Linux內(nèi)核的啟動參數(shù) |
bootm | 引導(dǎo)啟動存儲在內(nèi)存中的程序映像。這些內(nèi)存包括RAM和可以永久保存的Flash。 |
4. 配置參數(shù)舉例
以下以網(wǎng)絡(luò)下載內(nèi)核、網(wǎng)絡(luò)掛載nfs為例。
1)ubuntu環(huán)境
ubuntu ip:192.168.6.186
nfs配置:
配置文件如下:
/etc/exports
配置信息如下:
2)開發(fā)板設(shè)置
開發(fā)板ip:192.168.6.187
配置命令:
setenv ipaddr 192.168.6.187 ;板子的ip
setenv serverip 192.168.6.186 ;虛擬機(jī)的ip
setenv gatewayip 192.168.1.1 ;網(wǎng)關(guān)
saveenv ;保存配置
加載內(nèi)核和設(shè)備樹
setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000
bootcmd:uboot2啟動之后,首先先執(zhí)行找到這個參數(shù),執(zhí)行后面的命令。
從tftp服務(wù)器下載內(nèi)核鏡像uImage到地址41000000,設(shè)備樹文件exynos4412-fs4412.dtb到42000000,并通過命令bootm加載啟動內(nèi)核。
掛載nfs
setenv bootargs root=/dev/nfs nfsroot=192.168.6.186:/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.6.187
掛載nfs文件系統(tǒng),
root=/dev/nfs
nfsroot=192.168.6.186:/rootfs nfs服務(wù)器地址192.168.6.186,目錄為/rootfs,
rw 文件系統(tǒng)操作權(quán)限為可續(xù)寫
console=ttySAC2,115200 串口名稱和波特率
init=/linuxrc 內(nèi)核啟動后運(yùn)行的進(jìn)程為linuxrc
ip=192.168.6.187 開發(fā)板地址
二、exynos-4412 Soc 啟動順序
要想了解exynos-4412的啟動順序,我們首先需要了解該soc的內(nèi)存布局。
1. exynos-4412內(nèi)存布局
通常一款soc的內(nèi)存在廠家設(shè)計的時候就已經(jīng)規(guī)定死了,對于使用者來說,我們無法改變。
我們只關(guān)心和啟動相關(guān)的一個地址,
iROM 在soc內(nèi)部,出廠時廠家固化了特定的程序,iROM中程序?qū)?yīng)用戶來說不可改變
iRAM 在soc內(nèi)部,速度較快,但空間不大
DMC RAM控制器,位于SOC內(nèi)部,用于驅(qū)動RAM,大容量的RAM都需要連接到該控制器
2. Booting Sequence
不同的廠家的啟動順序是不太一樣的,本篇主要以三星的exynos-4412 soc為基礎(chǔ),講解該基于該板子的uboot啟動順序。
根據(jù)上圖,系統(tǒng)啟動的大概順序:
iROM在SOC內(nèi)部,是一個64KB的ROM,他樹池化一些系統(tǒng)啟動必須的功能。比如:時鐘、棧。
iROM負(fù)責(zé)從特殊的啟動外設(shè)加載BL1的image到soc內(nèi)部的256KB的SRAM中。啟動的外設(shè)由操作按鈕來決定的。根據(jù)不同按鍵的值,iROM將會對bl1 的image做不同的校驗(yàn)。
BL1初始化系統(tǒng)時鐘和DRAM控制器,然后從啟動外設(shè)加載OS image到DRAM中。根據(jù)啟動按鈕的值的不同,BL1會對OS做不同的校驗(yàn)。
啟動完成之后,BL1跳轉(zhuǎn)到操作系統(tǒng)(kernel)。
iROM會根據(jù)OM 引腳的不同選擇不同的啟動設(shè)備,對應(yīng)的OM寄存器需要提供對應(yīng)的啟動信息。
三、內(nèi)核啟動流程概述
1. 內(nèi)核啟動流程 概述
如上圖所示:
設(shè)備上電之后,先執(zhí)行iROM中的出廠代碼,先進(jìn)行必要硬件的初始化
去執(zhí)行uboot,通常把kernel、設(shè)備樹文件放到flash中
程序啟動之后,往往先從flash啟動,運(yùn)行uboot
第一步:先進(jìn)行硬件的初始化(svc模式棧、clock、內(nèi)存、串口)
第二步:自搬移:把uboot從flash中拷貝到RAM中,跳轉(zhuǎn)到RAM中執(zhí)行剩下的uboot代碼
第三步:把內(nèi)核拷貝到RAM中,執(zhí)行內(nèi)核,把控制權(quán)交給內(nèi)核。
2. 內(nèi)核啟動詳細(xì)流程
四、uboot啟動流程代碼詳解
在三星的SoC中, 啟動流程可以分為三個階段BL0, BL1, BL2, BL3, 三星自己的手冊對BL1的解釋也不盡相同, 一種是將在iRAM中運(yùn)行的程序都?xì)w結(jié)為BL1; 一種是將iRAM中三星加密的代碼bl1.bin作為BL1, iRAM中剩余的部分作為BL2, 本文采用后者, 他們的主要分工如下:
BL0: ARM的起始地址都是0地址, 三星的芯片一般將0地址映射到iROM中, BL0就是指iROM中固化的啟動代碼, 主要負(fù)責(zé)加載BL1
BL1: 三星對于bootloader的加密代碼bl1.bin, 要放在外設(shè)中uboot.bin的頭上, 和一部分uboot.bin一起加載到iRAM中運(yùn)行.
BL2: 從(nand/sd/usb)中拷貝的uboot.bin頭最大14K到iRAM中代碼中除去bl1.bin后剩余的部分, 負(fù)責(zé)設(shè)置CPU為SVC模式, 關(guān)閉MMU, 關(guān)閉中斷, 關(guān)閉iCache, 關(guān)閉看門狗, 初始化DRAM,初始化時鐘, 初始化串口, 設(shè)置棧, 校驗(yàn)BL2并將其搬移到DRAM高位地址, 重定位到DRAM中執(zhí)行BL3
BL3:是指在代碼重定向后在內(nèi)存中執(zhí)行的uboot的完整代碼, 負(fù)責(zé)初始化外設(shè),更新向量表, 清BSS, 準(zhǔn)備內(nèi)核啟動參數(shù), 加載并運(yùn)行OS內(nèi)核
可以借助下圖理解這個流程
我們常說的uboot是一個兩階段bootloader,就是指上述的BL2和BL3. BL2主要做硬件直接相關(guān)的初始化,使用匯編編寫;BL3主要為操作系統(tǒng)的運(yùn)行準(zhǔn)備環(huán)境,主要用C編寫,這里以ARM平臺為例分析其啟動流程。下面是啟動過程中主要涉及的文件
arch/arm/cpu/armv7/start.S
board/samsung/myboard/lowlevel_init.S
arch/arm/lib/crt0.S
arch/arm/lib/board.c
arch/samsung/myboard/myboard.c
1. BL2
BL2的主要文件和任務(wù)流程如下
arch/arm/cpu/armv7/start.S
1. 設(shè)置CPU為SVC模式
2. 關(guān)閉MMU
3. 關(guān)閉Cache
4. 跳轉(zhuǎn)到lowlevel_init.S low_level_init
board/samsung/origen/lowlevel_init.S
5. 初始化時鐘
6. 初始化內(nèi)存
7. 初始化串口
8. 關(guān)閉看門狗
9. 跳轉(zhuǎn)到crt0.S _main
arch/arm/lib/crt0.S
10. 設(shè)置棧
11. 初始化C運(yùn)行環(huán)境
12. 調(diào)用board_init_f()
arch/arm/lib/board.c
13. board_init_f對全局信息GD結(jié)構(gòu)體進(jìn)行填充
arch/arm/lib/crt0.S
14. 代碼重定位------------BL2的最后的工作, 執(zhí)行完就進(jìn)入DRAM執(zhí)行BL2
2. lds文件
要想了解uboot整個項(xiàng)目的代碼流程,必須首先了解鏈接腳本【鏈接腳本參考《7. 從0開始學(xué)ARM-GNU偽指令,lds使用》】。
該文件決定了uboot最終生成的鏡像文件,各個段的布局。
uboot鏈接腳本如下:
u-boot-2013.01/arch/arm/cpu/u-boot.lds
文件內(nèi)容:
26 OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
27 OUTPUT_ARCH(arm)
28 ENTRY(_start)
29 SECTIONS 30 {
31 . = 0x00000000;
32
33 . = ALIGN(4);
34 .text :
35 {
36 __image_copy_start = .;
37 CPUDIR/start.o (.text*)
38 *(.text*)
39 }
40
41 . = ALIGN(4);
42 .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
43
44 . = ALIGN(4);
45 .data : {
46 *(.data*)
47 }
48
49 . = ALIGN(4);
50
51 . = .;
52
53 . = ALIGN(4);
54 .u_boot_list : {
55 #include 56 } 57 58 . = ALIGN(4); 59 60 __image_copy_end = .; 61 62 .rel.dyn : { 63 __rel_dyn_start = .; 64 *(.rel*) 65 __rel_dyn_end = .; 66 } 67 68 .dynsym : { 69 __dynsym_start = .; 70 *(.dynsym) 71 } 72 73 _end = .; 74 75 /* 76 * Deprecated: this MMU section is used by pxa at present but 77 * should not be used by new boards/CPUs. 78 */ 79 . = ALIGN(4096); 80 .mmutable : { 81 *(.mmutable) 82 } 83 84 .bss __rel_dyn_start (OVERLAY) : { 85 __bss_start = .; 86 *(.bss*) 87 . = ALIGN(4); 88 __bss_end__ = .; 89 } 90 91 /DISCARD/ : { *(.dynstr*) } 92 /DISCARD/ : { *(.dynamic*) } 93 /DISCARD/ : { *(.plt*) } 94 /DISCARD/ : { *(.interp*) } 95 /DISCARD/ : { *(.gnu*) } 96 } 97 核心內(nèi)容解釋: 27 OUTPUT_ARCH(arm) : 該鏡像運(yùn)行在arm架構(gòu)的硬件上 28 ENTRY(_start) : 程序的入口是 _start 29 SECTIONS 30 { 31 . = 0x00000000; : 程序的鏈接地址,不是運(yùn)行地址【uboot一定是位置無關(guān)碼】 34 .text : 35 { 36 __image_copy_start = .; : 宏對應(yīng)整個程序編譯好后首地址,自搬移代碼的初始位置 37 CPUDIR/start.o (.text*) : 第一個目標(biāo)文件CPUDIR/start.o中的代碼段 38 *(.text*) : 剩下的目標(biāo)文件的代碼段 39 } 60 __image_copy_end = .; : 自搬移代碼的結(jié)束為止 BSS全局未初始化變量、全局初始化為0的變量所在的段: 84 .bss __rel_dyn_start (OVERLAY) : { 85 __bss_start = .; 88 __bss_end__ = .; 89 } 3. uboot啟動代碼流程概要 代碼只分析到uboot命令行,函數(shù)main_loop()位置。 _start入口位于以下文件: u-boot-2013.01/arch/arm/cpu/armv7/start.S 第二階段代碼從_main開始: 以上代碼詳細(xì)解釋,請結(jié)合B站視頻同步學(xué)習(xí)。 五、uboot啟動的幾個關(guān)鍵知識點(diǎn) 如何判斷第一條機(jī)器指令的位置? 鏈接腳本決定了內(nèi)存的布局。 uboot鏈接腳本如下: u-boot-2013.01/arch/arm/cpu/u-boot.lds 文件內(nèi)容: 28 ENTRY(_start) 29 SECTIONS 30 { 31 . = 0x00000000; 32 uboot的入口是 鏈接地址是 uboot如何搬運(yùn)代碼? 代碼位于: u-boot-2013.01/arch/arm/cpu/armv7/start.S 搬移代碼如下: ENTRY(relocate_code) mov r4, r0 /* save addr_sp */ mov r5, r1 /* save addr of gd */ mov r6, r2 /* save addr of destination */ adr r0, _start cmp r0, r6 moveq r9, #0/* no relocation. relocation offset(r9) = 0 */ beq relocate_done /* skip relocation */ mov r1, r6 /* r1 <- scratch for copy_loop */ ldr r3, _image_copy_end_ofs add r2, r0, r3 /* r2 <- source end address */copy_loop: ldmia r0!, {r9-r10}/* copy from source address [r0] */ stmia r1!, {r9-r10}/* copy to target address [r1] */ cmp r0, r2 /* until source end address [r2] */ blo copy_loop 詳情參考第四章,第3節(jié)。 uboot中,如何判斷此次開機(jī)是從斷電狀態(tài)開機(jī)還是從休眠狀態(tài)啟動的? board/samsung/fs4412/lowlevel_init.S 代碼如下: 41 lowlevel_init: 54 /* AFTR wakeup reset */ 55 ldr r2, =S5P_CHECK_DIDLE 56 cmp r1, r2 57 beq exit_wakeup 58 59 /* LPA wakeup reset */ 60 ldr r2, =S5P_CHECK_LPA 61 cmp r1, r2 62 beq exit_wakeup 63 64 /* Sleep wakeup reset */ 65 ldr r2, =S5P_CHECK_SLEEP 66 cmp r1, r2 67 beq wakeup_reset 112 wakeup_reset: 113 bl system_clock_init 114 bl mem_ctrl_asm_init 115 bl tzpc_init 116 117 exit_wakeup: 118 /* Load return address and jump to kernel */ 4. 啟動代碼詳細(xì)分析
第一階段:
第二階段
上一篇:13. 從0學(xué)ARM-Cortex-A9 RTC裸機(jī)程序編寫
下一篇:15. 從0開始學(xué)ARM-位置無關(guān)碼
推薦閱讀
史海拾趣
DIALIGHT在全球范圍內(nèi)不斷拓展業(yè)務(wù),目前在美國、英國、丹麥、德國、馬來西亞、新加坡、澳大利亞、墨西哥和巴西等地設(shè)有業(yè)務(wù)。公司的LED產(chǎn)品廣泛應(yīng)用于各種工業(yè)場所,包括石油和天然氣、礦業(yè)、化工、制造業(yè)等。通過提供定制化的照明解決方案,DIALIGHT贏得了眾多客戶的信賴和好評。
Advanced Detector Corp公司成立于上世紀(jì)80年代,由一群熱衷于探測器技術(shù)研發(fā)的科學(xué)家和工程師創(chuàng)立。在創(chuàng)立初期,ADC便專注于開發(fā)高精度、高靈敏度的探測器技術(shù),以滿足當(dāng)時日益增長的電子測量需求。公司通過持續(xù)的技術(shù)創(chuàng)新,逐漸在探測器領(lǐng)域取得了突破性的進(jìn)展,并成功推出了一系列具有競爭力的產(chǎn)品。
在快速發(fā)展的同時,EPI也注重環(huán)保和可持續(xù)發(fā)展。公司積極采用環(huán)保材料和綠色生產(chǎn)工藝,降低生產(chǎn)過程中的能耗和排放。此外,EPI還積極參與環(huán)保公益活動,推動電子行業(yè)的綠色發(fā)展。這些舉措不僅體現(xiàn)了公司的社會責(zé)任感,也為公司的長期發(fā)展奠定了堅實(shí)的基礎(chǔ)。
請注意,以上故事均為虛構(gòu),旨在為您提供關(guān)于Electron Products Inc公司發(fā)展起來的可能故事。如有需要,請參考公司官方發(fā)布的信息或相關(guān)新聞報道。
隨著技術(shù)的不斷成熟和產(chǎn)品的不斷完善,Antelec公司開始積極尋求市場拓展。公司通過與國內(nèi)外知名企業(yè)和研究機(jī)構(gòu)建立合作關(guān)系,將產(chǎn)品成功應(yīng)用于多個領(lǐng)域,如通信、半導(dǎo)體制造和航空航天等。同時,公司還積極參加各類行業(yè)展會和論壇,加強(qiáng)了與行業(yè)內(nèi)外的交流與合作。
Abbotec Incorporated公司自成立以來,一直致力于電子技術(shù)的研發(fā)與創(chuàng)新。在某一年,公司研發(fā)團(tuán)隊(duì)成功開發(fā)出一款具有劃時代意義的芯片,這款芯片在性能上大幅提升,同時降低了能耗。這一技術(shù)突破迅速引起了業(yè)界的關(guān)注,Abbotec因此獲得了大量的訂單,公司規(guī)模迅速擴(kuò)大。
Abbotec Incorporated公司自成立以來,一直致力于電子技術(shù)的研發(fā)與創(chuàng)新。在某一年,公司研發(fā)團(tuán)隊(duì)成功開發(fā)出一款具有劃時代意義的芯片,這款芯片在性能上大幅提升,同時降低了能耗。這一技術(shù)突破迅速引起了業(yè)界的關(guān)注,Abbotec因此獲得了大量的訂單,公司規(guī)模迅速擴(kuò)大。
AKA嵌入式應(yīng)用技術(shù)免費(fèi)講座--FPGA專題 AKA嵌入式應(yīng)用技術(shù)免費(fèi)講座--FPGA專題 講座主辦:AKA信息技術(shù)小組 技術(shù)支持:Red Logic工作室 一.講座簡介 近幾年, 隨著FPGA技術(shù)的發(fā)展與成熟, FPGA以其“靈活的可編程技術(shù)”及越來越高的性價比倍受電子產(chǎn)品企業(yè)的關(guān)注,越來越多的嵌入式產(chǎn) ...… 查看全部問答∨ |
|
關(guān)于單片機(jī)主程序中while(1)循環(huán)的作用的驗(yàn)證 起因:最近在學(xué)習(xí)proteus,在最開始編寫仿真實(shí)例的源程序文件時,為了省事,就沒有在主程序中加入while(1)這個無限循環(huán)(或者成為死循環(huán))。但是在進(jìn)行仿真延時的時候,無意間發(fā)現(xiàn)程序走到最后并不會停下來,而是會去干一些別的沒有讓它做的事情。 ...… 查看全部問答∨ |
今天在看一個datasheet of DCDC BUCK過程中,看到反饋端到Vout有一個Cfwd,不知道是做什么用的?請教各位 是不常么?… 查看全部問答∨ |
我在一個對話框上加上一個Date Time Picker后怎么對話框就不能初始化了,用DialogBox之后每一點(diǎn)反應(yīng),去掉這個控件之后就可以了,請大俠們幫我分析下。小弟在此先謝了?。 ? 查看全部問答∨ |
其中環(huán)境要求是nasm 0.99 assemble,我在網(wǎng)上沒找到這個版本的程序. 如果用高點(diǎn)的版本的話就出現(xiàn)namke fatal error U1045, no error; 如果用nasm 0.98編譯就出現(xiàn)fatal error u1077:\'nasm.exe\';return code \'0x1\'. 有誰知道嗎? 也可以有相關(guān) ...… 查看全部問答∨ |
請教各位關(guān)于驅(qū)動中的SLEEP函數(shù) 各位同志: 我的觸摸屏驅(qū)動中有個采電壓的函數(shù),這個函數(shù)通過讀AC97取得電壓量 其中有一段小的延時程序: do &n ...… 查看全部問答∨ |
我想問一下可以用什么芯片替代TLC14、AD623、ADP1111 我在杭州買不到TLC14、AD623、ADP1111這幾個芯片,所以想問一下各位那些常用的芯片可以替代上面幾個芯片。我初學(xué)電子方面的內(nèi)容,對各個芯片不太熟悉,望各位指點(diǎn),謝謝?。。。 ? 查看全部問答∨ |
我的是IAR MSP430 最新板,并成功破解,破解之后,發(fā)現(xiàn)我的debug菜單總是灰的,無論你怎么選擇,怎么編譯就是灰色,請路過大俠,高手們支招我怎么才能讓C-Spy好用?!? 查看全部問答∨ |
那個有16K版本的license 發(fā)我份 現(xiàn)在官方那個申請不到了, 或者那個告訴我一個解決方法啊 怎么用Cosmic 啊 4K的太小了… 查看全部問答∨ |
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 保障工業(yè)核心命脈:深度解讀工業(yè)交換機(jī)QoS的“智能流量治理”之道
- WAIC 直擊|Arm 鄒挺:突破基礎(chǔ)設(shè)施、數(shù)據(jù)安全與人才三重挑戰(zhàn),釋放 AI 發(fā)展新潛能
- 鎧俠第九代 BiCS FLASH? 512Gb TLC 存儲器開始送樣
- 基于PPEC32系列芯片的10kW純正弦波車載逆變器應(yīng)用方案
- 新唐科技推出全新KM1M4BF6x系列單電機(jī)控制MCU
- 伺服電機(jī)中的回原點(diǎn)方式
- 芯科集成CX3288系列車規(guī)MCU在旋轉(zhuǎn)變壓器的應(yīng)用
- AI玩具DC-DC芯片,安全與成本雙突圍
- 訂單暴增800%!消費(fèi)芯片新風(fēng)口:東北裝空調(diào)
- 機(jī)器人也能純視覺控制?MIT華人博士團(tuán)隊(duì)登上Nature主刊
- 【六一兒童節(jié)】說說你童年的夢想!
- 有獎直播 | 微軟 Azure Sphere助力穩(wěn)定,安全和靈活的物聯(lián)網(wǎng)解決方案
- TE專題:可靠連接解決方案大集合
- ams圣誕禮物大作戰(zhàn):掃碼、關(guān)注、玩游戲、贏禮!
- ADI 全新技術(shù)資料集錦
- Digi-Key KOL視頻來襲~資深算法工程師暢聊圖像處理秘訣
- 有獎直播|貝能國際推出基于英飛凌技術(shù)的毫米波雷達(dá)模組,完美解決PIR市場痛點(diǎn)
- 免費(fèi)申請|ATmega4809 Curiosity Nano
- 下載嘍:PCIe要了解的10件事和識別協(xié)議的BSX系列BERTScope誤碼率測試儀技術(shù)資料
- 反恐機(jī)器人轉(zhuǎn)崗排爆機(jī)器人
- “新基建”對機(jī)器人行業(yè)帶來的影響
- 工業(yè)機(jī)器人如何助力智能制造?
- AI機(jī)器人幫助兒童改善治療過程中的心理健康
- 驅(qū)動工業(yè)機(jī)器人系統(tǒng)集成市場規(guī)??焖僭鲩L的因素是什么?
- 均勝電子智能座艙 搭上福特首款純電SUV野馬Mach-E
- 新能源動力電池領(lǐng)域布局特點(diǎn)分析
- 歐司朗推出新一代LiDAR紅外激光器
- 研究人員研發(fā)改進(jìn)版熔融鹽鐵氧電池 可增加電動汽車?yán)m(xù)航里程
- 研究人員開發(fā)微型光學(xué)陀螺儀 可在無GPS信號時幫助自動駕駛汽車導(dǎo)航