總:STM32——學習總綱
參考文件:
STM32 MAP文件淺析-V1.1
STM32 啟動文件淺析_V1.2
Cortex-M3權威指南(中文)、ARM Cotrex-M3權威指南(英文).zip
一、Map文件解析
1.1 MDK編譯過程文件
在編譯中,會生成11種編譯過程文件,可以設置輸出到一個文件夾,如output文件夾。
1.2 Map文件概念與作用
作用:
1.3 Map文件組成*
1.4 Map分析 Flash/RAM 大小
1.4.1 MDK output文件夾輸出配置
1.4.2 輸出map文件查看方式:
a.
b.
1.4.3 分析map文件結構
1.4.3.1 函數的調用關系(Section Cross References)
i.main, i表示符號的入口
1.4.3.2 刪除的冗余程序段(Removing Unused input sections from the image.)
1.4.3.3 映像符號表(Image Symbol Table)
包含局部符號,全局符號。
i.delay_us,表是函數入口地址
函數一般不帶static都是全局符號
1.4.3.4 映像內存分布(Memory Map of the image)
1.4.3.5 映像組件大小(Image component sizes)
1.4.3.5.1 SRAM/FLASH 大小計算:
FLASH = Code + RO+RW
SRAM = RW + ZI
庫的文件不開源(Library),無法優化;一般優化用戶代碼(Object)
1.4.3.6 map文件 SRAM/FLASH 總結
1.4.3.7 啟動文件堆、棧分配(startup_stm32f103xe.s)
二、STM32啟動過程
2.1 STM32 啟動模式(F1/F4/F7/H7)/自舉模式
2.1.1 前置
堆棧指針MSP指向棧頂地址(0x0000 0000 的值)
程序計數器指針PC指向復位向量(0x0000 0004 的值) →? ? Reset_Hdlr(中斷向量表復位向量)
啟動模式的設置,也就是指定MSP和PC的定位。?
2.1.2 啟動模式(F1)
也就是更改啟動模式,復位下載重啟
2.1.3 啟動模式(F4)
2.1.4?啟動模式(F7)
2.1.5?啟動模式(H7)
2.2 STM32 啟動過程
2.2.1 啟動文件 startup_stm32xxx.s
2.2.2 Reset_Handler函數
2.2.3 堆棧簡介
---》(1.4.3.7 啟動文件堆、棧分配(startup_stm32f103xe.s))
2.2.4 __Vectors 中斷向量表
存放的是函數首地址,函數指針。
2.2.4 啟動過程圖解
2.2.4.1?map文件查詢地址
具體啟動的實際地址可查詢map文件