官方資料:
依次打開 -> keil -> help -> uVision help,打開幫助檔案,然後定位到分散加載檔案章節:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIiNx8FesU2cfdGLwczX0xiRGZkRGZ0Xy9GbvNGL5EzXlpXazxyX5RTNmNVN18UZZZTRxVTNCFHT2ATcwVTQClGVF5UMR9Fd4VGdsATNfd3bkFGazxycykFaKdkYzZUbapXNXlleSdVY2pESa9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4MTOzIzNyATMyATOwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
分散加載檔案有什麼用?
我們知道,在嵌入式程式中,main函數并不是首先被執行的代碼,還有一個隐藏的函數,名字叫__main,他會在main之前被執行,還有一些彙編代碼也會在main之前被執行。他們主要幹了這些事情:1、設定棧頂位址;2、設定PC指針;3、把0初始化變量所在記憶體區清0;4、給非0初始化的變量指派;3、設定棧頂位址。
load view中就是編譯完的整個固件的内容,非0初始化的變量的初值,就存在于上圖所示的Load View的RW section區域,__main中會有一段代碼,把這些值一一複制到記憶體的RW section區域,這樣非0初始化變量的初始化就完成了,進入main函數時,這些變量就已經被正确賦好值了。
常見文法: