STM32F40xxx 與 STM32F41xxx Flash結構詳解


本文原創於http://www.cnblogs.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代表它們。
(二)概覽
    首先來一張概覽圖吧

 

NewImage

 

 

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

 

201403031546

 

 

    這段區域更是神奇,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.cnblogs.com/humaoxiao/p/3579214.html),謝謝。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM