<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > mdk中添加flash算法

mdk中添加flash算法

作者: 時(shí)間:2016-11-23 來(lái)源:網(wǎng)絡(luò ) 收藏
在Realview MDK中,Flash燒寫(xiě)算法不是通用的,都是針對具體的Flash存儲芯片的。由于市面上的Flash種類(lèi)比較多,所以Realview MDK不可能包含所有的Flash芯片燒寫(xiě)程序。但是在具體的應用中,開(kāi)發(fā)者在Realview MDK中可能會(huì )找不到自己所需要的Flash燒寫(xiě)程序,這時(shí),用戶(hù)就必須自己添加Flash燒寫(xiě)程序。本文將詳細的探討這種方法。

Realview MDK已經(jīng)定義好了添加到其中的Flash燒寫(xiě)算法的接口,包括1個(gè)描述Flash芯片的結構體和6個(gè)對Flash芯片操作的函數定義。詳細的內容可以參考下面的代碼。

本文引用地址:http://dyxdggzs.com/article/201611/320147.htm

struct FlashDevice {

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

char DevName[128]; // 設備的名稱(chēng)及描述;

unsigned short DevType; // 設備的類(lèi)型,例如: ONCHIP, EXT8BIT, EXT16BIT等等;

unsigned long DevAdr; // 默認設備的起始地址;

unsigned long szDev; // 設備的總容量;

unsigned long szPage; // 頁(yè)面的大??;

unsigned long Res; // 保留,以便將來(lái)擴展之用;

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

unsigned long toProg; // 頁(yè)寫(xiě)函數超時(shí)的時(shí)間;

unsigned long toErase; // 扇區擦除函數超時(shí)的時(shí)間;

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燒寫(xiě)算法的實(shí)質(zhì)就是填充上面的那個(gè)結構體以及實(shí)現那6個(gè)函數。至于幾個(gè)函數是如何被Realview MDK調用的,用戶(hù)不必關(guān)心,這些是由Realview MDK自動(dòng)管理的,只要正確的實(shí)現了上面的那些內容,開(kāi)發(fā)者就可以將Realview MDK編譯鏈接后的程序下載到自己的Flash芯片中去。下面是添加一個(gè)Flash燒寫(xiě)的詳細步驟:

1. 在C:KeilARMFlash下新建一個(gè)空的子文件夾;

2. 在Flash文件夾中選擇一個(gè)已存在的,且和欲添加的Flash算法相近的內容(如 ..ARMFlashLPC_IAP_256) 拷貝到這個(gè)新文件中,并將此算法作為新算法的模板;

3. 重命名工程文件LPC_IAP_256.UV2以表示新的Flash ROM設備名,如29F400.UV2并用μVision IDE將其打開(kāi);

4. 在對話(huà)框Project - Options for Target - Output 中將所有的輸出文件名(如 LPC_IAP_256)替換為新的設備名;

5. 編輯FlashPrg.C文件并為EraseChip, EraseBlock及ProgramBlock定義函數代碼。在函數Init和UnInit中編寫(xiě)算法所需的初始化以及卸載代碼;

6. 在文件FlashDev.C中的struct FlashDevice結構體中定義設備參數;

7. 重新編譯工程,將在C:KeilARMFlash文件夾下生成*.FLX 格式的Flash編程算法。此文件即為所添加的Flash編程算法;

8. 使用Configure Flash Download 中的Add按鈕可將此編程算法文件添加到目標應用工程中。



關(guān)鍵詞: mdkflash算

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>