當(dāng)前位置:首頁(yè) > 模擬 > 模擬技術(shù)
[導(dǎo)讀]因?yàn)樗墒悄愕某绦蚺艿淖畛跻欢温罚豢梢圆恢?。通過了解啟動(dòng)文件,我們可以體會(huì)到處理器的架構(gòu)、指令集、中斷向量安排等內(nèi)容,是非常值得玩味的。

每一款芯片的啟動(dòng)文件都值得去研究,因?yàn)樗墒悄愕某绦蚺艿淖畛跻欢温罚豢梢圆恢?。通過了解啟動(dòng)文件,我們可以體會(huì)到處理器的架構(gòu)、指令集、中斷向量安排等內(nèi)容,是非常值得玩味的。

STM32作為一款高端 Cortex-M3系列單片機(jī),有必要了解它的啟動(dòng)文件。打好基礎(chǔ),為以后優(yōu)化程序,寫出高質(zhì)量的代碼最準(zhǔn)備。

本文以一個(gè)實(shí)際測(cè)試代碼--START_TEST為例進(jìn)行闡述。

整體過程

STM32整個(gè)啟動(dòng)過程是指從上電開始,一直到運(yùn)行到 main函數(shù)之間的這段過程,步驟為(以使用微庫(kù)為例):

①上電后硬件設(shè)置SP、PC

②設(shè)置系統(tǒng)時(shí)鐘

③軟件設(shè)置SP

④加載.data、.bss,并初始化棧區(qū)

⑤跳轉(zhuǎn)到C文件的main函數(shù)

代碼

啟動(dòng)過程涉及的文件不僅包含 startup_stm32f10x_hd.s,還涉及到了MDK自帶的連接庫(kù)文件 entry.o、entry2.o、entry5.o、entry7.o等(從生成的 map文件可以看出來)。

2 程序在Flash上的存儲(chǔ)結(jié)構(gòu)

在真正講解啟動(dòng)過程之前,先要講解程序下載到 Flash上的結(jié)構(gòu)和程序運(yùn)行時(shí)(執(zhí)行到main函數(shù))時(shí)的SRAM數(shù)據(jù)結(jié)構(gòu)。程序在用戶Flash上的結(jié)構(gòu)如下圖所示。下圖是通過閱讀hex文件和在MDK下調(diào)試綜合提煉出來的。


813e6768-ec67-11ed-90ce-dac502259ad0.jpg

上圖中:

MSP初始值由編譯器生成,是主堆棧的初始值。

初始化數(shù)據(jù)段是.data

未初始化數(shù)據(jù)段是.bss

.data和.bss是在__main里進(jìn)行初始化的,對(duì)于ARM Compiler,__main主要執(zhí)行以下函數(shù):


815c002a-ec67-11ed-90ce-dac502259ad0.png

其中__scatterload會(huì)對(duì).data和.bss進(jìn)行初始化。

加載數(shù)據(jù)段和初始化棧的參數(shù)

加載數(shù)據(jù)段和初始化棧的參數(shù)分別有4個(gè),這里只講解加載數(shù)據(jù)段的參數(shù),至于初始化棧的參數(shù)類似。

后來出現(xiàn)了 Flash 這種可電擦寫的存儲(chǔ)器,并集成在了單片機(jī)內(nèi)部。但出廠的時(shí)候單片機(jī)的程序存儲(chǔ)區(qū)仍然是空白的,沒有任何代碼。用戶編譯程序后,下載到單片機(jī)后才能運(yùn)行。那么在產(chǎn)品發(fā)給用戶后,如果發(fā)現(xiàn)有Bug怎么辦呢?就得用編程器把新代碼重新下載一次。這實(shí)在是有點(diǎn)兒麻煩,特別是如果客戶距離很遠(yuǎn)的話。于是有聰明的程序猿想了一個(gè)辦法,寫一小段特殊的代碼放在程序里,這段代碼可以通過一定方式,比如用按鍵觸發(fā)進(jìn)入運(yùn)行,它可以通過串口(早期的 PC 串口是標(biāo)配)接收新的代碼并寫入Flash,從而在沒有硬件編程器的情況下也能完成代碼的更新。

標(biāo)準(zhǔn)化的零部件模式、HI(Huawei Inside) 模式以及鴻蒙智行模式。(1)零部件模式:車 BU 類似傳統(tǒng)汽車供應(yīng)鏈中的 Tier1, 提供標(biāo)準(zhǔn)化零部件模塊給車廠,包括激光雷達(dá)、毫米波雷達(dá)、攝像頭、電機(jī)電控、 車聯(lián)網(wǎng)模塊等 30 多種標(biāo)準(zhǔn)化部件。(2)HI 模式:提供包括軟硬件的全棧解決方案, 幫助車企充分享受到華為先進(jìn)的智能化技術(shù),相較于零部件模式,HI 模式與車企的 合作程度更加深入,特別是 HI 模式下可以在智能電動(dòng)、智能座艙與智能駕駛等領(lǐng)域 實(shí)現(xiàn)持續(xù)迭代升級(jí)。(3)鴻蒙智行模式:鴻蒙智行則是在 HI 模式的基礎(chǔ)上更進(jìn)一步, 華為全方位介入合作車型的生命周期,發(fā)揮華為消費(fèi)者端累積的經(jīng)驗(yàn),提供技術(shù)和 服務(wù)支持,幫助其提升產(chǎn)品競(jìng)爭(zhēng)力。

從業(yè)務(wù)歸屬和范圍上看,零部件模式和 HI 模式主要由車 BU 為車企提供零部件 與解決方案,華為不參與整車設(shè)計(jì);而鴻蒙智行模式主要?dú)w華為終端 BG 進(jìn)行管理。 具體來說,終端 BG 相關(guān)部門負(fù)責(zé)產(chǎn)品規(guī)劃、整車開發(fā)、工程實(shí)現(xiàn)、品控管理、供 應(yīng)鏈管理、生產(chǎn)制造、渠道銷售、品牌營(yíng)銷到交付售后等各個(gè)環(huán)節(jié),車 BU 的解決 方案部負(fù)責(zé)進(jìn)駐車企。

五大解決方案協(xié)同,為車企提供多樣化配置。華為掌握芯、硬、軟、云等智能 化核心技術(shù),在此基礎(chǔ)上,車 BU 先后推出 MDC 智能駕駛平臺(tái)、激光雷達(dá)、4D 成 像雷達(dá)、AR-HUD、鴻蒙車機(jī) OS、HUAWEI HiCar 人-車-家全場(chǎng)景智慧互聯(lián)、車載 智慧屏、車載充電、DriveONE 電驅(qū)動(dòng)、C-V2X、自動(dòng)駕駛云服務(wù)等一系列創(chuàng)新解決 方案,共形成乾崑 ADS、乾崑車控、乾崑車云、乾崑車載光、鴻蒙座艙等五大解決 方案,涵蓋了智能網(wǎng)聯(lián)電動(dòng)汽車的各個(gè)方面。華為在汽車智能化領(lǐng)域技術(shù)實(shí)力雄厚, 推動(dòng)汽車產(chǎn)業(yè)轉(zhuǎn)型升級(jí)。

1.3、 車企入股引望加深合作,華為有望與更多車企實(shí)現(xiàn)“雙向奔赴”

阿維塔/賽力斯入股引望,開啟華為打造汽車產(chǎn)業(yè)智能化開放平臺(tái)的關(guān)鍵一步。 8 月 20 日,長(zhǎng)安汽車發(fā)布公告,聯(lián)營(yíng)企業(yè)阿維塔擬與華為簽署《股權(quán)轉(zhuǎn)讓協(xié)議》,以 115 億元的價(jià)格購(gòu)買華為持有的旗下智能汽車解決方案新公司引望 10%的股權(quán),并且 阿維塔有權(quán)提名引望董事會(huì) 7 名成員中的 1 名董事。徐直軍表示,阿維塔是華為幫 助車企“造好”車、造“好車”的開創(chuàng)性實(shí)踐。8 月 26 日,賽力斯發(fā)布公告,子公司賽 力斯擬以 115 億元的價(jià)格購(gòu)買華為持有的旗下智能汽車解決方案新公司引望 10%的 股權(quán),成為第二家入股華為引望的車企,并且賽力斯汽車在交割后有權(quán)向引望董事 會(huì)提名一位董事和一位審計(jì)委員會(huì)委員。華為有意將引望打造成汽車產(chǎn)業(yè)智能化開 放平臺(tái),成為汽車智能化部件和解決方案的領(lǐng)導(dǎo)者。阿維塔和賽力斯相繼成為引望 的戰(zhàn)略投資者后,引望還將繼續(xù)對(duì)戰(zhàn)略合作伙伴開放股權(quán),華為將繼續(xù)全方位支持 引望打造領(lǐng)先的產(chǎn)品和技術(shù),攜手共同推動(dòng)汽車產(chǎn)業(yè)崛起和智能化全面發(fā)展。

人員、技術(shù)和資產(chǎn)所有權(quán)即將裝載,引望獨(dú)立運(yùn)作在即。徐直軍稱,2024 年底 希望把所有資產(chǎn)、人員裝載到引望,實(shí)現(xiàn)引望獨(dú)立運(yùn)作。根據(jù)賽力斯公告,華為技 術(shù)和目標(biāo)公司將在受讓方支付第一筆交易價(jià)款前簽署裝載協(xié)議。知識(shí)產(chǎn)權(quán)方面,采 用轉(zhuǎn)讓與許可相結(jié)合的模式進(jìn)行裝載,截至 2024 年 7 月 31 日,華為擬轉(zhuǎn)讓專利及 專利申請(qǐng)共計(jì) 6838 項(xiàng),擬許可專利包括裝載業(yè)務(wù)需要使用的其他專利;擬轉(zhuǎn)讓及擬 許可技術(shù)包含裝載業(yè)務(wù)相關(guān)軟件、代碼、文檔和數(shù)據(jù)等技術(shù)資產(chǎn);擬轉(zhuǎn)讓商標(biāo)及商 標(biāo)申請(qǐng)共計(jì) 1603 項(xiàng),擬許可商標(biāo)及商標(biāo)申請(qǐng)共計(jì) 1600 項(xiàng)。人員方面,華為技術(shù)及 其關(guān)聯(lián)方從事裝載業(yè)務(wù)并且用工關(guān)系將轉(zhuǎn)移至目標(biāo)公司的員工將不少于 5500 人。華 為在之前的發(fā)展中已與長(zhǎng)安汽車、賽力斯、奇瑞、北汽、江淮、東風(fēng)、一汽等車企 展開深度合作,合作朋友圈持續(xù)擴(kuò)大,而引望已經(jīng)引入了第一批包括阿維塔和賽力 斯在內(nèi)的兩家車企的投資,第二批車企投資尚在接觸中。

程序猿們也是現(xiàn)代歷史前進(jìn)的重要推動(dòng)力啊!

后來,有芯片廠商把這種代碼在出廠時(shí)就固化在芯片里,極大的方便了代碼下載和程序更新。STM32F030內(nèi)部就固化了Bootloader。當(dāng)我們把一個(gè)引腳 BOOT0 拉高的同時(shí),重新給芯片上電或復(fù)位,就會(huì)觸發(fā)Boootloader進(jìn)入運(yùn)行。此時(shí)我們通過單片機(jī)的串口就可以把新程序發(fā)送給單片機(jī),發(fā)送完后把 BOOT0 拉低,再?gòu)?fù)位單片機(jī),新程序就會(huì)運(yùn)行起來。

Startup Code 可以譯為啟動(dòng)代碼。單片機(jī)上電或復(fù)位后最先執(zhí)行的一段代碼。一般主要會(huì)完成堆棧指針的設(shè)置,復(fù)位向量的獲取和加載,然后初始化變量,最后跳轉(zhuǎn)到用戶代碼。在詳細(xì)看啟動(dòng)代碼之前,我們先看一下 STM32F030 的內(nèi)存映射。

?STM32的啟動(dòng)過程?主要包括以下幾個(gè)關(guān)鍵步驟:

?初始化堆棧指針和程序計(jì)數(shù)器?:當(dāng)STM32芯片上電或復(fù)位時(shí),處理器會(huì)從特定的內(nèi)存地址(通常是0x00000000)獲取堆棧指針(MSP)的初始值,并將其加載到堆棧指針寄存器(SP)中。同時(shí),處理器從0x00000004地址獲取程序計(jì)數(shù)器(PC)的初始值,指向復(fù)位處理程序(Reset_Handler)的入口地址?12。

?復(fù)位處理程序?:復(fù)位處理程序(Reset_Handler)是啟動(dòng)代碼中的關(guān)鍵部分,負(fù)責(zé)初始化系統(tǒng)時(shí)鐘、配置外設(shè)、設(shè)置中斷相關(guān)參數(shù)等操作。完成這些初始化后,復(fù)位處理程序會(huì)跳轉(zhuǎn)到用戶定義的啟動(dòng)代碼或主函數(shù)(main)?13。

?啟動(dòng)模式?:STM32支持三種啟動(dòng)模式:

?主閃存存儲(chǔ)器啟動(dòng)?:這是最常見的啟動(dòng)模式。處理器從內(nèi)置的Flash啟動(dòng),通常用于通過JTAG或SWD模式下載程序。

?系統(tǒng)存儲(chǔ)器啟動(dòng)?:用于通過外部接口(如UART、CAN或USB)下載和更新程序。系統(tǒng)存儲(chǔ)器中包含一個(gè)出廠預(yù)置的ISP(In-System Programming)代碼,用于橋接外部代碼到內(nèi)置Flash。

?內(nèi)置SRAM啟動(dòng)?:用于調(diào)試和修復(fù)固件,但SRAM中的代碼在掉電后會(huì)丟失?14。

?內(nèi)存映射?:不同的啟動(dòng)模式會(huì)將不同的內(nèi)存區(qū)域映射到0x00000000地址。例如,在主Flash啟動(dòng)模式下,內(nèi)置Flash的起始地址(0x08000000)會(huì)被重映射到0x00000000地址?12。

通過這些步驟,STM32芯片能夠從特定的存儲(chǔ)介質(zhì)中加載和執(zhí)行程序,完成初始化操作后進(jìn)入用戶代碼的執(zhí)行環(huán)境。

收起分享

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉