女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32的完整啟動(dòng)流程分析

jf_pJlTbmA9 ? 來(lái)源:嵌入式電子 ? 作者:嵌入式電子 ? 2023-10-25 16:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關(guān)于STM32的啟動(dòng)流程,網(wǎng)上有的資料在討論幾種boot模式,有的在回答啟動(dòng)文件的內(nèi)容,在查閱了很多資料后,本文給出一個(gè)比較全面的總結(jié)和回答。

1. 根據(jù)boot引腳決定三種啟動(dòng)模式

1.png

復(fù)位后,在 SYSCLK 的第四個(gè)上升沿鎖存 BOOT 引腳的值。BOOT0 為專(zhuān)用引腳,而 BOOT1 則與 GPIO 引腳共用。一旦完成對(duì) BOOT1 的采樣,相應(yīng) GPIO 引腳即進(jìn)入空閑狀態(tài),可用于其它用途。BOOT0與BOOT1引腳的不同值指向了三種啟動(dòng)方式:

1)從主Flash啟動(dòng)。主Flash指的是STM32的內(nèi)置Flash。選擇該啟動(dòng)模式后,內(nèi)置Flash的起始地址將被重映射到0x00000000地址,代碼將在該處開(kāi)始執(zhí)行。一般我們使用JTAG或者SWD模式下載調(diào)試程序時(shí),就是下載到這里面,重啟后也直接從這啟動(dòng)。

2從系統(tǒng)存儲(chǔ)器啟動(dòng)。系統(tǒng)儲(chǔ)存器指的是STM32的內(nèi)置ROM,選擇該啟動(dòng)模式后,內(nèi)置ROM的起始地址將被重映射到0x00000000地址,代碼在此處開(kāi)始運(yùn)行。ROM中有一段出廠預(yù)置的代碼,這段代碼起到一個(gè)橋的作用,允許外部通過(guò)UART/CANUSB等將代碼寫(xiě)入STM32的內(nèi)置Flash中。這段代碼也被稱為ISP(In System Programing)代碼,這種燒錄代碼的方式也被稱為ISP燒錄。關(guān)于ISP、ICP和IAP之間的區(qū)別將在后續(xù)章節(jié)中介紹。

3嵌入式SRAM中啟動(dòng)。顯然,該方法是在STM32的內(nèi)置SRAM中啟動(dòng),選擇該啟動(dòng)模式后,內(nèi)置SRAM的起始地址將被重映射到0x00000000地址,代碼在此處開(kāi)始運(yùn)行。這種模式由于燒錄程序過(guò)程中不需要擦寫(xiě)Flash,因此速度較快,適合調(diào)試,但是掉電丟失。

總結(jié):上面的每一種啟動(dòng)方式我都描述了“xxx的起始地址被重映射到了0x00000000地址,從而代碼從xxx開(kāi)始啟動(dòng)”,如下圖是STM32F4xx中文參考手冊(cè)中的圖,可以看到類(lèi)似的表述。同時(shí),在下圖中也展示了STM32F4xx中統(tǒng)一編址下,各內(nèi)存的地址分配,注意一點(diǎn),即使相應(yīng)的內(nèi)存被映射到了0x00000000起始的地址,通過(guò)其原來(lái)地址依然是可以訪問(wèn)的。

2.png

2. 啟動(dòng)后bootloader做了什么?

根據(jù)BOOT引腳確定了啟動(dòng)方式后,處理器進(jìn)行的第二大步就是開(kāi)始從0x00000000地址處開(kāi)始執(zhí)行代碼,而該處存放的代碼正是bootloader。

bootloader,也可以叫啟動(dòng)文件,無(wú)論性能高下,結(jié)構(gòu)簡(jiǎn)繁,價(jià)格貴賤,每一種微控制器(處理器)都必須有啟動(dòng)文件,啟動(dòng)文件的作用便是負(fù)責(zé)執(zhí)行微控制器從“復(fù)位”到“開(kāi)始執(zhí)行main函數(shù)”中間這段時(shí)間(稱為啟動(dòng)過(guò)程)所必須進(jìn)行的工作。最為常見(jiàn)的51,AVR或MSP430等微控制器當(dāng)然也有對(duì)應(yīng)啟動(dòng)文件,但開(kāi)發(fā)環(huán)境往往自動(dòng)完整地提供了這個(gè)啟動(dòng)文件,不需要開(kāi)發(fā)人員再行干預(yù)啟動(dòng)過(guò)程,只需要從main函數(shù)開(kāi)始進(jìn)行應(yīng)用程序的設(shè)計(jì)即可。同樣,STM32微控制器,無(wú)論是keiluvision4還是IAR EWARM開(kāi)發(fā)環(huán)境,ST公司都提供了現(xiàn)成的直接可用的啟動(dòng)文件。

網(wǎng)上有很多資料分析了STM32的啟動(dòng)文件的內(nèi)容,在此我只進(jìn)行簡(jiǎn)單的表述。啟動(dòng)文件中首先會(huì)定義堆棧,定義中斷/異常向量表,而其中只實(shí)現(xiàn)了復(fù)位的異常處理函數(shù)Reset_Handler,該函數(shù)內(nèi)容如下(STM32F4XX,IAR編譯器),可以看到其主要執(zhí)行了SystemInit和__iar_program_start兩個(gè)函數(shù),其主要功能除了初始化時(shí)鐘,F(xiàn)PU等,還會(huì)執(zhí)行一個(gè)重要功能,那就是內(nèi)存的搬移、初始化操作。這是我想重點(diǎn)介紹的內(nèi)容,同時(shí)也會(huì)回答一個(gè)疑問(wèn),就是如果從Flash啟動(dòng)的話,代碼究竟是運(yùn)行在哪兒的?在我之前接觸ARM9、CortexA系列的時(shí)候,一般都是把代碼搬到內(nèi)部的SRAM或者外部DDR中執(zhí)行的,STM32是如何呢?答案下一小節(jié)揭曉。

3.png

3. bootloader中對(duì)內(nèi)存的搬移和初始化

本節(jié)針對(duì)程序在內(nèi)置Flash中啟動(dòng)的情況進(jìn)行分析。

4.png

我們知道燒錄的鏡像文件中包含只讀代碼段.text,已初始化數(shù)據(jù)段.data和未初始化的或者初始化為0的數(shù)據(jù)段.bss。代碼段由于是只讀的,所以是可以一直放在Flash中,CPU通過(guò)總線去讀取代碼執(zhí)行就OK,但是.data段和.bss段由于會(huì)涉及讀寫(xiě)為了,為了更高的讀寫(xiě)效率是要一定搬到RAM中執(zhí)行的,因此bootloader會(huì)執(zhí)行很重要的一步,就是會(huì)在RAM中初始化.data和.bss段,搬移或清空相應(yīng)內(nèi)存區(qū)域。

因此我們知道,當(dāng)啟動(dòng)方式選擇的是從內(nèi)置Flash啟動(dòng)的時(shí)候,代碼依舊是在Flash中執(zhí)行,而數(shù)據(jù)則會(huì)被拷貝到內(nèi)部SRAM中,該過(guò)程是由bootloader完成的。bootloader在完成這些流程之后,就會(huì)將代碼交給main函數(shù)開(kāi)始執(zhí)行用戶代碼。

  • 現(xiàn)在讓我們思考一個(gè)問(wèn)題,PC機(jī)在運(yùn)行程序的時(shí)候?qū)⒊绦驈耐獯妫ㄓ脖P(pán))中,調(diào)入到RAM中運(yùn)行,CPU從RAM中讀取程序和數(shù)據(jù);而單片機(jī)的程序則是固化在Flash中,CPU運(yùn)行時(shí)直接從Flash中讀取程序,從RAM中讀取數(shù)據(jù),那么PC機(jī)能從Flash之類(lèi)的存儲(chǔ)介質(zhì)中直接讀代碼執(zhí)行嗎?

  • 答案是不行。因?yàn)閤86構(gòu)架的CPU是基于馮.諾依曼體系的,即數(shù)據(jù)和程序存儲(chǔ)在一起,而且PC機(jī)的RAM資源相當(dāng)豐富,從幾十M到幾百M(fèi)甚至是幾個(gè)G,客觀上能夠承受大量的程序數(shù)據(jù)。但是單片機(jī)的構(gòu)架大多是哈弗體系的,即程序和數(shù)據(jù)分開(kāi)存儲(chǔ),而且單片的片內(nèi)RAM資源是相當(dāng)有限的,內(nèi)部的RAM過(guò)大會(huì)帶來(lái)成本的大幅度提高。

4. ISP、IAP、ICP三種燒錄方式

雖然這個(gè)小節(jié)稍稍偏題,但是由于上面在3中啟動(dòng)方式中介紹過(guò)了ISP燒錄,因此一并在此介紹剩下的兩種燒錄方式。

1)ICP(In Circuit Programing)。在電路編程,可通過(guò)CPU的Debug Access Port 燒錄代碼,比如ARM Cortex的Debug Interface主要是SWD(Serial Wire Debug)或JTAG(Joint Test Action Group);

2)ISP(In System Programing)。在系統(tǒng)編程,可借助MCU廠商預(yù)置的Bootloader 實(shí)現(xiàn)通過(guò)板載UART或USB接口燒錄代碼。

3)IAP(In Applicating Programing)。在應(yīng)用編程,由開(kāi)發(fā)者實(shí)現(xiàn)Bootloader功能,比如STM32存儲(chǔ)映射Code分區(qū)中的Flash本是存儲(chǔ)用戶應(yīng)用程序的區(qū)間(上電從此處執(zhí)行用戶代碼),開(kāi)發(fā)者可以將自己實(shí)現(xiàn)的Bootloader存放到Flash區(qū)間,MCU上電啟動(dòng)先執(zhí)行用戶的Bootloader代碼,該代碼可為用戶應(yīng)用程序的下載、校驗(yàn)、增量/補(bǔ)丁更新、升級(jí)、恢復(fù)等提供支持,如果用戶代碼提供了網(wǎng)絡(luò)訪問(wèn)功能,IAP 還能通過(guò)無(wú)線網(wǎng)絡(luò)下載更新代碼,實(shí)現(xiàn)OTA空中升級(jí)功能。

4)IAP和ISP 的區(qū)別。

a、ISP程序一般是芯片廠家提供的。IAP一般是用戶自己編寫(xiě)的

b、ISP一般支持的燒錄方式有限,只有串口等。IAP就比較靈活,可以靈活的使用各種通信協(xié)議燒錄

c、isp一般需要芯片進(jìn)行一些硬件上的操作才行,IAP全部工作由程序完成,不需要去現(xiàn)場(chǎng)

d、isp一般只需要按格式將升級(jí)文件通過(guò)串口發(fā)送就可以。IAP的話控制相對(duì)麻煩,如果是OTA的話還需要編寫(xiě)后臺(tái)的。

e、注意,這里介紹的bootloader功能顯然跟之前介紹的啟動(dòng)文件bootloader有所區(qū)別,其目的是為了能接受外部鏡像進(jìn)行燒錄,而不是為了運(yùn)行普通用戶程序。

來(lái)源:嵌入式電子

免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理

審核編輯 黃宇


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7950

    瀏覽量

    154939
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11076

    瀏覽量

    217015
  • PC
    PC
    +關(guān)注

    關(guān)注

    9

    文章

    2151

    瀏覽量

    156510
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    364751
  • Boot
    +關(guān)注

    關(guān)注

    0

    文章

    153

    瀏覽量

    36744
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    求助,關(guān)于K230啟動(dòng)流程疑問(wèn)求解

    , GNU ld (GNU Binutils) 2.35) #1 SMP Sat Jun 21 23:51:35 CST 2025 [ 0.000000] earlycon: sbi0 上面是啟動(dòng)流程
    發(fā)表于 07-11 06:42

    【案例2.36】芯片啟動(dòng)異常的故障分析

    【案例2.36】芯片啟動(dòng)異常的故障分析在某產(chǎn)品的調(diào)試中發(fā)現(xiàn),板上核心處理芯片在每次啟動(dòng)后的表現(xiàn)不同,偶爾會(huì)出現(xiàn)無(wú)法啟動(dòng)的故障。經(jīng)過(guò)幾百次反復(fù)上下電測(cè)試發(fā)現(xiàn),在大多數(shù)情況下,芯片
    的頭像 發(fā)表于 06-26 08:24 ?158次閱讀
    【案例2.36】芯片<b class='flag-5'>啟動(dòng)</b>異常的故障<b class='flag-5'>分析</b>

    使用USB轉(zhuǎn)TTL串口板和ST-LINK調(diào)試下載器給STM32單片機(jī)下載程序

    本文詳細(xì)介紹如何使用ST-LINK/V2和USB轉(zhuǎn)TTL串口板為STM32單片機(jī)下載程序,包括STM32啟動(dòng)模式、JTAG與SWD接口對(duì)比、驅(qū)動(dòng)安裝及官方軟件STM32ST-LINKU
    的頭像 發(fā)表于 06-20 17:26 ?480次閱讀
    使用USB轉(zhuǎn)TTL串口板和ST-LINK調(diào)試下載器給<b class='flag-5'>STM32</b>單片機(jī)下載程序

    HarmonyOS實(shí)戰(zhàn):高德地圖定位功能完整流程詳解

    完整的定位功能流程,建議點(diǎn)贊收藏! 需求分析 要想實(shí)現(xiàn)一個(gè)完整的定位需求流程,就必須要做好準(zhǔn)備工作,了解實(shí)現(xiàn)需求的具體步驟。 權(quán)限申請(qǐng) 檢查
    的頭像 發(fā)表于 06-09 15:23 ?246次閱讀

    封裝失效分析流程、方法及設(shè)備

    本文首先介紹了器件失效的定義、分類(lèi)和失效機(jī)理的統(tǒng)計(jì),然后詳細(xì)介紹了封裝失效分析流程、方法及設(shè)備。
    的頭像 發(fā)表于 03-13 14:45 ?870次閱讀
    封裝失效<b class='flag-5'>分析</b>的<b class='flag-5'>流程</b>、方法及設(shè)備

    STM32的上電啟動(dòng)過(guò)程分享

    、PC然后是“啟動(dòng)文件”,一般主要是項(xiàng)目文件里面的startup_xxxxx.s文件。xa0 xa0 其實(shí)不光STM32系列單片機(jī)是這樣,我們接觸的NXP的微控制器、TI的MSP430以及51單片機(jī)等等
    發(fā)表于 03-07 08:09

    芯片失效分析的方法和流程

    ? 本文介紹了芯片失效分析的方法和流程,舉例了典型失效案例流程,總結(jié)了芯片失效分析關(guān)鍵技術(shù)面臨的挑戰(zhàn)和對(duì)策,并總結(jié)了芯片失效分析的注意事項(xiàng)。
    的頭像 發(fā)表于 02-19 09:44 ?1148次閱讀

    淺談芯片制造的完整流程

    在科技日新月異的今天,芯片作為信息技術(shù)的核心部件,其制作工藝的復(fù)雜性和精密性令人嘆為觀止。從一粒普通的沙子到一顆蘊(yùn)含無(wú)數(shù)晶體管的高科技芯片,這一過(guò)程不僅凝聚了人類(lèi)智慧的結(jié)晶,也展現(xiàn)了現(xiàn)代半導(dǎo)體工業(yè)的極致工藝。本文將講述芯片制造的完整流程,揭開(kāi)這一高科技產(chǎn)品的神秘面紗。
    的頭像 發(fā)表于 10-28 14:30 ?1710次閱讀
    淺談芯片制造的<b class='flag-5'>完整流程</b>

    嵌入式系統(tǒng)的啟動(dòng)流程

    嵌入式系統(tǒng)的啟動(dòng)流程是一個(gè)復(fù)雜但有序的過(guò)程,它涉及從系統(tǒng)上電到操作系統(tǒng)內(nèi)核及應(yīng)用程序啟動(dòng)的多個(gè)階段。
    的頭像 發(fā)表于 10-05 17:44 ?936次閱讀

    高速PCB信號(hào)完整分析及應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《高速PCB信號(hào)完整分析及應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 14:14 ?6次下載

    高速PCB信號(hào)完整分析及硬件系統(tǒng)設(shè)計(jì)中的應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《高速PCB信號(hào)完整分析及硬件系統(tǒng)設(shè)計(jì)中的應(yīng)用.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 14:11 ?4次下載

    高速PCB信號(hào)完整性設(shè)計(jì)與分析

    高速PCB信號(hào)完整性設(shè)計(jì)與分析
    發(fā)表于 09-21 11:51 ?4次下載

    高速電路電源分配網(wǎng)絡(luò)設(shè)計(jì)與電源完整分析

    電子發(fā)燒友網(wǎng)站提供《高速電路電源分配網(wǎng)絡(luò)設(shè)計(jì)與電源完整分析.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 17:35 ?1次下載

    AMD Versal自適應(yīng)SoC CPM5 QDMA的Tandem PCIe啟動(dòng)流程介紹

    本文將從硬件設(shè)計(jì)和驅(qū)動(dòng)使用兩個(gè)方面介紹基于 CPM5 QDMA 的 AMD Versal 自適應(yīng) SoC 的 Tandem 設(shè)計(jì)和啟動(dòng)流程
    的頭像 發(fā)表于 09-18 10:07 ?1569次閱讀
    AMD Versal自適應(yīng)SoC CPM5 QDMA的Tandem PCIe<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>流程</b>介紹

    信號(hào)完整性與電源完整性-電源完整分析

    電子發(fā)燒友網(wǎng)站提供《信號(hào)完整性與電源完整性-電源完整分析.pdf》資料免費(fèi)下載
    發(fā)表于 08-12 14:31 ?92次下載