C語言 對FLASH 數據及程序 操作方法


今天我們來討論一個有關FLASH使用的問題,我們經常會在目標地址的FLASH中放置data或者code,涉及到寫FLASH以及讀取和使用的問題。

對FLASH的讀寫我們通常叫做IAP。

IAP_CODE

以上為對FLASH 目標地址數據的讀寫操作例程,主要是通過指向code的指針得到數據使用。

data使用

unsigned char code*POINT = 0X0000;

IAP_Data = *(POINT + IAP_Add);

code使用

((void (code *)(void))0x00)();    //jmp 0x00;

下面我們說下FLASH data的初始化,這要使用到重鏈接技術。

首先我們定義一個code數組 並將其初始化

unsigned int code numCode = 224;
unsigned char code hanzCode[cnAry] = {0x00,0x00,0x00,0x44,0x00,0x44,0x00,0x44,0xFE,0x44,0x42,0x5F,0x42,0x44,0x42,0x44,
                                      0x42,0x44,0x42,0x74,0x42,0xC4,0xFF,0x5F,0x02,0x44,0x04,0x44,0x08,0x44,0x10,0x44,
                                      0x00,0x00,0x10,0x00,0x08,0x10,0x04,0x10,0x02,0x10,0x01,0x10,0x00,0xD0,0x00,0x30,
                                      0xFF,0xFF,0x00,0x30,0x00,0xD0,0x01,0x10,0x02,0x10,0x04,0x10,0x08,0x10,0x10,0x00,
                                      0x00,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0xFF,0xFF,0x04,0x00,0x04,0x00,0x04,0xCC,
                                      0x04,0x22,0x04,0x00,0x01,0x22,0x00,0xA3,0xFF,0xFE,0x01,0xA4,0x06,0x24,0x08,0x24,
                                      0x00,0x00,0x80,0x08,0x81,0x88,0x46,0x88,0x28,0x88,0x10,0xFF,0x2C,0x88,0x43,0x88,
                                      0x40,0x88,0x80,0x08,0x80,0x90,0x01,0x10,0x7F,0xFF,0x82,0x10,0x44,0x10,0x04,0x10,
                                      0x00,0x00,0x80,0x00,0x40,0x18,0x20,0x28,0x18,0x08,0x06,0x08,0x01,0xC8,0x06,0x0F,
                                      0x18,0x30,0x20,0x40,0x4C,0x9C,0x82,0x64,0x01,0x84,0x06,0x44,0x08,0x24,0x10,0x04,
                                      0x00,0x00,0x40,0x00,0x43,0xFC,0x44,0x04,0x42,0x04,0x7F,0xFC,0x40,0x00,0x42,0x02, 
                                      0x44,0x04,0x4F,0xFC,0x40,0x00,0x20,0x00,0x1F,0xCC,0x20,0x42,0x40,0x40,0x00,0x40, 
                                      0x00,0x00,0x60,0x00,0x11,0x8C,0x00,0x54,0xE0,0x24,0x80,0x04,0x83,0xF4,0x84,0x04, 
                                      0xB2,0x67,0x88,0x88,0x81,0x10,0x80,0x23,0x77,0xFC,0x00,0x08,0x30,0x10,0x40,0x20};

在使用重新鏈接的方式把該數組連接到目標位置

link

打開M51文件

m51

即可看到數組已經被定位到目標位置上。

程序代碼重定位的方法與code數據類似,每個函數都會生成一個?PR?UARTRXTX?MAIN標號,只需要重定位該標號即可。

你需要在MCU燒錄代碼中調用該函數,且應用都要寫到這個函數內,需要修改應用程序的話,你直接將地址區域IAP重新擦寫即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM