如何指定 一个运行域在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就可以擦写,也就是更新程序!
希望大神能够帮忙,谢谢!谢谢!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
今天刚好闲着没事隔了一年登上来了,告诉你吧
把加载域设置在ROM里面,把运行域设置在RAM里面
例如
LR_BIOS_Code 0x08002500 0x100 { ; load address = execution address
ER_BIOS1 0x20000700 0x100 {
bios.o(Program_code)
}
}
我会把很早之前的代码传上来,你自己再学学里面的sct文件,学学map, 在自己板子上跑跑,程序很短
---------------------------------
多谢。学习啦。嘿嘿
一周热门 更多>