片内Flash的认识
片上Flash(Embedded Flash)若干問題,包括Flash大小(內存映射)、塊大小、頁面大小、寄存器。這些知識,有利于寫Flash驅動。
通過數據手冊(內存映射)
? ??也可以通過數據手冊得到Flash大小,首先根據型號從官網下得對應的數據手冊Datasheet(點這里,輸入MCU型號進行檢索。STM32F103RB相關的手冊都在這:http://www.st.com/internet/mcu/product/164487.jsp),打開找到Memory map這張圖,如圖2紅框所示(圖2紅框放大即為圖3),Flash在內存的映射地址0x0800 0000 ~ 0x0801 FFFF,即大小為128KB。通過該方法也可以了解到片上Flash的內存映射。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??圖3 Memory map中的SRAM和Flash
二、塊大小
? ??對于系統而言,Flash分為片上Flash(Embedded Flash)和外置Flash。通常說,Flash先分塊再分頁,擦除是按塊進行,這樣的說法應該只是對外置Flash而言,對于片上Flash即可以按頁擦除也可以整塊擦除,英文原文如下[2]:
? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖4 Flash module organization (medium-density devices)
四、Flash相關寄存器
Flash寄存器在內存的映射如下[1]:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
Flash各寄存器具體地址如下[2]:
? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??圖6 Flash memory interface registers of medium-density devices
具體到各寄存器功能,位含義,得參考[3],Flash寄存器映射如下:
五、Information block
Flash中Information block在內存映射如下[1]:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
具體的Flash的Information block地址如下:
? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖9 Information block of medium-density devices
System memory包含一段引導程序(當系統從片上Flash啟動會用到),Flash出廠后就不能修改,不曉得我理解得對不對,貼出原文如下[3]:
?
The option bytes are managed by an embedded Flash Program/Erase Controller (FPEC),詳情見[3]。
有兩種規格,1Kb和2Kb的,也就是1024字節和2048字節,一般來說內部flash大的采用2048字節一頁,內部flash小的采用1024字節一頁。你可以STM32F103系列為參考:
小容量產品主存儲塊1-32KB, 每頁1KB。
中容量產品主存儲塊64-128KB, 每頁1KB。
大容量產品主存儲塊256KB以上, 每頁2KB。
互聯型產品主存儲塊256KB以上, 每頁2KB。
總結
以上是生活随笔為你收集整理的片内Flash的认识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JVM 工作原理和流程
- 下一篇: python语句结尾为何不用分号_Pyt