MDK編程算法用過MDK下載程序的小伙伴可能都知道,在下載程序之前需要都在Debug設置的Flash Download子選項卡選擇編程算法。大多數(shù)時候, 我們只要安裝了芯片包之后,就可以直接得到對應的編程算法,并不需要我們去修改它。但是,當你是一個芯片包的開發(fā)者,或者你有獨特 的下載需求(比如在你的程序里加入一些校驗信息),這個時候你就需要去了解它了!
編程算法呢,說白就其實也就是一段程序,主要功能就是擦除相應的內存塊,并將我們的程序寫入到相應的內存區(qū)域上去。 在你點擊下載按鈕的時候,這段程序會被先下載到RAM上(RAM for Algorithm上的設置),然后才會通過它,將你的程序寫入到 指定的內存區(qū)域內。
實現(xiàn)一個自己的編程算法怎么去實現(xiàn)一個自己的編程算法?首先我們找到自己的MDK的安裝路徑,進入到ARM\Flash文件夾下(例如:D:\Keil_v5\ARM\Flash)。 這里有個編程算法的工程模板,復制這個工程到你的工程文件夾下,重命名你自己的想要的名字。
打開工程,里面主要有兩個文件 FlashPrg.c 和 FlashDev.c:
FlashDev.c主要實現(xiàn)了一個設備相關的結構體(根據(jù)自己的Flash情況去實現(xiàn))
比如STM32L051實現(xiàn)如下:
FlashPrg.c實現(xiàn)了幾個Flash編程相關的函數(shù):
根據(jù)自己的需要去實現(xiàn),STM32L051實現(xiàn)如下:
FlashPrg.c
從上面我們就可以看出了,下載程序的時候就是調用了上面的幾個函數(shù),跟我們自己寫Flash沒有太大的區(qū)別。那么程序都編程完成之后, 怎么生成FLM文件呢?我們先編譯工程,完成之后你去看你的工程輸出目錄,這個時候你就已經(jīng)可以找到FLM后綴的文件了,這個就是你自己 的編程算法,把它復制到 ' MDK安裝路徑 '\ARM\Flash下面就可以了,在選項卡里選擇你自己的編程算法就可以使用了。
結束到這里,你已經(jīng)可以自己實現(xiàn)一個編程算法了。但是細心的小伙伴可能會發(fā)現(xiàn),這個過程下來其實和我們自己的項目工程沒有什么區(qū)別, 但是為什么我們自己的工程就生成不了FLM文件呢?哈哈,小伙伴可以自己看一看編譯的日志,有沒有類似下面的日志
原來.FLM文件跟.axf文件是一樣的,就是改了一下文件后綴。具體.axf文件又是什么呢?哈哈, 我就不說了,感興趣的小伙伴們可以自己去了解一下!
|
|
|