如何将函数和变量定义到指定位置

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式编程第一篇:51单片机如何将函数
定义到指定程序地址
在单片机编程使用中,会涉及到将某些函数定义到指定的code区。

此时需要对工程文件进行配置修改才可完成。

本期针对单片机平台做出说明介绍
1、测试目标
将函数testaddr定义到0x6000地址
2、测试环境
LKT4106加密芯片算法工程、KEIL-C51编译软件、
3、实现步骤
3.1 使用KEIL软件导入LKT4106算法工程(KEIL软件基本操作不再敷述,如不
清楚请自行百度)
3.2 在App_Main.c文件中声明测试函数testaddr:
extern void testaddr(u8 xdata *in,u8 xdata *out,u8 len);
3.3 在App_fun.c文件中实现测试函数testaddr:
void testaddr(u8 xdata *in,u8 xdata *out,u8 len){
u8 i;
for(i=0;i < len;i++)
out[i]= in[i]+1;
}
3.4 在App_Main.c文件中调用测试函数testaddr,此处省略
3.5 编译算法工程后,在\LKT4106_AppDemo\Out\Bin\路径下找到
LKT4106_AppDemo.M51,打开该文件。

3.6 找到* * C O D E M E M O R Y * * 部分,寻找到testaddr编译后存储的地址,
注意:根据编译规则,testaddr函数会转换为大写格式,并加上函数所在文件的名称。

本例中,编译后的默认地址如图1所示。

图1. 默认编译链接地址
3.7 回到算法工程,选择Project->Options for Target ...->BL51 Misc,点击Edit
按钮调出lin文件,如图2所示
图2. 打开lin文件
3.8 在LKT4106_App.lin文件中,按照下图所示,将testaddr函数指定到程序区的目标地址,本例将其由默认的0x48B0地址更改到0x6000地址,如图3所示。

图3. 更改目标函数存储的地址
3.9 编译算法工程,并重新打开LKT4106_AppDemo.M51文件,查看testaddr函数所在地址,如图4所示,该函数已经更换到0x6000地址上。

图4. 重定义后目标函数所在地址
至此,51单片机将函数定义到指定程序地址的方法已经实现。

下一篇将介绍如何将ARM中的函数地址进行更改。

相关文档
最新文档