天天看點

在Realview MDK中添加自己的FLASH程式設計算法

出自:Realview MDK 應用系列文章

    在Realview MDK中, Flash燒寫算法不是通用的,都是針對具體的Flash存儲晶片的。由于市面上的Flash種類比較多, 是以Realview MDK不可能包含所有的Flash晶片燒寫程式。 但是在具體的應用中,開發者在Realview MDK中可能會找不到自己所需要的Flash燒寫程式,這時,使用者就必須自己添加Flash燒寫程式。本文将詳細的探讨這種方法。Realview MDK已經定義好了添加到其中的Flash燒寫算法的接口,包括1個描述Flash晶片的結構體和6個對Flash晶片操作的函數定義。詳細的内容可以參考下面的代碼。

struct FlashDevice 

{

unsigned short Vers;                    // 體系結構及版本号;

char DevName[128];                      // 裝置的名稱及描述;

unsigned short DevType;                 // 裝置的類型,例如: ONCHIP, EXT8BIT, EXT16BIT等等;

unsigned long DevAdr;                   // 預設裝置的起始位址;

unsigned long szDev;                    // 裝置的總容量;

unsigned long szPage;                   // 頁面的大小;

unsigned long Res;                      // 保留,以便将來擴充之用;

unsigned char valEmpty;                 // Flash擦除後儲存單元的值;

unsigned long toProg;                   // 頁寫函數逾時的時間;

unsigned long toErase;                  // 扇區擦除函數逾時的時間;

struct FlashSectors sectors[SECTOR_NUM]; //扇區的起始位址及容量設定數組。

};

extern int Init (unsigned long adr, unsigned long clk, unsigned long fnc);

extern int UnInit (unsigned long fnc);

extern int BlankCheck (unsigned long adr, unsigned long sz, unsigned char pat);

extern int EraseChip (void);

extern int EraseSector (unsigned long adr);

extern int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf);

extern unsigned long Verify (unsigned long adr, unsigned long sz, unsigned char

*buf);

    在Realview MDK中,添加Flash燒寫算法的實質就是填充上面的那個結構體以及實作那6個函數。 至于幾個函數是如何被  

Realview MDK調用的,使用者不必關心,這些是由Realview MDK自動管理的,隻要正确的實作了上面的那些内容,開發者就可以将Realview MDK編譯連結後的程式下載下傳到自己的Flash晶片中去。下面是添加一個Flash燒寫的詳細步驟:

1. 在 D:\Keil\ARM\Flash下建立一個空的子檔案夾;

2. 在 Flash 檔案夾中選擇一個已存在的,且和欲添加的 Flash 算法相近的内容 (如

..\ARM\Flash\LPC_IAP_256) 拷貝到這個新檔案中,并将此算法作為新算法的模闆;

3. 重命名工程檔案LPC_IAP_256.UV2以表示新的FlashROM裝置名,如29F400.UV2并用μVisionIDE将其打開;

4. 在對話框Project- OptionsforTarget-Output 中将所有的輸出檔案名(如 LPC_IAP_256)替換為新的裝置名;

5. 編輯FlashPrg.C檔案并為EraseChip,EraseBlock及ProgramBlock定義函數代碼。 在函數Init和UnInit中編寫算法所需的初始化以及解除安裝代碼;

6. 在檔案FlashDev.C中的structFlashDevice結構體中定義裝置參數;

7. 重新編譯工程,将在 C:\Keil\ARM\Flash檔案夾下生成*.FLX 格式的 Flash程式設計算法。此檔案即為所添加的Flash程式設計算法;

8. 使用ConfigureFlashDownload 中的Add按鈕可将此程式設計算法檔案添加到目标應用工程中。

1. 在 C:\Keil\ARM\Flash下建立一個空的子檔案夾;

2. 在 Flash 檔案夾中選擇一個已存在的,且和欲添加的 Flash 算法相近的内容 (如

..\ARM\Flash\LPC_IAP_256) 拷貝到這個新檔案中,并将此算法作為新算法的模闆;

3. 重命名工程檔案LPC_IAP_256.UV2以表示新的FlashROM裝置名,如29F400.UV2并用μVisionIDE将其打開;

4. 在對話框Project- OptionsforTarget-Output 中将所有的輸出檔案名(如 LPC_IAP_256)替換為新的裝置名;

5. 編輯FlashPrg.C檔案并為EraseChip,EraseBlock及ProgramBlock定義函數代碼。 在函數Init和UnInit中編寫算法所需的初始化以及解除安裝代碼;

6. 在檔案FlashDev.C中的structFlashDevice結構體中定義裝置參數;

7. 重新編譯工程,将在 C:\Keil\ARM\Flash檔案夾下生成*.FLX 格式的 Flash程式設計算法。此檔案即為所添加的Flash程式設計算法;

8. 使用ConfigureFlashDownload 中的Add按鈕可将此程式設計算法檔案添加到目标應用工程中。

繼續閱讀