【经验】修改无线蓝牙SoC EFR32BG22蓝牙程序的堆栈大小的方法
我们在使用SILICON LABS无线蓝牙SoC EFR32BG22写程序时,多数时候会使用默认堆栈的设置,程序运行起来也是正常的,但偶尔会出现设置变量过多时会引起程序运行异常的现象,那我们要如何解决这个问题呢?本文将为你解答。
首先,我们要先明确堆栈的概念是什么,程序在运行中是如何使用堆栈空间的。在EFR32BG22的程序中堆和栈是分开的两个概念,栈(Stack)的空间是划分给程序指针、局部变量使用的,如果我们在程序中分配的局部变量(数组)较多时要考虑修改栈的大小。堆(heap)是分配给程序中使用malloc动态分配内存空间使用的。除了这两部分之外就是全局变量占用的空间,全局变量占用的是堆、栈之外的空间,在编译器编译时一同划分RAM的空间。
通常堆、栈的空间的划分是由系统启动文件中的代码分配的,而在EFR32BG22的蓝牙程序中设置了sl_memory_config.h这个头文件(默认路径在项目的config目录)专用于堆、栈的分配,所以我们设置堆栈就更方便了,在这个头文件中默认分配的代码如下:
#ifndef SL_STACK_SIZE
#define SL_STACK_SIZE 2752
#endif
ifndef SL_HEAP_SIZE
#define SL_HEAP_SIZE 9200
#endif栈
其中栈分配的是2752字节,这个是实际分配给程序使用的栈大小。而堆分配的9200字节是堆占用的最小空间,编译器在编译时分本的堆的大小不能小于这个设置。蓝牙协议栈中要使用堆分配的空间,按默认分配编译出来的结果如下:
.stack 2752 536870912
.data 1040 536873664
.bss 6768 536874704
.heap 22208 536881472
其中栈是2752,就是头文件中分配的数量,而堆是22208字节,也就是编译器将全局变量、栈所占用的以外空间都分配给了堆,如果我们在程序中没有使用malloc分配空间而是使用局部变量,那最好是将栈的空间加大一些,只要保证堆的最小空间不小于9200就可以了,这样就不会出现程序在运行的过程中由于栈溢出而导致的程序异常了。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由John提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】STUDIO V5中蓝牙SoC EFR32BG22添加串口LOG打印的方法
在调试Silicon Labs蓝牙SoC EFR32BG22时,一般需要添加LOG打印信息,通过串口的方式来判断代码运行是否正常。由于使用RTT功能在打印信息时无法再次在线调试和代码下载,所以直接采用串口的方式更加便捷。
设计经验 发布时间 : 2021-06-30
【经验】芯科科技EFR32BG22系列蓝牙SOC修改自定义广播包的思路与具体实例
在蓝牙的实际应用中,往往需要自定义的蓝牙广播包来适应不同的应用环境,本文主要介绍基于SILICON LABS的EFR32BG22蓝牙SOC实现自定义广播数据包的方法。
设计经验 发布时间 : 2023-03-16
【经验】Simplicity Studio v5如何创建和配置EFR32BG22 LED Server
本文以Silicon Labs的蓝牙SoC EFR32BG22 Thunderboard模块为例,介绍Simplicity Studio v5软件如何创建和配置EFR32BG22 LED Server,并使用手机APP控制EFR32BG22蓝牙模块上LED的方法。
设计经验 发布时间 : 2021-02-23
【应用】EFR32BG22蓝牙SoC用做CGM连续血糖仪主控,单芯片集成MCU和蓝牙5.2
CGM连续血糖仪为了用户体验更好,要做到小而轻,续航时间长,可以通过手机蓝牙连接获取血糖测量数据。Silicon Labs的蓝牙SoC EFR32BG22在单芯片中集成了MCU和蓝牙5.2,可以作为CGM的主控芯片并实现蓝牙数据收发,有丰富的外设。
应用方案 发布时间 : 2021-07-20
EFR32BG22E Wireless Gecko SoC Family Data Sheet
型号- EFR32BG22E,EFR32BG22E224F512IM40-C,EFR32BG22,EFR32BG22E224F512IM32-C,EFR32BG22E224F512IM32-CR
silicon labs EFR32BG22蓝牙固件OTA升级流程解析
介绍EFR32BG22蓝牙程序在非备份方式OTA时的详细操作流程,应用代码会跳转到AppLoader 中运行蓝牙功能,实现新固件的传输和写入。
设计经验 发布时间 : 2023-11-08
【经验】EFR32BG22系列蓝牙SOC电池电压与VDD供电电压检测ADC的方法
EFR32BG22作为低功耗蓝牙SOC方案,经常应用于电池供电的方案中,一般采用内部的ADC作为采集通道,内部的输入源作为输入接口,来测试VDD供电电压。本文将讲解电池电压与VDD供电电压检测ADC的方法。
设计经验 发布时间 : 2020-11-28
Silicon Labs(芯科科技)无线蓝牙SoC EFR32BG22C222/EFR32BG22C224(发射功率+6dBm)数据手册
描述- EFR32BG22 Wireless Gecko SoC Family Data Sheet
型号- EFR32BG22C222F352GM32-C,EFR32BG22C224F512GM40-C,EFR32BG22C222F352GN32-C,EFR32BG22C222F352GM40-C,EFR32BG22C224F512IM40-C,EFR32BG22C224F512GM32-C,EFR32BG22C224F512IM32-C,EFR32BG22C224F512GN32-C,EFR32BG22,EFR32XG21,EFR32
【经验】SiliconLabs EFR32BG22芯片如何实现BLE连接并进行数据收发
不少首次接触BLE的开发者不太清楚如何实现BLE数据的交互,本文以Silicon Labs的EFR32BG22芯片平台为例,指导如何通过建立BLE连接并进行数据交互。硬件:SLTB010A开发板软件。
设计经验 发布时间 : 2023-03-08
【经验】Silicon Labs蓝牙Soc芯片EFR32BG22的蓝牙广播功率设置及注意事项
用户在使用Silicon Labs的蓝牙Soc芯片EFR32BG22实现蓝牙广播功能时,在不同的应用场景中要设置广播的发射功率,有的是为了降低产品的功耗,有的是为了增加或缩短通信的距离。那要如何设置广播时的功耗以及在设置时有哪些需要注意的事项?
设计经验 发布时间 : 2021-12-24
【经验】如何解决Silicon Labs EFR32B22在开启一次ADC转换后,功耗变高的问题?
在使用芯科科技EFR32BG22蓝牙SoC开发低功耗应用时,可能会使用到ADC这个外设,但在ADC转换后,会出现芯片在休眠时功耗比较高的情况。本文将介绍如何解决EFR32B22在开启一次ADC转换后,功耗变高的问题?
设计经验 发布时间 : 2023-06-28
【经验】蓝牙SoC EFR32BG22的高精度ADC配置步骤与注意事项
Silicon Labs的EFR32BG22系列蓝牙SoC内部集成高精度ADC功能,采用内部1.21V作为Vref,ADC真实有效位数可达13.5bit,使用外部1.25V基准源作为Vref,精度可达14.3bit。本文介绍ADC配置相关步骤以及注意项目。
设计经验 发布时间 : 2020-11-04
【经验】无线SoC EFR32BG22 EM4模式的进入与唤醒实现注意事项
Silicon Labs的无线SoC EFR32BG22的EM4模式支持nA级别的待机电流,对于功耗要求极为苛刻的应用非常合适,在这个模式下,只支持特定的GPIO以及reset唤醒。本文主要讲解EM4模式的进入与唤醒实现注意事项。
设计经验 发布时间 : 2021-06-02
【应用】芯科蓝牙SOC EFR32BG22保证电动汽车充电桩数据可靠性,接收灵敏度可达-106.7 dB
在实际应用中,芯科EFR32BG22芯片的典型应用是在充电桩中建立蓝牙连接,实现与用户移动设备之间的通信和数据传输。通过蓝牙连接,充电桩可以向用户的移动设备发送充电桩的状态信息(如电量、使用情况),并接受用户的控制命令,如启动、停止、调整充电功率等。
应用方案 发布时间 : 2023-06-10
电子商城
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥8.1764
现货: 111,378
品牌:SILICON LABS
品类:Mighty Gecko Multi-Protocol Wireless SoC
价格:¥27.0929
现货: 98,034
品牌:SILICON LABS
品类:Wireless Gecko SoC
价格:¥10.4994
现货: 67,034
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:150,000
服务
可定制变压器的常规尺寸从EE4.4到ETD49不等,温度范围:-40℃~150℃。自动化产品的起订数量:20KPCS,其它定制产品无起订量要求。
提交需求>
可定制胶棒天线频率范围包括GSM/GRPS/2G/3G/5G/2.4G/5G/5.8GHZ/WIFI/蓝牙、LoRa、433/470/315/868/915Mhz/NB等;增益:0~15dBi;天线尺寸、接口连接器可按需定制。
最小起订量: 1000 提交需求>
登录 | 立即注册
提交评论