关于keil的分散加载文件,求大神指教,急急急!!!

2019-07-20 23:55发布

 如何指定    一个运行域在RAM的section    的加载域中ROM的位置。 细节描述:举例说明 第一,首先C文件内定义一个section #pragma arm section code  = “Test” void  funtion (void ) { ....... } 第二,在分散加载文件sct内指定section Test运行域为0x20000400 LR....0x80000000{      .....       ER....0x20000400 {        *.o( Test )        } } 第三,编译后看我们的MAP文件,发现function函数的入口地址在RAM中,即section Test的运行域在RAM,这刚好是我想要的 第四,问题来了:如果我想把程序下载到目标板ROM里面运行,          必须在运行funtion之前,把   function 从他的加载域即ROM里面   拷贝到 运行域RAM里面,否则程序会跑飞( 原因不多说)。           那么我该怎样得到section Test的加载域的地址呢?          更进一步,我该怎样指定section Test的加载域在ROM中存放的位置,然后同时把section Test的运行域指定在RAM运行。         (PS,关于这个问题,已经在IAR上实现,但是在keil上却不知道怎么办) 如果这个问题得到解决,大家可想,当我希望运行某一段程序时,就把它从ROM拷到RAM里,然后再把ROM就可以擦写,也就是更新程序! 希望大神能够帮忙,谢谢!谢谢!!!         
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-07-21 01:24
帮顶
oooiou
2楼-- · 2019-07-21 03:09
 精彩回答 2  元偷偷看……
IRLCANDO
3楼-- · 2019-07-21 06:22
回复【3楼】oooiou:
---------------------------------
今天刚好闲着没事隔了一年登上来了,告诉你吧
把加载域设置在ROM里面,把运行域设置在RAM里面
例如
LR_BIOS_Code 0x08002500 0x100  {  ; load address = execution address
ER_BIOS1 0x20000700 0x100 {
    bios.o(Program_code)
    }
}
我会把很早之前的代码传上来,你自己再学学里面的sct文件,学学map, 在自己板子上跑跑,程序很短
IRLCANDO
4楼-- · 2019-07-21 11:11
sct分散加载文件的编写例程,供大家研究
oooiou
5楼-- · 2019-07-21 11:49
回复【5楼】IRLCANDO:
---------------------------------
多谢。学习啦。嘿嘿
正点原子
6楼-- · 2019-07-21 12:16
 精彩回答 2  元偷偷看……

一周热门 更多>