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

[求助]

[求助]

如何把C函数定位?
我们需要在汇编代码中调用C函数,而且要求C函数地址固定.在codeworriar中如何固定C函数位置?
手册中有这样的声明方法。
一种是宏定义方式:
#define erase ((void(*)(void))(0xfc06))  
void main(void) {
  erase(); /* call function at address 0xfc06 */
}
还有一种:
void * erase(void)=void (*) erase(0xfc06)

但是这只是提供了调用ROM中固定地址函数的方法,实际是如何使C函数固定在ROM中的某一个位置???
我要注册!!
可以在prm文件中开辟一个空间存放你的函数
比如说地址$1000-$1100,命名为erase_Rom
在程序中
#pragma Code_SEG  erase_Rom
Void erase(void)
{
......
}
我只想固定函数的入口地址,使用#pragma方式,是把整个函数放在某个空间,入口可能是固定的(我试过的情况是固定的,但不能保证其他所有情况都是这样的),但是空间大小也固定,函数大小要提前估计,另外,以后对函数进行更新也会有问题。
我是想,只固定函数入口地址,其他的事让编译器去做吧,空间如何分配不去管他。
我要注册!!
返回列表