xiaoyuhzou1228的个人空间 https://www.eechina.com/space-uid-139997.html [收藏] [复制] [RSS]

博客

嵌入式编程第一篇:51单片机如何将函数定义到指定程序地址

热度 10已有 1024 次阅读2019-3-22 10:00

定义到指定程序地址

在单片机编程使用中,会涉及到将某些函数定义到指定的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中的函数地址进行更改。

 

 


路过

鸡蛋

鲜花

握手

雷人

发表评论 评论 (21 个评论)

回复 小屁孩123 2019-3-25 14:09
LKT4106 是什么接口的芯片呢?支持什么算法?
回复 ?-о 2019-3-25 16:08
这款是IIC接口,支持DES/3DES,性价比很高
回复 wang0327 2019-3-25 16:21
专业性太强了,看不懂,还是请大神来讲解一下吧
回复 kessy1 2019-3-25 16:32
图文并茂,讲得很详细;让我对单片机编程中的函数运用有了更深的了解,谢谢分享,会继续拜读楼主的文章
回复 Mr.Wang 2019-3-25 16:59
楼主,我问下,测试环境中的加密芯片算法工程在哪儿可以下载,我想继续深入研究一下!
回复 xiaoyuhzou1228 2019-3-25 20:26
可以向公司申请样片
回复 miniminimini 2019-3-26 08:49
这种资料网上肯定没有,得找原厂要的
回复 Test_wf 2019-3-26 13:55
楼主文章中提到的LKT4106加密芯片是你们的主打加密芯片吗?有啥功能?
回复 QL87 2019-3-26 18:42
我了解到这个公司有根据不同的接口,是有很多产品线的。具体要根据项目需求选取最适合自己的芯片,并不是非得一定要选取主打不主打。
回复 tyl20100 2019-3-27 09:06
我公司的客户使用的是LKT4101,据说用的挺好的
回复 小屁孩123 2019-3-27 09:20
这个LKT4106是单片机吗?哪家公司的产品,为什么之前没有遇到过呢?
回复 ?-о 2019-3-27 17:47
LKT4106是加密芯片,凌科芯安的,好像去年新推出的IIC接口
回复 Mr.Wang 2019-3-27 19:51
文章基本看明白了,但是谁能说说LKT4106是怎么用的?在什么场合下用?有什么用途??
回复 kessy1 2019-3-27 20:48
我司用过这个4106,主要使用与算法移植,试用与嵌入式版权保护,可以实现简单的对比认证、参数保护、算法移植等功能
回复 Test_wf 2019-3-27 21:51
应该讲讲变量怎么定义到固定地址
回复 tyl20100 2019-3-28 08:54
楼主所说的LKT4106加密芯片和以往介绍的加密芯片有什么不同之处吗?
回复 QL87 2019-3-28 16:44
tyl20100: 楼主所说的LKT4106加密芯片和以往介绍的加密芯片有什么不同之处吗?
功能都是一样的,只是通讯接口不同。
回复 wang0327 2019-3-28 16:55
code区是属于自定义算法区吗?
回复 miniminimini 2019-3-28 17:01
code区,即程序存储区,这么理解也对
回复 dg336699 2019-3-28 17:16
文章很好,很受用,开始期待楼主的下一篇文章,如何将ARM中的函数地址进行更改。
12下一页

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部