Board logo

标题: [求助]将ROM中程序COPY到RAM区运行时的问题 [打印本页]

作者: kbfz2008    时间: 2006-3-13 10:12     标题: [求助]将ROM中程序COPY到RAM区运行时的问题

最近碰到一个问题 想请教各位大侠~


在cw默认设置下


将一个函数 func() 用 #pragma 声明  将其放在固定的ROM区里,比如 0xFD00 - 0xFDFF


我在main里 将 func() 拷贝到 RAM 区里面去运行


这样的话 我在 main() 里当然不会调用 fun()


但是这样我烧写程序以后 居然发现在 0xFD00 开头的 ROM 里   什么都没有


就是说编译器认为这个函数没有用 被优化掉了。。。我晕


这怎么解决呀?


作者: seuafu2005    时间: 2006-3-13 10:54

你在main()中将fun()copy到ram中的时候应该会用到fun()的函数名,这样fun()就会放在你所定义的空间里面了。 不知道你是怎么把fun()函数放到RAM中的。
作者: kbfz2008    时间: 2006-3-13 11:03

没有啊
用指针  楼上的怎么copy的?

void CopyInRAM(void)
{
word *srcPtr, *dstPtr;
word count;

srcPtr = (unsigned int *)0xFD00;

dstPtr = (unsigned int *)0x0340;

for (count = 0; count < 250; count++, dstPtr++,srcPtr++)
{
*dstPtr = *srcPtr;
}
}

[此贴子已经被作者于2006-3-13 11:03:54编辑过]


作者: kbfz2008    时间: 2006-3-13 11:20

啊 知道了 可以直接调用函数地址

srcPtr = (unsigned int *)&func;

多谢2楼的提醒




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0