【经验】如何通过解读M51文件确定EFM8系列的变量、函数定位?
SILICON LABS推出的EFM8系列8位单片机具有集成度高、速度高、体积小等优点,被广泛应用在光模块、无人机、智能家居等产品上。最近有软件工程师问 “我的变量放哪里了?我的代码是如何分配的”问题,为解决这些疑惑,本文特做如下总结,供参考。
当代码编译成功后,变量及代码“在哪里”就都被固定下来了,对于EFM8系列8位单片机来说,这可以在编译后生成的M51文件中可以看到。
如下图1,就是M51文件中DATA变量定位明细部分。它展示了所有的自定义的BIT类型、DATA类型、IDATA类型变量及特殊功能寄存器分配情况,地址从0x00到0xFF。该记录段共分为5列:Type—类型,Base—基地址,Length—长度,Relocation—再定位,Segment Name—段名。其中,“类型”,表示数据类型,比如,BIT型,DATA型,等;“基地址”,表示该类型变量的起始地址;“长度”,表示该类型变量的数量;“再定位”,表示该段的性质;“段名”,表示该变量在源代码中的名称,一般格式表达为“?PR?+函数名+C文件名”或“?PR?+C文件名”。从图1,我们能明确地看到我们的变量分配在哪里了、长度是多少。
图1 Data变量定位明细
在下图2中,是XATA类型变量分配情况,各段定义及格式等与DATA类型情况一致,它的地址可覆盖0x0000到0xFFFF。
图2 XData变量定位明细
如下图3,它展示了CODE空间定位情况。各段定义与图1类似,地址覆盖从0x0000,到0xFFFF。只是在Segment Name这列,它表示:“?PR? + 函数名 + C文件名”;如果该C文件下没有函数,也可以表示:“?PR? + C文件名”;标注是“GAP”的,表示该段是空的、即未被分配代码CODE空间。
图3 Code代码段定位明细
通过对M51文件中如上3个片段的解读,我们可以清晰地看到我们的变量及代码是如何分配的。当我们代码出现BUG时,这些信息对排除BUG将非常有用。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由风起云扬提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】如何下载、安装、设置Silicon Labs 8位单片机集成开发环境IDE?
Silicon Labs的8位单片机集成开发环境IDE,简单、容易、强大,是C8051F及EFM8等8位单片机软件开发的强大利器!为了让新手能够快速上手IDE,本将详细接收Silicon Labs IDE的下载、安装、设置等方法。
设计经验 发布时间 : 2018-09-19
【经验】8位单片机EFM8BB51正确初始化ADC后不工作的问题处理经验
芯科最新推出的8位单片机EFM8BB51,EFM8BB51使用模拟部分功能(比如ADC,比较器),客户往往会忽略AMUXCP的初始化,导致模拟功能不能使用。本文介绍AMUXCP功能的使用。
设计经验 发布时间 : 2023-04-01
【经验】8位单片机EFM8的参考电压Vref引脚用于电压输出功能的经验
在某些应用中,需要一路低电流的电源,例如热敏电阻,为了减少LDO的使用,希望使用MCU的Vref输出电压。本文介绍Silicon Labs 8位MCU Vref输出电压使用有什么后果,需要注意什么。
设计经验 发布时间 : 2019-10-30
【应用】基于双MCU的低成本400G PAM4光模块应用方案
基于双MCU的低成本400G PAM4光模块应用方案采用2个通用MCU,32位的MCU作为DSP的协处理器,8bit的MCU满足多路DAC来控制LD Driver,不但降低了设计难度同时降低了成本。采用多路电源输出解决方案比采用多颗单路电源芯片占用面积更小,且整体成本更低。
应用方案 发布时间 : 2023-11-17
【经验】8位单片机EFM8系列的SFR Page操作
Silicon Labs的8位单片机EFM8系列,集成丰富的外设,高性能,小封装。软件开发时,由于外设多,寄存器操作引入了SFR Page机制,注意SFR Page设置,防止程序错误,让EFM8系列芯片设计出稳定的优质产品。
设计经验 发布时间 : 2019-04-17
【经验】如何配置中微8位单片机CMS80F7519的GPIO为推挽输出
中微半导体的8位单片机CMS80F7519,GPIO的模式配置,在例程中并没有对应的代码,使客户使用时不清楚怎么操作。本文介绍GPIO模式配置的具体实现方式。
设计经验 发布时间 : 2022-10-09
【应用】大大降低转矩脉动?这款MCU是无人机电调的“战斗机”
EFM8BB使无刷直流电动机在运行时产生更低的电流纹波和转矩脉动。
新应用 发布时间 : 2017-01-04
【经验】如何计算8位单片机EFM8LB系列PWM最高输出频率?
在电机驱动、电源发生、可调电压发生等应用中,经常需要PWM波,Silicon Labs推出的高性能、高集成度、小体积、高性价比的EFM8LB系列8位单片机,可广泛应用光模块、电机控制等领域,它支持输出PWM波。本文将详细讲解如何计算EFM8LB系列8位单片机PWM最高输出频率。
设计经验 发布时间 : 2020-02-05
【经验】如何解决8位单片机EFM8BB21F16G串口通信不正常问题?
本文以Silicon Labs的8位单片机EFM8BB21F16G为例,介绍如何通过软件程序置位中断标志位,通过串口中断方式来解决清除前如果有数据到来会引起数据丢失并无法产生中断的方法。
设计经验 发布时间 : 2021-05-19
【经验】8位单片机C2自制烧录器不能用于EFM8问题分析及解决
Silicon Labs公司推出的8位单片机,采用独特的C2调试接口,在占用极少的引脚资源的情况下,实现在线仿真调试,烧录功能,方便软件的开发设计。客户自制C2烧录器,可以更好的用于批量生产。以前用于C8051F系列的自制烧录器如果在EFM8烧写时出现问题,可以根据文章内容进行简单修改,解决烧写问题。
设计经验 发布时间 : 2019-08-02
【经验】如何给Silicon Labs的集成开发环境IDE指定工具链?
Silicon Labs的集成开发环境IDE简单强大,是C8051F及EFM8等8位单片机软件开发的优秀武器。最近有客户问, 如何给Silicon Labs集成开发环境IDE指定工具链?本文总结了2个方法来解决这个问题。
设计经验 发布时间 : 2020-09-29
【经验】低成本8位单片机EFM8BB21在25G SFP28 LR光模块应用中的硬件电路设计注意事项
Silicon Labs推出的EFM8BB21系列8位单片机,具有高速度、高模拟性能、高集成度、小体积、低成本等优点,被广泛应用于光通信、工业控制等领域。本文将详细介绍在25G SFP28 LR光模块应用中EFM8BB21的硬件电路设计注意事项。
设计经验 发布时间 : 2021-03-28
【经验】对EFM8系列8位单片机可编程逻辑单元CLU的作用及应用的理解
Silicon Labs的EFM8系列8位单片机,集成了独特数字外设可编程逻辑单元CLU,让EFM8单片机的功能更加强大。那么,这个CLU的作用及应用是什么呢?本文将详细为你解读。
设计经验 发布时间 : 2019-08-21
【经验】如何基于Production Programmer实现EFM8系列8位单片机HEX文件下载?
当软件工程师调试并测试完毕代码后,下一个步骤,就是交给生产进入下载、生产环节。对于Silicon Labs的8位单片机,产线上下载方式有多种多样。本文将为你介绍一种简单、高效、低成本的下载方式,即基于原厂提供的通用软件“Production Programmer”+ U-EC6的方式。
设计经验 发布时间 : 2019-11-27
【经验】如何正确设置EFM8LB1系列8位单片机的堆栈空间?
Silicon Labs推出的EFM8LB1系列8位单片机,具有集成度高、速度快、模拟性能好及体积小等优点。最近有使用的软件工程师问,为了让EFM8LB1配合DSP工作, 如何扩大它的堆栈空间?本文就将为你讲解。
设计经验 发布时间 : 2021-03-18
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 104,128
现货市场
服务
支持微型计算机 、便携式计算机显示设备、投影仪、打印设备、绘图仪、多用途打印复印机、扫描仪、计算机内置电源、电源适配器、充电器、服务器、收款机等产品中国强制性产品认证。
提交需求>
提供7~27寸工控机定制,支持嵌⼊式/ 壁挂式 /桌⾯式/悬挂式等安装方式,采用纯平⾯板IP65防尘防⽔等级,莫⽒7级硬度触摸屏,兼容多种操作系统:组态软件/安卓/XP/win7/8/10/Linux等,支持主板、接⼝、外观、⽀架、刷卡器、⾝份证阅读器、LOGO、⻨克⻛、系统、电池、蓝⽛、4G/5G、摄像头、GPS系统、⼆维码扫描器、指纹等特殊应⽤场景定制
最小起订量: 1台 提交需求>
登录 | 立即注册
提交评论