您的位置 首页 硬件

程序在RAM中调试的运转方法&程序固化后运转方法

程序固化后运行方式:程序开始运行后需要将RW和ZI段搬移到RAM中去,程序下载进Flash中以后,上电后是怎样将RWZI断搬移到RAM中去的?注

程序固化运转方法

程序开端运转后需求将RW 和ZI段搬移到RAM中去,程序下载进Flash中今后,上电后是怎样将RW ZI断搬移到RAM中去的?留意IAR和ADS在进行完.s文件的初始化今后都不是直接跳转到main函数去履行,IAR是跳转到?main中而ADS是跳转到__main函数中,在这些函数中依据icf文件的装备,将RW和ZI段搬移到icf文件规则的RAM区域中。假如程序的运转时域是在片外RAM中,那程序是在什么时候对片外RAM控制器进行初始化呢?因为.s文件的开端部分是CODE RO的,不需求RAM空间,所以可以在.s文件中对片外RAM进行装备。还有一个问题,这个问题是在硬件规划时有必要留意的,假如需求程序固化在外部Flash中,有必要留意外接的Flash有必要是片子上电后默许片外总线就支撑的片子。

程序在RAM中调试的运转方法

为了调试的便利,程序有时候是不需求下载进flash进行调试,而是直接在RAM中运转,将icf文件中的ROM 和RAM地址都设成硬件RAM的地址,将Flashloader的使能关掉,那么程序就运转在RAM中了。可是问题又产生了,因为有时咱们想在外部RAM中调试代码,所以片外RAM控制器需求在代码下载进RAM之前进行初始化,怎样可以完结呢?IAR是经过.mac文件完结的。在程序下载之前先履行了。mac文件中的程序,下面是一个比方

execUserFlashInit()
{
__writeMemory32(0x1000ffef, 0xffe00000 , “Memory”);
__writeMemory32(0x0f000114, 0xE002C014, “Memory”);
}

该比方是lpc初始化外部RAM的比方。装备好了外部RAM就可以在里面跑代码了。

程序的IAR下载

1. 文件在片内Flash中下载运转

这是最简略也是最常用的方法,一般的ARM芯片都会带有片内Flash,IAR会经过Flashloader将二进制的可履行文件下载到Flash中。下载的方法如下:假如要将程序B下载到片子里,IAR先将一个程序A(IAR事前编好的程序)下载到片内的RAM中,然后使用这个程序A经过JTAG和Flashloader交互完结程序B的下载。

2. 文件在片外Flash中下载

IAR下载进RAM中的程序A有必要支撑片外的Flash,他可以完结片外Flash的擦除。往往这个程序需求自己写。像HJTAG的下载机制也是这样,HJTAG中列举了许多HJTAG支撑的芯片,所谓支撑便是HJTAG很有这些芯片的A程序。在HJTAG中有必要要指定程序A即将下载到的RAM的地址,并且这个地址的RAM有必要是可用的,比方假如用的片外SDRAM的话就有必要初始化SDRAM控制器。这在HJTAG的Init Script中完结、在IAR的mac文件中完结。

3. 文件在片内RAM中下载 、文件在片外RAM中下载

因为这两种方法不需求Flashloader的参加,这时程序的加载时域和运转时域是相同的,程序运转后不触及程序的搬移,所以只要给IAR指定运转时域的RAM地址就行了,假如是内部RAM,那十分省劲,直接在icf文件中将地址都设置成内部RAM就行,假如是外部RAM那么在mac文件中初始化外部SDRAM控制器或许其他的RAM,然后IAR就可以完结将程序放在现已初始化好的外部RAM里,并运转。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部