在单片机编程使用中,会涉及到将某些函数定义到指定的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[i]= in[i]+1;

}

3.4 在App_Main.c文件中调用测试函数Communication_Test,此处省略

3.5 编译算法工程后,在\LKT4304_AppDemo\Out\Lst\路径下找到 LKT4304_AppDemo.map,打开该文件。

3.6 寻找到Communication_Test编译后存储的地址。本例中,编译后的默认地址如 图1所示。

图1. 默认编译链接地址

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

图2. 打开sc文件

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

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

将函数Communication_Test定义到Code区的指定地址0x1000位置,需要在 App_fun.c文件中增加 void Communication_Test(u8  *in,u8 *out,u8 len) __attribute__((section(".ARM.__at_0x00031000"))); 这样一句代码。如下图所示:

3.9 编译算法工程,并重新打开\LKT4304_AppDemo\Out\Lst\下的map文件,查看 Communication_Test函数所在地址,如图4所示,该函数已经更换到0x31000地址上, 表明Communication_Test函数已经定义到Code区的0x1000地址。

图4. 重定义后目标函数所在地址

至此,ARM单片机将函数定义到指定程序地址的方法已经实现

嵌入式编程(二):ARM单片机如何将函数 定义到指定程序地址相关推荐

  1. 51单片机如何用c语言位定义,嵌入式编程(一):51单片机如何将函数 定义到指定程序地址...

    在单片机编程使用中,会涉及到将某些函数定义到指定的code区.此时需要对工程文件进行配置修改才可完成.本期针对单片机平台做出说明介绍 1.测试目标 将函数testaddr定义到0x6000地址 2.测 ...

  2. 嵌入式编程(一):51单片机如何将函数 定义到指定程序地址

    在单片机编程使用中,会涉及到将某些函数定义到指定的code区.此时需要对工程文件进行配置修改才可完成.本期针对单片机平台做出说明介绍 1.测试目标 将函数testaddr定义到0x6000地址 2.测 ...

  3. C++ 编程基础练习——void型的函数定义

    请给出一个void函数的定义,该函数有三个int类型的形参,并将这三个数的乘积输出到屏幕上.编写一个完整的程序对该函数进行测试. #include <iostream> using nam ...

  4. 【单片机高阶编程】51单片机定义函数到指定的程序地址

    51单片机如何将函数 定义到指定程序地址 在单片机编程使用中,会涉及到将某些函数定义到指定的code区.此时需要对工程文件进行配置修改才可完成.本期针对单片机平台做出说明介绍 1.测试目标 将函数te ...

  5. c语言单片机常用函数,C51单片机C语言函数编辑 -单片机-电子工程世界网

    其实一直出现在例子中的 main()也算是一个函数,只不过它比较特殊,编译时以它做为程序的开始段.有了函数C 语言就有了模块化的优点,一般功能较多的程序,会在编写程序时把每项单独的功能分成数个子程序模 ...

  6. 函数返回引用什么意思_【20200917】编程入门第七课,函数(function)

    介绍 介绍 福哥今天要给大家讲讲编程里的重头戏--函数(function),有了函数,程序才是程序,为什么这么说呢?因为如果没有函数语法,所有重复工作(包括类似工作)都要重复编写代码,那样就失去了编程 ...

  7. Python学习笔记 - 探索函数定义和使用

    大家好,我是Mr数据杨,你们有没有读过<三国演义>呢?没错,将以这个经典的古代战争史诗为引,来探索Python的诸多神奇之处. 首先来说说函数的重要性.诸葛亮一生献出了不少锦囊妙计,这些计 ...

  8. 菜鸟学编程,用x86二手本学习嵌入式编程(硬件编程)

    最近一直忙着上课,一直忙着写论文,一直忙着准备考试,但是脑子没有停止思考. 下学是结合个人的学习经历,给希望学习软件的菜鸟一点点帮助. 1:菜鸟也想学编程 大部分同学从大学开始接触软件编程,但其实有一 ...

  9. 嵌入式牛人 | 这些单片机编程思想超硬核

    来源:面包板社区,整理:晓宇 微信公众号:芯片之家(ID:chiphome-dy) 01 裸编程是什么? 先声明一个概念,裸编程,指的是在裸机上编写程序,裸机,在单片机领域就是指带着硬件的单片机控制系 ...

最新文章

  1. 超越EfficientNet,GPU上加速5倍,何恺明组CVPR 2020论文提出新型网络设计范式
  2. pytest接口测试之fixture传参数request
  3. 求介绍matlab函数用法的书,MATLAB初学者教程--函数用法的简单介绍
  4. JqueryMobile链接一个页面,而链接页面中图片需刷新才显示的问题
  5. 小米kali linux蓝牙,小米筆記本在Kali Linux下所遇問題部分解決方案(持續更新中)...
  6. 任何时候,写下一个类,一定要有三个函数
  7. 应用实例_兴达奇智能燃烧控制器BMU460DP现场应用实例图
  8. 推荐一款ORM工具 FOR ADOBE AIR
  9. oppo a57刷机成功教程
  10. 成分句法分析 依存句法分析 Parsing 知识图谱
  11. Eclipse12:CookieSession
  12. 百万比亚迪仰望出圈靠的不止技术
  13. 回溯——机器零件加工最优加工顺序问题
  14. 图像分割算法实现(matlab/python)
  15. mitm 和嗅探攻击_中间人攻击(MITM)第2部分-数据包嗅探器
  16. 使用Matlab对Excel数据画对比图
  17. sw2urdf使用探索
  18. 如何在Windows中调整ClearType以提高屏幕可读性
  19. hadoop如何使用linux命令,hadoop命令_Linux使用hadoop dfs命令的方法
  20. Bigemap-支持电子地图

热门文章

  1. 5G 时代连接 70 亿人,安全如何保障?
  2. 我如何用 21 天在 GitHub 上获取 6300 个 Star?
  3. 如何避免面试现场被虐?
  4. 禁止“挖矿”!谷歌杀了所有的 Chrome 扩展应用
  5. 织梦Cms怎么一直服务器维护中,织梦后台搜索关键词维护中出现大量网址信息的处理办法...
  6. 软件开发模式之敏捷开发
  7. c语言实现的optics算法,基于深度学习的光学系统设计方法
  8. python 高并发http客户端_python高并发部署方案
  9. python中如何导入sklearn_Python中常用包——sklearn主要模块和基本使用方法
  10. 纳税人基本信息与服务器端基本信息不符,网上报税对浏览器有什么要求吗