您好, 登录| 注册|
论坛导航
您好, 登录| 注册|
子站:
论坛首页    单片机MCU/嵌入式
  •  发帖
  • 收藏

嵌入式编程第一篇:51单片机如何将函数 定义到指定程序地址
阅读: 805 |  回复: 21 楼层直达

2019/03/22 10:20:32
1
大卫是谁
电源币:0 | 积分:3 主题帖:2 | 回复帖:5
LV2
班长

QQ截图20160321155901 内容精选】管理员精心选择的优质内容 快来讨论吧


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

标签 51单片机
2019/03/22 12:42:50
2
gxg1122
电源币:1202 | 积分:12 主题帖:160 | 回复帖:1486
LV9
军长
期待更新  。
2019/03/25 14:11:07
3
小屁孩456
电源币:5 | 积分:6 主题帖:0 | 回复帖:48
LV4
连长
LKT4106 是什么接口的芯片呢?支持什么算法?
2019/03/25 16:12:38
4
小帆儿
电源币:5 | 积分:1 主题帖:12 | 回复帖:41
LV4
连长
这款是IIC接口,支持DES/3DES,性价比很高
2019/03/25 16:24:16
5
114W1
电源币:3 | 积分:3 主题帖:1 | 回复帖:65
LV4
连长
专业性太强了,看不懂,还是请大神来讲解一下吧
2019/03/25 16:40:20
6
邓女士
电源币:10 | 积分:6 主题帖:1 | 回复帖:57
LV4
连长
图文并茂,讲得很详细;让我对单片机编程中的函数运用有了更深的了解,谢谢分享,会继续拜读楼主的文章
2019/03/25 17:01:23
7
Mr_Wang_
电源币:10 | 积分:3 主题帖:3 | 回复帖:61
LV4
连长
楼主,我问下,测试环境中的加密芯片算法工程在哪儿可以下载,我想继续深入研究一下!
2019/03/25 20:22:50
8
宇宙王
电源币:5 | 积分:2 主题帖:15 | 回复帖:22
LV4
连长
可以向公司申请样片
2019/03/26 13:32:02
9
miniminimini
电源币:5 | 积分:3 主题帖:3 | 回复帖:54
LV4
连长
这种的网上不会有,得找代理或原厂要资料
2019/03/26 13:56:41
10
Hex315
电源币:5 | 积分:1 主题帖:5 | 回复帖:63
LV4
连长
楼主文章中提到的LKT4106加密芯片是你们的主打加密芯片吗?有啥功能?
2019/03/26 18:41:46
11
BLoun
电源币:5 | 积分:12 主题帖:2 | 回复帖:54
LV4
连长
我了解到这个公司有根据不同的接口,是有很多产品线的。具体要根据项目需求选取最适合自己的芯片,并不是非得一定要选取主打不主打。
2019/03/27 09:09:17
12
人称福爷
电源币:5 | 积分:3 主题帖:2 | 回复帖:47
LV4
连长
我gongsi的客户使用的是LKT4101,据说用的挺好的
2019/03/27 09:24:22
13
小屁孩456
电源币:5 | 积分:6 主题帖:0 | 回复帖:48
LV4
连长
这个LKT4106是单片机吗?哪家公司的产品,为什么之前没有遇到过呢?
2019/03/27 17:48:07
14
lingkes2006
电源币:3 | 积分:0 主题帖:16 | 回复帖:7
LV3
排长
LKT4106是加密芯片,凌科芯安的,好像去年新推出的IIC接口
2019/03/27 19:54:09
15
Mr_Wang_
电源币:10 | 积分:3 主题帖:3 | 回复帖:61
LV4
连长
文章基本看明白了。但谁能说说LKT4106是怎么用的?在什么场合下用?有什么用途??
2019/03/27 20:52:36
16
邓女士
电源币:10 | 积分:6 主题帖:1 | 回复帖:57
LV4
连长
我司用过这个4106,主要使用与算法移植,试用与嵌入式版权保护,可以实现简单的对比认证、参数保护、算法移植等功能
2019/03/27 21:48:41
17
Hex315
电源币:5 | 积分:1 主题帖:5 | 回复帖:63
LV4
连长
应该讲讲变量怎么定义到固定地址
2019/03/28 08:56:01
18
人称福爷
电源币:5 | 积分:3 主题帖:2 | 回复帖:47
LV4
连长
楼主所说的LKT4106加密芯片和以往介绍的加密芯片有什么不同之处吗?
2019/03/28 16:45:26
19
BLoun
电源币:5 | 积分:12 主题帖:2 | 回复帖:54
LV4
连长
功能都是一样的,只是通讯接口不同。
2019/03/28 16:57:14
20
114W1
电源币:3 | 积分:3 主题帖:1 | 回复帖:65
LV4
连长
code区是属于自定义算法区吗?
2019/03/28 17:03:17
21
miniminimini
电源币:5 | 积分:3 主题帖:3 | 回复帖:54
LV4
连长
CODE区就是程序存储区,你这么理解也没错
2019/03/28 17:20:47
22
阿伦学
电源币:0 | 积分:3 主题帖:3 | 回复帖:9
LV2
班长
文章很好,很受用,开始期待楼主的下一篇文章,如何将ARM中的函数地址进行更改。
该帖有赏
客服热线
服务时间:周一至周五9:00-18:00
微信关注
免费技术研讨会
获取一手干货分享

互联网违法不良信息举报

Reporting Internet Illegal and Bad Information
editor@netbroad.com
400-003-2006