如何編寫(xiě)Keil Flash下載算法
Keil Flash下載算法是一種在單片機(jī)中進(jìn)行Flash存儲(chǔ)器編程和擦除的方法。在前面文章中我們提到了通用算法的選擇,但如果你所使用的MCU不是默認(rèn)支持的品牌,那么就需要自己編寫(xiě)屬于自己的算法。文件
Keil Flash下載算法是一種在單片機(jī)中進(jìn)行Flash存儲(chǔ)器編程和擦除的方法。在前面文章中我們提到了通用算法的選擇,但如果你所使用的MCU不是默認(rèn)支持的品牌,那么就需要自己編寫(xiě)屬于自己的算法。
文件存儲(chǔ)位置
首先,在打開(kāi)Keil安裝所在文件夾后,我們可以找到算法存儲(chǔ)位置,這個(gè)文件是ADD按鈕所選擇的程序所在地方。如果你想要編寫(xiě)自己的算法,你需要打開(kāi)“C:Keil_v5ARMFlash”路徑下的flash文件夾。
源碼文件
當(dāng)你打開(kāi)flash文件夾后,你會(huì)看到一個(gè)名為FlashDev.c的文件,這是設(shè)備Flash的接口定義文件。另外還有FlashPrg.c文件,這是算法主文件。在該文件中,我們可以看到一系列的函數(shù)定義,包括對(duì)Flash的初始化、擦除和編程等操作。這些函數(shù)的定義與芯片的specification相關(guān)聯(lián),因此請(qǐng)仔細(xì)閱讀你所選擇的芯片的Flash部分寄存器定義。
接口定義
從FlashDev.c文件中可以看出,該文件定義了一些關(guān)鍵的接口,例如Device Name、Device start address、Device size、Programming page size、初始化內(nèi)容填充值、一個(gè)page下載的timeout以及擦除一個(gè)sector的timeout等等。這些接口定義對(duì)Flash本身有了很清楚的了解,這也為我們編寫(xiě)自己的Flash算法提供了基礎(chǔ)。
算法主文件
在FlashPrg.c文件中,我們可以看到一系列的函數(shù)定義,其中Init()函數(shù)是對(duì)Flash的初始化,而UnInit()函數(shù)則是反初始化過(guò)程。其他函數(shù)包括EraseChip()、EraseSector()和ProgramPage()等,這些函數(shù)定義都與芯片的規(guī)格書(shū)相關(guān)聯(lián)。因此,在編寫(xiě)自己的Flash算法時(shí),請(qǐng)仔細(xì)閱讀相應(yīng)Flash controller章節(jié)的定義。
結(jié)論
在編寫(xiě)Keil Flash下載算法時(shí),我們需要了解Flash的接口定義、算法主文件以及函數(shù)定義。只有深入理解這些內(nèi)容,才能成功地編寫(xiě)出屬于自己的Flash算法。如果您有任何疑問(wèn),請(qǐng)隨時(shí)留言!