1.STM32啓動過程
硬件復位後,第一步是執行復位處理程序,這個程序的入口在啓動代碼裏(默認),摘錄一段cortex-m3的復位處理入口代碼::
1: Reset_Handler PROC ;PROC等同於FUNCTION,表示一個函數的開始,與ENDP相對?
2:EXPORT Reset_Handler [WEAK]
3:
4: IMPORT SystemInit
5: IMPORT __main
6: LDR R0, =SystemInit
7: BLX R0
8: LDR R0, =__main
9: BX R0
10: ENDP
初始化堆棧指針、執行完用戶定義的底層初始化代碼(SystemInit函數)後,接下來的代碼調用了__main函數,這裏__main函數會調用一些列的C庫函數,完成代碼和數據的複製、解壓縮以及ZI數據的零初始化。
2.需要啓動後變量(內存)不被清零
可以在工程中打開工程名.sct文件,標識那些RAM不初始化,__attribute__((at(0x2001F000)))指定變量地址。