本文原創于http://www.CUOXin.com/humaoxiao,非法轉載者請自重!
?
硬件平臺:STM32F4 DISCOVERY開發板 型號:MB997A或MB997C主芯片型號:STM32F405xx, STM32F407xx, STM32F415xx, 或 STM32F417xx
主要參考文檔:
(1)PM0081 STM32F40xxx and STM32F41xxx Flash PRogramming manual.pdf (2)STM32F407 datasheet.pdf
?
? ? 做為嵌入式方面的開發人員,拿到一個芯片后,我們首先看它的參數指標,有多少多少容量的RAM,多少多少容量的Flash。當然,前提是芯片自帶這兩個模塊。? ? 今天我們只研究Flash的結構:)(一)聲明? ? STM32F405xx, STM32F407xx, STM32F415xx, 和 STM32F417xx的Flash模塊都是一樣的,所以,我們在文章后面統一以STM32F4代表它們。(二)概覽? ? 首先來一張概覽圖吧
?
?
?
2.1 Main memory? ? Main memory部分各個Sector相加最后正合適等于1024Kbyte,這也是與文檔開頭說的Capacity up to 1 Mbyte相符的。在這個區域里主要是存儲我們用戶編寫的程序,這里你可能看到了,該片存儲區地址是從0x08000000開始的,這也就是為什么我們在使用ST-Link2燒寫程序的時候,要規定起始地址是0x08000000的原因了。2.2 System memory? ? System memory區域是系統保留區,用來在“System memory boot”模式下啟動芯片。存儲的是一段特殊的程序,叫做bootloader,通過運行此段區域里的程序,可以對Main memory進行重新燒寫。舉個栗子,如果我們選擇以System memory boot模式啟動,同時插上了帶有系統固件的U盤,那么經過配置后,bootloader就可以讀出U盤里的固件,燒寫到Main memory區域里去,怎么樣,方便吧!也就是說,給芯片重新燒寫固件,可以通過USB OTG FS的方式!神奇的功能:)2.3 OTP area
?
?
?
? ? 這段區域更是神奇,OTP是One-time programmable的縮寫,從字面上可以看出來,此段區域是一次性編程區。但是,機智的人類也有犯錯誤的時候,萬一寫錯了怎么辦!ST公司考慮到這一點,在從0x1FFF7A00地址開始的16個字節是帶有“鎖”功能的字節,當你確定OTPx區域寫進去的數據確實沒有錯誤了,你就可以對LOCKBx地址寫入0x00,從此OTPx區域就沒法更改了。2.4 Option bytes? ? 官方文檔應該寫錯了吧,0x1FFFC000-0x1FFFC00F怎么會是16Kbytes呢?應該是16bytes才對吧。
?
? ? 想要具體了解的朋友們,可以參考STM32F407 datasheet.pdf中3.1-3.9節的詳細介紹:)? ? 下一節將給大家帶來啟動文件.S的詳細解釋。
?
? ? ------------------------------------
?
? ? 大家可以+關注我的博客,以便得到最新的文章。
?
? ? ------------------------------------
?
打字不易,轉載請注明出處(http://www.CUOXin.com/humaoxiao/p/3579214.html),謝謝。
新聞熱點
疑難解答