首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[求助]将ROM中程序COPY到RAM区运行时的问题

[求助]将ROM中程序COPY到RAM区运行时的问题

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


在cw默认设置下


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


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


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


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


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


这怎么解决呀?

你在main()中将fun()copy到ram中的时候应该会用到fun()的函数名,这样fun()就会放在你所定义的空间里面了。 不知道你是怎么把fun()函数放到RAM中的。
没有啊
用指针  楼上的怎么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编辑过]

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

srcPtr = (unsigned int *)&func;

多谢2楼的提醒
返回列表