在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3673|回复: 20

[原创] 嵌入式编程(二):ARM单片机如何将函数定义到指定程序地址

[复制链接]
发表于 2019-4-11 09:19:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
单片机编程使用中,会涉及到将某些函数定义到指定的code区。此时需要对工程文件进行配置修改才可完成。本期针对arm平台单片机做出说明介绍
1.测试目标
将函数Communication_Test定义到Code区的指定地址0x1000位置
2.测试环境
LKT4304加密芯片算法工程、KEIL-ARM编译软件、
3.实现步骤
3.1 使用KEIL软件导入LKT4304算法工程(KEIL软件基本操作不再敷述,如不清楚请自行百度)
3.2 在App_Main.c文件中声明测试函数Communication_Test:
extern void Communication_Test(u8 *in,u8 *out,u8 len);
3.3 在App_fun.c文件中实现测试函数Communication_Test:
void Communication_Test(u8 *in,u8 *out,u8 len);{
  u8 i;
  for(i=0;i < len;i++)
   out= in+1;
}
3.4 在App_Main.c文件中调用测试函数Communication_Test,此处省略
3.5 编译算法工程后,在\LKT4304_AppDemo\Out\Lst\路径下找到    LKT4304_AppDemo.map,打开该文件。
3.6 寻找到Communication_Test编译后存储的地址。本例中,编译后的默认地址如 图1所示。

图片1.jpg
                                                                                              图1. 默认编译链接地址

3.7 回到算法工程,选择Project->Options for Target ...->Linker,点击Edit按钮调 出 sc文件,如图2所示

图片2.jpg
                                                                                                        图2. 打开sc文件

3.8 在ARM_App.sc文件中,Code区起始地址是0x30000,如下图所示:

图片3.jpg
                                                                                      图3.sc文件中定义的Code区

  将函数Communication_Test定义到Code区的指定地址0x1000位置,需要在 App_fun.c文件中增加 void Communication_Test(u8  *in,u8 *out,u8 len)   __attribute__((section(".ARM.__at_0x00031000"))); 这样一句代码。如下图所示:
图片4.jpg
3.9 编译算法工程,并重新打开\LKT4304_AppDemo\Out\Lst\下的map文件,查看 Communication_Test函数所在地址,如图4所示,该函数已经更换到0x31000地址上, 表明Communication_Test函数已经定义到Code区的0x1000地址。
图片5.jpg

                                                                                          图4. 重定义后目标函数所在地址
至此,ARM单片机将函数定义到指定程序地址的方法已经实现。
发表于 2019-4-11 14:21:51 | 显示全部楼层
LKT4304 Code区空间是多大的?
发表于 2019-4-11 16:21:05 | 显示全部楼层
专业性太强了,看不懂!当技术储备吧!学习了………
发表于 2019-4-11 17:03:21 来自手机 | 显示全部楼层
同感,受教了,谢谢楼主分享的分享!
发表于 2019-4-11 18:37:22 | 显示全部楼层
请问4304都支持什么接口?
头像被屏蔽
发表于 2019-4-12 08:57:12 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2019-4-12 12:28:44 | 显示全部楼层
我对这个技术很感兴趣,我会一直关注的
头像被屏蔽
发表于 2019-4-12 14:28:15 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2019-4-12 17:03:11 | 显示全部楼层
保护程序和重要数据都行,好多行业都能用到。
头像被屏蔽
发表于 2019-4-12 17:27:26 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-2 18:16 , Processed in 0.027945 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表