1. 程式人生 > >基於STM32F407的bootloader、IAP、Flash_APP、上位機設計(二)

基於STM32F407的bootloader、IAP、Flash_APP、上位機設計(二)

基於STM32F407的bootloader、IAP、Flash_APP、上位機設計

第一部分:Flash_App設計

前期準備:

一、硬體:STM32F407VET6板一塊,IAP使用串列埠通訊,板上需引出串列埠或有DB9介面都行(如果不使用串列埠,使用其他協議均可)。

二、軟體:KEIL4.73版本,關於IAP讀寫FLASH的原始碼是使用戰艦的原始碼,共有iap、stmflash、sys等檔案,上位機軟體設計使用QT5.5。

三、Flash_App工程中有幾個需要修改的地方。

(1):Target裡面IROM1,Start修改為0X8010000,這個和Bootload的#define FLASH_APP1_ADDR        0x08010000  一致,Size修改為0xF0000,代表你的APP最大的記憶體,如果APP過大則不能正常執行,因此需要確認你的APP具體的真實大小再修改該值。

(2):User配置裡面RUN#1需要增加fromelf.exe檔案,路徑在KEIL的安裝路徑裡面,可以下載everything搜尋工具搜尋即可,例如我的路徑F:\2.WorkSoft\ARM\BIN40\fromelf.exe --bin -o ../../app.bin  ./Flash/Obj/output.axf 

(3):路徑後面跟著--bin -o ../../app.bin  ./Flash/Obj/output.axf,表示應用輸出一個app.bin檔案,檔案位置在project的../../上,也就是上一層再上一層的目錄下,output.axf表示生成bin檔案的來源,在工程的output下。

其它配置均和普通工程相同。

四、程式使用

        在程式上面,配置和正常使用一致,但在最開始需要增加一句SCB->VTOR = FLASH_BASE | 0x10000;//設定偏移量。0X10000是0X8010000同等關係,如果你的APP初始位置不一樣,這個地方也需要更改,這段程式碼表示將FLASH偏移到0x10000中,這樣就可以正常使用。

        如果bootloader的外設通過boot按鍵來做了選擇,那麼APP模式下bootloader不配置外設(例如IO,TIMER,UART等),APP可以使用任何的系統配置,如果APP模式下Bootloader配置了外設,那麼APP儘量不要使用,會互相干擾,比較bootloader也是在跑。

五、生成的bin檔案就可以作為上位機下載檔案。