您的位置 首页 报告

STM8 RAM

我关于实现IAP的理解,如果有误,希望可以得到大家的斧正1.IAP部分程序和应用程序分开两个项目编写。2.应用程序部分编译前要修改ICF文件,…

我关于完结IAP的了解,假如有误,期望能够得到我们的指正

1.IAP部分程序和应用程序分隔两个项目编写。
2.应用程序部分编译前要修正ICF文件,使其代码安排到IAP程序区外,如0x9000
3.IAP项目编译前也要修正ICF文件
a.修正代码编译后地点ROM中的方位,如:0x8000-0x8FFF
b.按网友dianzidog 给出的办法,完结ram运转代码
////////////////////////摘自网友dianzidog的帖子 ///////////////////////////////////
icf文件里边
initialize by copy { ro section MyCodeInRAM };//这句是将代码在程序初始化的时分copy到

RAM的。
place in NearData { ro section MyCodeInRAM };//界说段的方位

c文件里边
void abc(void)@”MyCodeInRAM”//直接将函数限定在段中
{
……
……
……
}

就完结iar中ram运转代码的过程了

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

////
4.IAP程序经过IAR编译后的HEX文件,运用ST-LINK将代码烧入CPU内
5.应用程序则经过IAP的上位机应用程序经过串口(假定运用UART1协议)下载到已经有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];

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/274632.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部