Flash地址空间的数据读取——STM32
在嵌入式應用開發中,經常會遇到掉電后還要保存的信息,這些信息通常只能保存在外部的一些存儲芯片中,如外部flash,外部EEPROM, 其實這些信息同樣可以保存在STM32自帶的內部flash中
文章目錄
- 一、STM32 的內部 FLASH 簡介
- 二、工程驗證
- 三、小結
- 四、參考鏈接
一、STM32 的內部 FLASH 簡介
在 STM32 芯片內部有一個 FLASH 存儲器,它主要用于存儲代碼,我們在電腦上編寫好應用程序后,使用下載器把編譯后的代碼文件燒錄到該內部 FLASH 中,由于 FLASH 存儲器的內容在掉電后不會丟失,芯片重新上電復位后,內核可從內部 FLASH 中加載代碼并運行。
根據用途,STM32 片內的 FLASH 分成兩部分:主存儲塊和信息塊。
主存儲塊用于存儲程序,我們寫的程序一般存儲在這里;
信息塊又分成兩部分:系統存儲器、選項字節。 系統存儲器存儲用于存放在系統存儲器自舉模式下的啟動程序(BootLoader),當使用 ISP 方式加載程序時,就是由這個程序執行。這個區域由芯片廠寫入 BootLoader,然后鎖死,用戶是無法改變這個區域的。 選項字節存儲芯片的配置信息及對主存儲塊的保護信息。
除了使用外部的工具(如下載器)讀寫內部 FLASH 外,STM32 芯片在運行的時候,也能對自身的內部 FLASH 進行讀寫,因此,若內部 FLASH 存儲了應用程序后還有剩余的空間,我們可以把它像外部 SPI-FLASH 那樣利用起來,存儲一些程序運行時產生的需要掉電保存的數據。
由于訪問內部 FLASH 的速度要比外部的 SPI-FLASH 快得多,所以在緊急狀態下常常會使用內部 FLASH 存儲關鍵記錄;為了防止應用程序被抄襲,有的應用會禁止讀寫內部FLASH 中的內容,或者在第一次運行時計算加密信息并記錄到某些區域,然后刪除自身的部分加密代碼,這些應用都涉及到內部 FLASH 的操作。
二、工程驗證
flash工程下載鏈接:https://pan.baidu.com/s/11Tn8TocHT8qithneDyKFIQ
提取碼:pmvn
下載完成后打開文件夾,將路徑stm32_Flash\Drivers\CMSIS\Device\ST\STM32F1xx\Include下的system_stm32f1xx_20190722_092746.h文件修改為system_stm32f1xx.h,否則后面編譯會報錯
修改好后,打開工程,可以將想要存入Flash中的內容修改為自定義內容
編譯無報錯
進行程序調試前,先完成配置:
注意:下載的工程代碼調試用的是硬件 st-link debuger,不是軟件仿真,因此用軟件仿真做,可能情況略有不同(小編這里軟件仿真就沒有出現結果)
點擊Options->Debug->右邊使用硬件ST-Link Debugger
接著點擊S T-Link Debugger右邊的Settings
進入到Cortex-M Target Driver Setup的Debug頁面,其中的Port選擇為SW
依次點擊Flash Download->勾選Reset and Run->Add->選擇STM32F10x Med-density Flash->Add->確定即可
最后點擊OK完成硬件配置
由于要連接硬件ST-Link,所以要下載一個STLink驅動,不然下載不成功
鏈接:https://pan.baidu.com/s/13k0PVQfg5qAHXBKJ2IZiYA
提取碼:1234
連線如下圖
點擊左上角的LOAD按鈕將程序下載到STM32中
現在點擊dubug按鈕,進入硬件仿真調試
點擊View->memory windows->memory 1打開內存觀察窗口,并在地址欄中輸入:0x800C000,觀察將要修改的flash區間區容:
其中點擊某一字符右擊可選擇顯示格式
繼續View->Watch windows->Watch 1打開一個變量觀察窗口
將變量FlashWBuff 和FlashRBuff加入到Watch 1觀察窗口
另外View->勾選Periodic Windows Update,開啟變量自動更新
按如圖所示的全速運行按鈕或者F5
這時就可以看到Watch 1窗口的數組FlashRBuff中的內容與數組FlashWBuff中的內容是一樣的
同時在Memory 1窗口中可以看到在FLASH地址0x0800C000區成功寫入對應內容
斷電后再重新上電進行調試,程序停在main入口處時還可以看到Flash對應區間的內容保持上一次寫入內容值
三、小結
完成本次實驗內容后,對STM32 的內部 FLASH 有了一定的了解,明白了FLASH 的基本功能后,以后基于STM32的開發就可以省去一些外部FLASH或EEPROM了。
四、參考鏈接
1.https://blog.csdn.net/zhanglifu3601881/article/details/96632971
2.https://www.eefocus.com/embedded/399467
總結
以上是生活随笔為你收集整理的Flash地址空间的数据读取——STM32的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年哪些办公软件比较好用?
- 下一篇: Dota2锁区steam下载国际服办法