當我們在開發過程中用到MDK下載程序的時候可能都知道,在下載程序之前需要都在Debug設置的Flash Download子選項卡選擇編程算法。大多數時候,我們只要安裝了芯片包之后,就可以直接得到對應的編程算法,并不需要我們去修改它。但是,當我們是一個芯片包的開發者,或者我們有獨特的下載需求(比如在程序里加入一些校驗信息),這個時候我們就需要去了解它了!
編程算法其實就是一段程序,主要功能就是擦除相應的內存塊,并將我們的程序寫入到相應的內存區域上去。在點擊下載按鈕的時候,這段程序會被先下載到RAM上(RAM for Algorithm上的設置),然后才會通過它,將用戶寫的程序寫入到指定的內存區域內。
怎么去實現一個自己的編程算法?首先我們找到自己的MDK的安裝路徑,進入到ARMFlash文件夾下。這里有個編程算法的工程模板,復制這個工程到你的工程文件夾下,重命名你自己的想要的名字。
打開工程,里面主要有兩個文件 FlashPrg.c 和 FlashDev.c:
FlashDev.c主要實現了一個設備相關的結構體(根據自己的Flash情況去實現)

比如STM32F103實現如下:

FlashPrg.c實現了幾個Flash編程相關的函數:

根據自己的需要去實現,從上面我們就可以看出,下載程序的時候就是調用了上面的幾個函數,跟我們自己寫Flash沒有太大的區別。那么程序都編程完成之后,怎么生成FLM文件呢?我們先編譯工程,完成之后你去看你的工程輸出目錄,這個時候你就已經可以找到FLM后綴的文件了,這個就是我們自己的編程算法,把它復制到 ‘ MDK安裝路徑 ’ARMFlash下面就可以了,在選項卡里選擇我們自己的編程算法就可以使用了。但是為什么我們自己的工程就生成不了FLM文件呢?工程中的.axf文件跟.FLM文件是一樣的,把.axf后綴改為.FLM即可。
責任編輯:haq
-
芯片
+關注
關注
463文章
54010瀏覽量
466146 -
FlaSh
+關注
關注
10文章
1748瀏覽量
155531 -
PLM
+關注
關注
2文章
148瀏覽量
22092
原文標題:燒寫算法FLM文件如何實現呢?
文章出處:【微信號:gh_e7f294a514ca,微信公眾號:單片機匠人】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
聊聊MCU下載算法在Keil MDK里的那些事兒
往flash里面燒寫的是.elf文件還是.hex文件?裸機應該沒辦法識別.elf文件?
SM4算法實現分享(一)算法原理
Windows系統下用vivado將電路燒寫到MCU200T板載FLASH的方法
CW32L012實現外部flash下載算法
【HZ-RK3568開發板免費體驗】系統燒寫
FPGA遠程燒寫bit文件和調試ILA指南
怎么樣實現燒寫算法FLM文件
評論