1、STM32 啟動文件與 .sct 文件分析
1) 定義STACK段,{NOINIT,讀寫}:分配一段內(nèi)存大小為0.5K;
2) 定義HEAP段, {NOINIT,讀寫}:分配一段內(nèi)存大小為1K;
3) 定義RESET段,{DATA,只讀}:DCD各種中斷向量;
4) 定義|.text|段,{CODE,只讀}:Reset_Handler函數(shù),函數(shù)中最后加載了__main;
對剩余的中斷函數(shù)進(jìn)行了弱定義;
在最后還有一段用戶初始化堆棧的代碼__user_initial_stackheap。
那這些代碼都存放在什么位置呢?
5) 分析 .sct 文件:
分散加載文件(即scatter file,后綴為.scf)。
分散加載文件是一個(gè)文本文件,通過編寫一個(gè)分散加載文件來指定ARM連接器在生成映像文件時(shí)如何分配RO,RW,ZI等數(shù)據(jù)的存放地址。
如果不用SCATTER文件指定,那么ARM連接器會按照默認(rèn)的方式來生成映像文件,一般情況下我們是不需要使用分散加載文件的。
但在某些場合,我們希望把某些數(shù)據(jù)放在指定的地址處,那么這時(shí)候SCATTER文件就發(fā)揮了非常大的作用。
而且SCATTER文件用起來非常簡單好用。
舉個(gè)例子:
比如像LPC2378芯片具有多個(gè)不連續(xù)的SRAM,通用的RAM是32KB,可是32KB不夠用,我想把某個(gè).C中的RW數(shù)據(jù)放在USB的SRAM中,那么就可以通過SCATTER文件來完成這個(gè)功能。
LR_IROM1 0x08000000 0x00080000 { ; load region size_region
ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00010000 { ; RW data
.ANY (+RW +ZI)
}
}
STACK段和HEAP段是RW屬性,存在RAM(0x20000000-0x20010000)中,具體的地址由編譯器在后面鏈接時(shí)決定,并不是一定存在RAM的開頭地址。
RESET段存在FLASH(0x08000000-0x08080000)中,而且是FLASH的最開頭,再結(jié)合CORTEX-M3的特性,其上電后根據(jù)啟動引腳來決定PC位置,比如啟動設(shè)置為FLASH啟動,則啟動后PC跳到0x08000000。
此時(shí)CPU會先取2個(gè)地址(硬件決定),第一個(gè)是棧頂?shù)刂?,第二個(gè)是復(fù)位異常地址,這樣就跳到Reset_Handler,Reset_Handler執(zhí)行到將最后跳轉(zhuǎn)到?庫的__main。
|.text |段是CODE屬性,也存在FLASH區(qū)。
啟動代碼所做的工作如下:
先是建立了堆棧,之后上電后尋找到中斷向量表中的復(fù)位函數(shù)Reset_Handler執(zhí)行,之后跳轉(zhuǎn)到__main執(zhí)行?庫函數(shù),最后由__main調(diào)用main()函數(shù),進(jìn)入C的世界。
2、__user_initial_stackheap
這段代碼位于裸機(jī)啟動文件的末尾:
IF :DEF:__MICROLIB
EXPORT __initial_sp
EXPORT __heap_base
EXPORT __heap_limit
ELSE
IMPORT __use_two_region_memory
EXPORT __user_initial_stackheap
__user_initial_stackheap
LDR R0, = Heap_Mem
LDR R1, =(Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
BX LR
若是使用了microlib,則只需要將__initial_sp,__ heap_base的,__ heap_limit三個(gè)變量定義成全局變量即可(這三個(gè)變量也是固定的可被?庫引用,在庫中需要使用到這三個(gè)變量對堆棧進(jìn)行初始化);
否則,就需要自己定義__user_initial_stackheap。
microlib缺省的情況下使用的是Keil C庫。
但是事實(shí)上,μVision庫里包含了更多__user_initial_stackheap()的函數(shù)體,這樣編譯器可以根據(jù)開發(fā)人員scatter文件的內(nèi)容自動選擇合適的函數(shù)體。
換句話說,針對RVCT v3.x及之后的版本,使用scatter文件的開發(fā)人員可以不再重新實(shí)現(xiàn)__user_initial_stackheap()的函數(shù)體。
也就是說不必再自己寫了__user_initial_stackheap,自己在做實(shí)驗(yàn)驗(yàn)證時(shí),沒有使用microlib庫,同時(shí)也將這部分函數(shù)注釋掉,并沒有產(chǎn)生任何異常。
所以對__user_initial_stackheap在這里就不再做更多深入的研究了,這一部分太燒腦了,就當(dāng)作C庫已經(jīng)為我們準(zhǔn)備好了這個(gè)函數(shù)。
3、堆棧的單區(qū)模型和雙區(qū)模型
堆棧分為單區(qū)模型和雙區(qū)模型:
單區(qū)模型堆和棧在同一存儲器區(qū)中互相朝向?qū)Ψ皆鲩L
雙區(qū)模型將堆和棧分別放置在存儲器不同的區(qū)中,__ user_initial_stackheap()建立的專用堆限制來檢查堆,需要設(shè)置堆棧的長度。
1)選擇使用單區(qū)模型,在SCT文件中定義一個(gè)特殊的執(zhí)行域,使用符號:
ARM_LIB_STACKHEAP,并使用EMPTY屬性這樣庫管理器就選擇了一個(gè)把這個(gè)域當(dāng)作堆和棧合并在一起的__user_initial_stackheap()函數(shù)。
在這個(gè)函數(shù)中使用了“Image$ $ ARM_LIB_STACKHEAP$ $Base”和“Image$ $ARM_LIB_STACKHEAP$ $ZI$ $Limit”符號。
2)選擇使用雙區(qū)模型,在sct文件中定義兩個(gè)特殊的執(zhí)行域,使用符號:
ARM_LIB_STACK和ARM_LIB_HEAP,都要使用EMPTY屬性。這樣庫管理器就會選擇使用符號:“Image$ $ARM_LIB_HEAP$ $Base” ,“Image$ $ARM_LIB_STACK$ $ZI$ $ limit”,“Image$ $ARM_LIB_STACK$ $Base”,“Image$ $ARM_LIB_STACK$ $ZI$ $Limit”的__user_initial_stackheap()函數(shù)。
從裸機(jī)的啟動文件可以看出,裸機(jī)使用的是雙區(qū)模型。
4、Huawei_LiteOS 啟動文件與 sct 文件
啟動文件:
LOS_Heap_Min_Size EQU 0x400
AREA LOS_HEAP, NOINIT, READWRITE, ALIGN=3
__los_heap_base
LOS_Heap_Mem SPACE LOS_Heap_Min_Size
AREA LOS_HEAP_INFO, DATA, READONLY, ALIGN=2
IMPORT |Image$$ARM_LIB_STACKHEAP$$ZI$$Base|
EXPORT __LOS_HEAP_ADDR_START__
EXPORT __LOS_HEAP_ADDR_END__
__LOS_HEAP_ADDR_START__
DCD __los_heap_base
__LOS_HEAP_ADDR_END__
DCD |Image$$ARM_LIB_STACKHEAP$$ZI$$Base| - 1
PRESERVE8
AREA RESET, CODE, READONLY
THUMB
IMPORT ||Image$$ARM_LIB_STACKHEAP$$ZI$$Limit||
IMPORT osPendSV
EXPORT _BootVectors
EXPORT Reset_Handler
_BootVectors
DCD ||Image$$ARM_LIB_STACKHEAP$$ZI$$Limit||
DCD Reset_Handler
Reset_Handler
IMPORT SystemInit
IMPORT __main
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ALIGN
END
定義LOS_HEAP段,{NOINIT,讀寫}:分配一段內(nèi)存大小為1K;
定義LOS_HEAP_INFO段,{DATA,只讀}:定義__LOS_HEAP_ADDR_START__和__LOS_HEAP_ADDR_END__這兩個(gè)全局變量供OS使用;
定義RESET段,{CODE,只讀}:啟動向量,第一個(gè)是棧頂?shù)刂?,第二個(gè)是Reset_Handler;將Reset_Handler主體也寫入了RESET段;
首先,可以看出,分配堆棧的方式與裸機(jī)不同,使用的是單區(qū)模型,從下向上排列
__LOS_HEAP_ADDR_START __ = __ los_heap_base,為堆低地址;
__LOS_HEAP_ADDR_END __ = |Image$ $ARM_LIB_STACKHEAP$ $ZI$ $Base | - 1,為堆頂(不確定的地址);
|Image$ $ARM_LIB_STACKHEAP$ $ZI$ $Base|,為棧底(不確定的地址);
|Image$ $ARM_LIB_STACKHEAP$ $ZI$ $Limit|,為棧頂?shù)刂?
所以,由上文可知,在sct文件中必然會出現(xiàn)ARM_LIB_STACKHEAP這個(gè)執(zhí)行域:
LR_IROM1 0x08000000 0x00020000 { ; load region size_region
ER_IROM1 0x08000000 0x00020000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
* (LOS_HEAP_INFO)
}
VECTOR 0x20000000 0x400 { ; Vector
* (.data.vector)
}
RW_IRAM1 0x20000400 0x00004800 { ; RW data
;.ANY (+RW +ZI)
* (.data, .bss)
* (LOS_HEAP)
}
ARM_LIB_STACKHEAP 0x20004C00 EMPTY 0x400 { ;LiteOS MSP
}
}
那么其他的異常中斷向量入口在哪里呢?定義在los_hwi.c文件中被定義成了數(shù)組的形式:
#ifdef __ICCARM__
#pragma location = ".data.vector"
#elif defined (__CC_ARM) || defined (__GNUC__)
LITE_OS_SEC_VEC
#endif
HWI_PROC_FUNC m_pstHwiForm[OS_VECTOR_CNT] =
{
(HWI_PROC_FUNC)0, // [0] Top of Stack
(HWI_PROC_FUNC)Reset_Handler, // [1] reset
(HWI_PROC_FUNC)osHwiDefaultHandler, // [2] NMI Handler
(HWI_PROC_FUNC)osHwiDefaultHandler, // [3] Hard Fault Handler
(HWI_PROC_FUNC)osHwiDefaultHandler, // [4] MPU Fault Handler
(HWI_PROC_FUNC)osHwiDefaultHandler, // [5] Bus Fault Handler
(HWI_PROC_FUNC)osHwiDefaultHandler, // [6] Usage Fault Handler
(HWI_PROC_FUNC)0, // [7] Reserved
(HWI_PROC_FUNC)0, // [8] Reserved
(HWI_PROC_FUNC)0, // [9] Reserved
(HWI_PROC_FUNC)0, // [10] Reserved
(HWI_PROC_FUNC)osHwiDefaultHandler, // [11] SVCall Handler
(HWI_PROC_FUNC)osHwiDefaultHandler, // [12] Debug Monitor Handler
(HWI_PROC_FUNC)0, // [13] Reserved
(HWI_PROC_FUNC)osPendSV, // [14] PendSV Handler
(HWI_PROC_FUNC)osHwiDefaultHandler, // [15] SysTick Handler
};
這一部分代碼被分散加載文件加載到了VECTOR段,位于RAM的開頭部分。
在內(nèi)核初始化時(shí)會進(jìn)行中斷向量表重映射的工作。
上一篇:STM32 啟動代碼 __main 與用戶主程序 main() 的區(qū)別
下一篇:STM32Fxxx 上移植 Huawei LiteOS
推薦閱讀
史海拾趣
Amphenol Aerospace 是一家在電子行業(yè)中知名的公司,專注于設(shè)計(jì)、制造和銷售航空航天領(lǐng)域的連接器和電纜組件。以下是關(guān)于 Amphenol Aerospace 公司發(fā)展的五個(gè)相關(guān)故事:
創(chuàng)立與早期發(fā)展:Amphenol Aerospace 公司的歷史可以追溯到1932年,當(dāng)時(shí)在美國新澤西州的Linden市成立了Amphenol公司。最初,該公司主要致力于生產(chǎn)無線電連接器和電纜組件。隨著航空航天行業(yè)的發(fā)展和壯大,Amphenol Aerospace 公司開始專注于航空航天領(lǐng)域,成為該行業(yè)的關(guān)鍵供應(yīng)商之一。
技術(shù)創(chuàng)新與產(chǎn)品多樣化:Amphenol Aerospace 公司不斷進(jìn)行技術(shù)創(chuàng)新,推出了一系列先進(jìn)的連接器和電纜組件產(chǎn)品。這些產(chǎn)品具有高可靠性、高耐用性和優(yōu)良的性能特點(diǎn),廣泛應(yīng)用于航空航天領(lǐng)域的飛機(jī)、衛(wèi)星、導(dǎo)彈、航天器等設(shè)備中。Amphenol Aerospace 公司的產(chǎn)品包括圓形連接器、矩形連接器、光纖連接器等,滿足了不同客戶的需求。
客戶合作與定制化解決方案:Amphenol Aerospace 公司與航空航天領(lǐng)域的客戶建立了緊密的合作關(guān)系,共同開發(fā)定制化的連接器和電纜組件解決方案。公司的工程團(tuán)隊(duì)與客戶密切合作,根據(jù)客戶的需求和規(guī)格要求,設(shè)計(jì)和制造符合特定應(yīng)用要求的產(chǎn)品。這種定制化解決方案為客戶提供了更加個(gè)性化和專業(yè)化的服務(wù)。
質(zhì)量控制與認(rèn)證標(biāo)準(zhǔn):Amphenol Aerospace 公司注重產(chǎn)品質(zhì)量控制,并嚴(yán)格遵循行業(yè)標(biāo)準(zhǔn)和認(rèn)證要求。公司的生產(chǎn)工藝和質(zhì)量管理體系符合ISO 9001質(zhì)量管理體系認(rèn)證標(biāo)準(zhǔn),以確保產(chǎn)品質(zhì)量穩(wěn)定可靠。此外,Amphenol Aerospace 公司的產(chǎn)品還通過了航空航天領(lǐng)域的相關(guān)認(rèn)證,如AS9100質(zhì)量管理體系認(rèn)證等,確保產(chǎn)品符合行業(yè)標(biāo)準(zhǔn)和規(guī)定。
全球布局與市場拓展:除了在美國的生產(chǎn)基地外,Amphenol Aerospace 公司還在全球范圍內(nèi)設(shè)有多個(gè)生產(chǎn)工廠和銷售辦事處,為客戶提供全面的服務(wù)和支持。公司在歐洲、亞洲和其他地區(qū)建立了廣泛的銷售網(wǎng)絡(luò),拓展了國際市場份額。通過全球布局和市場拓展,Amphenol Aerospace 公司不斷擴(kuò)大業(yè)務(wù)規(guī)模,增強(qiáng)了在航空航天領(lǐng)域的市場競爭力。
這些故事展示了 Amphenol Aerospace 公司從成立初期到如今在技術(shù)創(chuàng)新、產(chǎn)品多樣化、客戶合作與定制化解決方案、質(zhì)量控制與認(rèn)證標(biāo)準(zhǔn)以及全球布局與市場拓展等方面取得的重要進(jìn)展。
ABC Taiwan Electronics Corp成立于上世紀(jì)八十年代,起初只是一個(gè)小型電子零件加工廠。面對激烈的市場競爭和有限的資源,公司創(chuàng)始人憑借對電子技術(shù)的深刻理解和敏銳的市場洞察力,帶領(lǐng)團(tuán)隊(duì)不斷研發(fā)新產(chǎn)品,逐步贏得了客戶的信任。通過不斷積累經(jīng)驗(yàn)和擴(kuò)大規(guī)模,ABC逐漸在電子零件加工領(lǐng)域站穩(wěn)了腳跟。
在被VIA收購后的一段時(shí)間里,Cyrix繼續(xù)尋求市場擴(kuò)張的機(jī)會。例如,在1998年,Cyrix與北京大船電子技術(shù)公司簽訂了總代理協(xié)議,以擴(kuò)大其在中國的分銷網(wǎng)絡(luò)。這一策略幫助Cyrix進(jìn)一步打開了中國市場的大門,為其在全球市場的發(fā)展奠定了基礎(chǔ)。
以上五個(gè)故事描繪了Cyrix Corp公司在電子行業(yè)中的發(fā)展歷程。從初創(chuàng)時(shí)期的挑戰(zhàn)英特爾到被多次收購后的市場策略調(diào)整和市場擴(kuò)張嘗試,Cyrix的發(fā)展之路充滿了曲折和變革。
Big-Sun Electronics Co Ltd公司自成立以來,始終致力于技術(shù)研發(fā)和產(chǎn)品創(chuàng)新。在成立初期,公司便投入大量資源于研發(fā)部門,通過不斷試驗(yàn)和改進(jìn),成功研發(fā)出了一款具有高效能、低能耗特點(diǎn)的電子芯片,這一技術(shù)突破迅速在市場上引起了廣泛關(guān)注。隨著產(chǎn)品線的不斷擴(kuò)展,Big-Sun的電子產(chǎn)品逐漸在行業(yè)內(nèi)樹立起了技術(shù)領(lǐng)先的形象。
面對電子行業(yè)的快速變化和市場競爭的加劇,Big-Sun Electronics Co Ltd公司積極實(shí)施多元化戰(zhàn)略。公司不僅繼續(xù)深耕電子芯片領(lǐng)域,還逐步拓展至智能家居、物聯(lián)網(wǎng)等新興領(lǐng)域。通過產(chǎn)業(yè)轉(zhuǎn)型和升級,Big-Sun成功實(shí)現(xiàn)了業(yè)務(wù)的多元化發(fā)展,為公司的可持續(xù)發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
CP Technology Inc成立之初,便專注于半導(dǎo)體技術(shù)的研發(fā)。公司研發(fā)團(tuán)隊(duì)成功開發(fā)出一種高效能、低功耗的芯片,這一創(chuàng)新為公司的快速崛起奠定了基石。隨著技術(shù)的不斷完善和產(chǎn)品的廣泛應(yīng)用,CP Technology Inc逐漸在半導(dǎo)體市場上占據(jù)了一席之地。公司通過持續(xù)的技術(shù)創(chuàng)新和產(chǎn)品迭代,不斷滿足市場需求,贏得了客戶的信賴和支持。
視覺傳感器與光電開關(guān)之比較 1.視覺傳感器可以同時(shí)檢測多個(gè)特征,而光電開關(guān)是不能做到的。 2.視覺傳感器對定位要求比較寬松,光電開關(guān)需要定位準(zhǔn)確。 3.視覺傳感器可以檢測不同類型和多數(shù)量的特征,光電開關(guān)則需要很復(fù)雜的機(jī)械調(diào)整和數(shù)量改變 ...… 查看全部問答∨ |
單片機(jī)讀寫U盤,sd卡,tf卡及usb開發(fā)手冊 1.芯片及模塊手冊資料 2.應(yīng)用電路圖及封裝 3.SPI例程及UART例程 4.其他外圍應(yīng)用電路 5.232、電平轉(zhuǎn)換資料 6.芯片測試文檔 7.U盤支持列表 … 查看全部問答∨ |
看了數(shù)據(jù)資料,也沒有弄明白,VEE,vSS怎么接 電源供電有幾種接法? 我剛開始接了vdd=+5v vss=vee=0 給控制信號開關(guān)不通 又把+5v改成12v還不行 一定要接負(fù)電源嗎 我那沒有負(fù)電源 謝謝了… 查看全部問答∨ |
|
怎么學(xué)計(jì)算機(jī)網(wǎng)絡(luò)原理 學(xué)了一年多現(xiàn)在還是不能掌握計(jì)算機(jī)網(wǎng)絡(luò)的精髓,看了許許多多的視頻教程和書籍可還是沒有那種想要的感覺一點(diǎn)都沒有,幾天不學(xué)習(xí)就會忘的一塌糊涂,沒有知識框架,不知道如何下手,沒有方向,真是郁悶的很,我很喜歡這門課程,我一直都想學(xué)精學(xué)透這門 ...… 查看全部問答∨ |
EVC下編寫dll動態(tài)連接 error LNK2019: unresolved external symbol CoTaskMemAlloc referenced in function \"public: __cdecl 這個(gè)錯(cuò)誤。 但是,CoTaskMemAlloc這個(gè)函數(shù),你右鍵點(diǎn)擊 查看函數(shù)的定義,EVC又能自動定位到   ...… 查看全部問答∨ |
關(guān)于基于SJA1000的can節(jié)點(diǎn)通信 本人做了兩個(gè)基于SJA1000的can節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)在PELI模式下都能實(shí)現(xiàn)自發(fā)自收,但連在總線上時(shí)不能通信。 當(dāng)一個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),查了SR的狀態(tài)標(biāo)志位0x08,一直為1,說明上次的發(fā)送還未處理完,應(yīng)該是沒有收到另外一個(gè)節(jié)點(diǎn)的應(yīng)答信號吧。我查了資料 ...… 查看全部問答∨ |
我的程序中用到CTreeCtrl,調(diào)試單步運(yùn)行到InsertItem()(即使程序是從EVC的幫助文件上COPY下來)語句時(shí)就出現(xiàn)0xC0000005的錯(cuò)誤,直接運(yùn)行的話到相應(yīng)的地方模擬器就死掉了,但是下到板子上時(shí)可以運(yùn)行的,煥一個(gè)其他的SDK也可以,實(shí)在 ...… 查看全部問答∨ |
大家好, 我正在移植13506的wince5.0驅(qū)動到2440平臺上。在640*480的LCd上,顯示正常,但是換成一塊1024*768的屏后,發(fā)現(xiàn)啟動后桌面的圖標(biāo)很模糊,有些不顯示,但是拖動的時(shí)候卻能正常顯示。打開應(yīng)用軟件也正常。 驅(qū)動沒有過多研究,想問一下大家 ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 意法半導(dǎo)體推出用于匹配遠(yuǎn)距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進(jìn)行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- API調(diào)用小記(Touchdesigner和ESP32)
- 關(guān)于ESP32/8266使用async-mqtt-client庫的一些基本介紹
- 特斯拉自動駕駛?cè)蛲茝V遇阻,F(xiàn)SD于瑞典遭遇“封殺”
- Cadence 與三星晶圓代工就 SF2P 等制程達(dá)成新多年期 IP 協(xié)議
- Gartner:到2030年,守護(hù)代理將占據(jù)10%-15%的代理型AI市場份額
- 亞太地區(qū)金融行業(yè)遭受 DDoS 攻擊激增,年增幅高達(dá) 245%
- 2025 EDS 峰會群英匯聚 DigiKey 獲多家供應(yīng)商重磅獎(jiǎng)項(xiàng)
- 安森美亮相北京聽力學(xué)大會,展示智能聽力技術(shù)領(lǐng)導(dǎo)力
- 為AR眼鏡等多種智能可穿戴設(shè)備添加穿戴狀態(tài)檢測功能
- KSC PF輕觸開關(guān)提供灌封友好型解決方案
- 正式發(fā)布本土化戰(zhàn)略,英飛凌猛攻中國市場
- 純視覺的自動駕駛會有哪些安全問題?
- 羅徹斯特電子攜手ISSI,拓展SRAM、DRAM和NOR閃存產(chǎn)品線
- Redmi新機(jī)解密:聯(lián)發(fā)科天璣1000+加持
- iPhone 12不附贈耳機(jī):蘋果要刺激AirPods銷量
- 上海抽查移動電源產(chǎn)品30批次 合格率僅63.3%
- 高通發(fā)布驍龍690:CPU速度提速20%,支持5G、Wi-Fi6
- AMR產(chǎn)業(yè)藍(lán)皮書全球首發(fā),第四代自主移動機(jī)器人登上歷史舞臺
- “黑飛”難禁!大衣哥家遭無人機(jī)航拍直播
- 新松發(fā)布“火弧”機(jī)器人智能焊接系統(tǒng)
- 埃華路機(jī)器人與東方紅衛(wèi)星戰(zhàn)略合作
- 樂清投運(yùn)浙江首個(gè)線路側(cè)定點(diǎn)儲能項(xiàng)目
- 請問串口部分的電路圖有問題嗎?
- 室內(nèi)定位技術(shù),有人研究過么?
- 方向性無線傳輸
- 編碼器使用外部中斷計(jì)算出現(xiàn)了問題,求大神指導(dǎo)。。
- 怎么才能查看自己回復(fù)帖子在幾樓啊?
- 【跟TI學(xué)電源】系列-----高效開關(guān)模式充電器系統(tǒng)設(shè)計(jì)
- 編譯錯(cuò)誤
- Quartus 9.0 編譯modelsim 仿真庫
- 【上海航芯 ACM32F070開發(fā)板+觸控功能評估板測評】移植RT-Thread Nano
- 曾憲梓載人航天基金會成立并頒獎(jiǎng) 楊利偉獲特別貢獻(xiàn)獎(jiǎng)100萬元