【经验】EFM32系列32位MCU常量定位问题的解决方法
SILICON LABS的32位MCU EFM32系列具有低功耗、集成度高的优势,在电池供电类的应用中具有非常明显的优势。开发EFM32的软件一般都是在Simplicty Studio软件下完成,而且目前在开发程序时由于都是使用C语言开发,所以很多工程师已经不再关心变量的存储地址,但对于一些特殊的应用来说还是要考虑这些常量在FLASH的存储地址的,但笔者在网站上找了一些方法发现实现起来比较麻烦,尤其是在使用GNU ARM编译器,网上的一些方法并不是很正确,下面笔者总结了一个方法以供参考,
使用GCC的链接描述文件实现常量的定位功能。以EFM32WG为例,使用Example自动产生的Stk3800_blink.ld文件为模板进行修改,这里要注意要将这个文件从当前的目录中复制到其它目录再做修改。
打开这个Stk3800_blink.ld,找到下面的定义,并增加一个MY_MEMORY的新内存区域
MEMORY,由于此区域只是用于数据存储不需要执行程序,所以设置为rw属性,同时我们还减少了FLASH区域的长度以适应这个新的区域。
{
FLASH (rx) : ORIGIN = 0x0, LENGTH = 0x3FFF0 /* 256k */
RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x8000 /* 32k */
MY_MEMORY (rw) : ORIGIN = 0x3FFF0, LENGTH = 9
}
接下来创建一个名为.mysection的新部分,这一部分会将包含字符串.mysection的section属性的定义放到MY_MEMORY中。我们在__etext=.之后添加这个部分,这样不会影响FLASH的溢出边界检查,添加后的内容如下:
__etext = .;
.mysection :
{
. = ALIGN(4);
__mysection_start__ = .;
*(.mysection*)
__mysection_end__ = .;
} > MY_MEMORY
最后再增加一个溢出边界检查:
ASSERT( LENGTH(MY_MEMORY) >= (__mysection_end__ - __mysection_start__), "MY_MEMORY memory overflowed !")
到这里这个文件就已经修改完成,保存后可以在项目的属性中使用这个指定的链接文件对文件进行编译,链接文件的指定如下图:
在源文件中定义如下的一个数组:
Volatile unsigned char buff2[9] __attribute((section(“.mysection”)))={‘M’,’Y’,’_’,’M’,’E’,’M’,’O’,’R’,’Y’};
对程序编译链接后,在MAP文件中可以找到如下的分配:
*(.mysection*)
.mysection 0x0003fff0 0x9 ./src/blink.o
0x0003fff0 buff2
0x0003fff9 __mysection_end__ = .
到这里可以看到buff2这个数组已经分配到0X0003FFF0开始的地址,我们将程序下载到芯片中,在FLASH MEMORY中可以观察到这些数据:
到此,将常量分配到FLASH的指定地址功能就实现了。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由John提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】如何基于J-FLASH对32位MCU EFM32 进行批量烧写?
Silicon Labs 32位MCU EFM32,以低功耗、高性能等著称,被广泛应用在电池供电等需要低功耗的领域。因应用广泛,在批量烧写上,也得到多家软件支持。本文将详细描述名基于SEGGER的J-Flash软件对EFM32烧写FLASH的方法及步骤。
设计经验 发布时间 : 2018-09-17
【经验】基于EFM32JG1B200F128低功耗32位MCU中RTC在暂态录波型故障指示器无线采样三相同步设计方法
在JYL-60架空暂态录波型远传故障指示器项目开发过程中,考虑到架空线路ABC三相的特殊性,三支架空暂态录波型远传故障指示器分别挂在ABC线路上,无法提供可靠的硬件同步信号,在这样的环境下,无线三相同步技术正好提供了三相同步录波的可能。本文以EFM32JG1B200F128低功耗32位MCU中的RTC,设计了一种无线的三相同步采样方法。
设计经验 发布时间 : 2019-09-21
【经验】对使用SWD接口的32位MCU的内部闪存及用户画面进行编程
本文介绍Silicon Labs独立编程器的硬件与软件,以及详细的用户界面介绍,提供用户进行测试。
设计经验 发布时间 : 2019-03-07
【IC】芯科科技新品PG26 32位MCU系列,大容量存储 + 快速AI/ML推理满足未来的物联网需求
SILICON LABS最新发布的EFM32PG26(PG26)32位微控制器系列通过提升两倍的闪存和RAM容量,以及GPIO的数量来满足各种低功耗和高性能嵌入式物联网应用需求。面向无线连接功能的需求,PG26可作为EFR32xG26多协议无线SoC平台的软件兼容MCU版本,有助于开发人员基于同一平台设计快速且无缝地升级低功耗蓝牙、Matter、Thread、Zigbee或专有无线连接设计。
产品 发布时间 : 2024-04-17
【经验】用STK3700评估板采集EFM32GG低功耗32位MCU外部频率信号完整周期的经验
在调试EFM32GG低功耗32位MCU,想测试外部频率信号的周期,范例程序测试的是按键按下的时间,也就是对应的是半个周期,不是完整的周期信号。针对范例程序做了如下修改(修改部分用红色字体标识),实现了用STK3700评估板对外部频率信号周期时间的计算
设计经验 发布时间 : 2019-05-03
【IC】芯科科技新款32位MCU EFM32和EFM8功能升级,电流可低至1.03µA,小尺寸满足微型设备需求
芯科科技近期发布的新款32位MCU EFM32PG23和8位MCU EFM8BB50产品旨在通过更优化的设计架构来帮助开发人员加速产品原型设计。PG23和BB50不仅进一步扩大了Silicon Labs的MCU产品组合,并且利用小尺寸和低功耗设计满足各种微型、电池设备和物联网应用的需求。
新产品 发布时间 : 2023-04-13
【应用】32位MCU在中高端音频处理系统中的应用
音频信号处理涉及多方面,如采集、去除噪声等等,普通MCU很难用一颗芯片集成如此众多的功能。
新应用 发布时间 : 2017-07-18
【应用】基于低功耗32位MCU EFM32G2X的智能温控器节能解决方案
采用Silicon Labs的ARM Cortex-M3内核EFM32是全球最低功耗的32位MCU,外设丰富,5大超低模式,非常适用于智能温控器。无线WIFI模块采用WGM110,具有卓越的射频性能,并可提供远程范围的稳定无线连接和安全性。
方案 发布时间 : 2019-07-30
【应用】芯科单路电源1.98~3.8V的32位MCU助力消毒柜温湿度探头设计,主频24MHz
最近有一个客户是做温湿度探头的,最近他在找一款MCU是用来作为温湿度探头上面的主控,要求低功耗,性能好,在停止模式(EM3)下电流为0.5μA,32位的MCU,内置12位ADC和比较器,32kb的Flash和4kb的RAM,根据需求推荐芯科32位MCU EFM32ZG110F32-B-QFN24R,该MCU主频在24MHz。
应用方案 发布时间 : 2023-03-29
【经验】32位MCU EFM32ZG与5V系统连接的电平转换接口电路设计
Silicon Labs的EFM32ZG系列是超低功耗和低能耗的32位MCU,在与5V系统连接时,EFM32ZG的GPIO无法直接接到5V的GPIO上,长期工作有引起芯片损坏的风险。因此与5V系统连接时需要依靠外部的电平转换电路保证芯片的可靠工作。本文就将介绍其设计与注意事项。
设计经验 发布时间 : 2020-09-27
【应用】低功耗32位MCU EFM32,实现低成本医疗内窥镜
电子内窥镜少不了这一款逆天MCU-- EFM32,其集成的USB-HOST接口,结合Cortex-M4内核的高效运算能力以及DSP指令和浮点运算单元,能够很轻松执行图像处理任务,EFM32具有丰富的外设,为系统扩展功能及降低成本提供了条件。
新应用 发布时间 : 2019-07-15
【应用】芯科科技提供内置16位ADC的低功耗32位MCU助力蓝牙耳机,主频高达80MHz
蓝牙耳机的系统设计需要选型一款MCU,要求尺寸小,效率高,待机功耗低。本文推荐SILICON LABS推出的低功耗32位MCU EFM32PG23B210F256IM48-C,主频高达80MHz,具有DSP指令和浮点单元,具有性能灵活的16位的数转换器。
应用方案 发布时间 : 2023-03-14
【应用】功耗电流仅900nA的32位MCU在GPS定位器上的应用
相对于传统的8位、16位单片机实现的GPS追踪器,基于EFM32JG实现的本方案具有超低功耗、集成度高和扩展性良好的优势。
新应用 发布时间 : 2019-09-05
【应用】高性能32位MCU EFM32为低功耗TFT控制器提供高端图形用户界面(GUI)
典型的现代显示器需要控制昂贵且功能强大的高端MCU,同时也消耗了相当大的功率。为解决MCU问题,Silicon Labs给出了更高效的解决方案,其设计的EFM32微控制器能够在片上直接驱动TFT外设,以提供低成本的高性能显示驱动功能,同时仍然消耗尽可能少的功耗。。Flash资源从16KB~128KB,RAM资源从8KB~16KB,同系列不同型号的芯片均为pin-pin兼容。
应用方案 发布时间 : 2018-10-28
【应用】高算力低功耗32位MCU EFM32PG22C200F64IM32助力汽车仪表盘设计,功耗仅26μA/MHz
汽车仪表盘通过安装在车上各部位的传感器数据汇集到仪表盘上显示出来的。主要有发动机转速、车速、燃油位等相关信息,因为处理信息的复杂度及安全性的要求,对主控制芯片有较高的要求。本项目需要一款高算力低功耗的MCU,本文推荐芯科的控制器方案。
应用方案 发布时间 : 2022-12-11
电子商城
现货市场
服务
可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。
最小起订量: 1000 提交需求>
提供全面表征产品器件耗电特征及功耗波形、快速瞬态效应、电源优化、表征和仿真测试服务,使用直流电源分析仪测量精度达50µV,8nA,波形发生器带宽100kHz,输出功率300W,示波器200kHz,512 kpts
实验室地址: 深圳/苏州 提交需求>
登录 | 立即注册
提交评论