KEIL怎么将函数放到指定地址

KEIL怎么将函数放到指定地址,第1张

那要看你的Keil究竟是指51工具链还是ARM工具链。

如果是ARM,需要修改分散加载文件,在指定的位置新增Section,之后在你的程序中声明将函数放在该Section中。

如果是51,那么在选项卡的Linker页面,在连接参数行添加参数,指定你那个函数块的绝对地址就行。

在要指定代码的存储空间不是一件特别简单的事情,尤其是你想为某个或某几个函数指定具体的地址。

1,编译器只有在最终的Link阶段才会为代码和数据分配内存地址,因此指定代码段的地址一般是通过写一个link脚本来进行的。Link阶段时,编译器的Linker会读取你写的Link脚本,并且按照脚本的规定给代码分配地址。

2,根据ARM开发工具的不同,link脚本的语法和形式也有所不同。ARM MDK,ARM ADS,Eclips+GCC,Linux GCC, ARM Realview等开发工具都支持Link脚本。

如果你英文还可以,建议你直接找到开发工具的Help手册去研究。如果你英语实在不行,也可以把开发工具名称和你代码的具体情况告诉我,我帮你看看。

把变量 myvar 定义在 idata 的 0x40 处, 在 M51 文件中可以找到这麽一行

IDATA 0040H 0001H ABSOLUTE

表示有变量在 idata 的 0x0040 处绝对地址定位.

2)使用 KeilC 编译器定义绝对地址的变量, 方法待查.

2. 函数绝对地址定位

1)在程序中编写一函数 myTest

void myTest(void)

{

// Add your code here

}

2)使用 KeilC 编译器定位绝对地址的函数, 打开 Project ->Options for Target 菜单,

选中 BL51 Locate 选项卡, 在 Code: 中输入:

?PR?myTest?MAIN(0x4000)

把函数 myTest 定位到程序区的 0x4000 处,

再次编译就可以了.

3)一次定位多个函数的方法


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8024537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存