标题: [求助]将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 |