<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          mdk中添加flash算法

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

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

          本文引用地址:http://www.ex-cimer.com/article/201611/320147.htm

          struct FlashDevice {

          unsigned short Vers; // 體系結(jié)構(gòu)及版本號;

          char DevName[128]; // 設(shè)備的名稱及描述;

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

          unsigned long DevAdr; // 默認(rèn)設(shè)備的起始地址;

          unsigned long szDev; // 設(shè)備的總?cè)萘浚?/p>

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

          unsigned long Res; // 保留,以便將來擴(kuò)展之用;

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

          unsigned long toProg; // 頁寫函數(shù)超時的時間;

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

          struct FlashSectors sectors[SECTOR_NUM]; //扇區(qū)的起始地址及容量設(shè)置數(shù)組。

          };

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

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

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

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

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

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

          6. 在文件FlashDev.C中的struct FlashDevice結(jié)構(gòu)體中定義設(shè)備參數(shù);

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

          8. 使用Configure Flash Download 中的Add按鈕可將此編程算法文件添加到目標(biāo)應(yīng)用工程中。



          關(guān)鍵詞: mdkflash算

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();