杭州论坛网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1345|回复: 1
打印 上一主题 下一主题

嵌入式編程(一):51单片機如何将函数

[复制链接]
跳转到指定楼层
楼主
发表于 2020-3-11 19:02:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    3.6找到**CODEMEMORY**部分,寻找到testaddr编译后3.6找到**CODEMEMORY**部分,寻找到testaddr编译后3.7回到算法工程,选择Project->OptionsforTarge3.8在LKT4106_App.lin文件中,按照下图所示,將testa3.9编译算法工程,并重新打开LKT4106_AppDemo.M51文件



    3.6找到**CODEMEMORY**部分,寻找到testaddr编譯后3.7回到算法工程,选择Project->OptionsforTarge3.8在LKT4106_App.lin文件中,按照下圖所示,將testa3.9编译算法工程,并重新打开LKT4106_AppDemo.M51文件




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


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享
回复

使用道具 举报

沙发
发表于 2020-3-11 19:02:17 | 只看该作者
LKT4106 是什么接口的芯片呢?支持什么算法?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|联系我们|杭州网

GMT+8, 2024-5-17 09:55 , Processed in 0.109375 second(s), 17 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表