STM32啟動流程

2021-10-25 11:38:36 字數 963 閱讀 2237

先闡述乙個問題,嵌入式應用程式以c語言為主,因此main函式成為程式執行的起點,但是我們忽略了乙個問題:mcu(微控制器/微控制器)上電之後,是如何尋找並執行main函式的呢?

stm32晶元自帶的啟動方式有3種,通過設定boot1、boot0的引腳的高低電平即可選擇。

系統儲存器啟動是將程式寫入到一塊特定的區域,一般由廠家直接寫入,不能被隨意更改或擦除。

內建sram啟動,由於sram掉電丟失,不能儲存程式,一般只用於程式的除錯。

最後總結一下stm32的啟動流程:

①上電後硬體設定sp、跳轉到 reset_hander

②設定系統時鐘(systeminit)

③軟體設定sp

④載入.data、.bss,並初始化棧區(__main)

⑤跳轉到c檔案的main函式

值得注意的是:keil編譯完成後:

code:代表程式**段

ro_data:代表唯讀資料段

rw_data:代表已經初始化全域性資料

zi_data:代表未初始化全域性資料

由於程式在 flash 中直接通過匯流排進行訪問,程式執行在 flash 上,而可更改的資料存於 sram 中,故:

ro_size = code + ro_data(占用 flash )

rw_data = rw_data + zi_data(占用 sram)

rom_size = code + ro_data + rw_data ( 燒寫到 flash 大小空間 )

針對 zi 資料,是不存 flash 中,直接在 sram 中初始化為 0

STM32再學習 啟動流程分析

我們寫嵌入式程式,基本上採用c語言來編寫,以main 作為程式的入口。但實際上,mian 並不是最先要執行的,在這之前需要做一些基本的工作,如堆 棧的定義 main函式的復位連線等,這些工作就需要乙個專門的啟動程 我們寫嵌入式程式,基本上採用c語言來編寫,以main 作為程式的入口。但實際上,mia...

STM32啟動詳細流程之啟動檔案

3.stm32啟動流程 4.最小啟動配置 加個雞腿 可執行程式 cpu執行第一條使用者 這個流程中著重講述的是hex檔案如何被燒寫到stm32內部的指定位址處。燒寫到stm32中的可執行檔案不僅只有hex格式,還有axf bin。針對不同格式的可執行檔案,用不同的工具進行燒寫 cpu執行第一條使用者...

STM32 啟動檔案

先來看看啟動 中的偽操作和偽指令 equ 用於定義常量,相當於c中的巨集定義 如stack size equ 0x00000400 define stack size 0x00000400 align 位元組對齊方式 align 3 export 相當於宣告了乙個全域性變數 export vecto...