新聞中心

STM8 RAM

作者: 時間:2016-11-11 來源:網絡 收藏
我關于實現(xiàn)IAP的理解,如果有誤,希望可以得到大家的斧正

1.IAP部分程序和應用程序分開兩個項目編寫。
2.應用程序部分編譯前要修改ICF文件,使其代碼安排到IAP程序區(qū)外,如0x9000
3.IAP項目編譯前也要修改ICF文件
a.修改代碼編譯后所在ROM中的位置,如:0x8000-0x8FFF
b.按網友dianzidog 給出的方法,實現(xiàn)ram運行代碼
////////////////////////摘自網友dianzidog的帖子 ///////////////////////////////////
icf文件里面
initialize by copy { ro section MyCodeInRAM };//這句是將代碼在程序初始化的時候copy到

本文引用地址:http://m.butianyuan.cn/article/201611/316712.htm

RAM的。
place in NearData { ro section MyCodeInRAM };//定義段的位置

c文件里面
void abc(void)@"MyCodeInRAM"http://直接將函數(shù)限定在段中
{
......
......
......
}

就完成iar中ram運行代碼的步驟了

//////////////////////////////////////////////////////////////////////////////////////////

////
4.IAP程序經過IAR編譯后的HEX文件,使用ST-LINK將代碼燒入CPU內
5.應用程序則通過IAP的上位機應用程序通過串口(假設使用UART1協(xié)議)下載到已經有IAP程序的CPU

中去。

6.IAP程序項目所需修改后的ICF文件(暫時以STM8S103K為修改對象,摘取與原文件不同部分):

define region NearFuncCode = [from 0x8000 to 0x87FF];//假設BOOTLOADER部分使用了2K的代碼空


define region FarFuncCode = [from 0x8000 to 0x87FF];
define region HugeFuncCode = [from 0x8000 to 0x87FF];

initialize by copy { ro section MyCodeInRAM };//這句是將代碼在程序初始化的時候copy到RAM的

。
place in NearData { ro section MyCodeInRAM };//定義段的位置

7.應用程序項目所需修改后的ICF文件(暫時以STM8S103K為修改對象,摘取與原文件不同部分):

define region NearFuncCode = [from 0x8800 to 0x9FFF];
define region FarFuncCode = [from 0x8800 to 0x9FFF];
define region HugeFuncCode = [from 0x8800 to 0x9FFF];



關鍵詞: STM8RA

評論


技術專區(qū)

關閉