[求助]将ROM中程序COPY到RAM区运行时的问题
- UID
- 133244
- 性别
- 男
|
[求助]将ROM中程序COPY到RAM区运行时的问题
最近碰到一个问题 想请教各位大侠~
在cw默认设置下
将一个函数 func() 用 #pragma 声明 将其放在固定的ROM区里,比如 0xFD00 - 0xFDFF
我在main里 将 func() 拷贝到 RAM 区里面去运行
这样的话 我在 main() 里当然不会调用 fun()
但是这样我烧写程序以后 居然发现在 0xFD00 开头的 ROM 里 什么都没有
就是说编译器认为这个函数没有用 被优化掉了。。。我晕
这怎么解决呀? |
|
|
|
|
|
- UID
- 104631
- 性别
- 男
|
你在main()中将fun()copy到ram中的时候应该会用到fun()的函数名,这样fun()就会放在你所定义的空间里面了。 不知道你是怎么把fun()函数放到RAM中的。 |
|
|
|
|
|
- UID
- 133244
- 性别
- 男
|
没有啊 用指针 楼上的怎么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编辑过] |
|
|
|
|
|
- UID
- 133244
- 性别
- 男
|
啊 知道了 可以直接调用函数地址
srcPtr = (unsigned int *)&func;
多谢2楼的提醒 |
|
|
|
|
|