【经验】Micrium OS操作系统中如何动态检测线程栈使用率?

2021-01-19 世强
EFR32BG13,Silicon Labs EFR32BG13,Silicon Labs EFR32BG13,Silicon Labs EFR32BG13,Silicon Labs

Micrium OS的前身是大名鼎鼎的ucOSIII。SILICON LABS的开发环境Simplicity IDE创建的默认工程,很多就包含了移植好的Micrium OS。因此使用EFR32或EFM32系列单片机做开发,最好了解Micrium OS操作系统使用方法。而最让新手工程师不知所措的问题之一就是线程创建时线程栈的大小设定,但由于单片机的RAM资源很有限,因此合理的设定线程栈的大小至关重要。本文将说明如何动态检测线程栈使用率。


首先从代码的角度分析一下动态检测线程栈使用率的实现。


想要使用系统中动态检测线程栈使用率的功能,需要将系统的配置宏OS_CFG_STAT_TASK_STK_CHK_EN使能(即定义为DEF_ENABLED)。


我们可以看到OS_CFG_STAT_TASK_STK_CHK_EN宏使能的情况下,线程的TCB数据结构中会添加StkBasePtr指针的定义。并且在线程创建的时候,该指针会指向线程栈的基地址。

与此同时,我们可以看到OS_CFG_STAT_TASK_STK_CHK_EN宏使能的情况下,在OSTaskStkChk()函数中,p_stk指针被赋值为上文描述的StkBasePtr指针值。因为线程栈的填充是FIFO的形式,并且该内核的数据增长方向是由高地址向低地址增长。并且定义线程栈时,我们多用static  CPU_STK数据类型来定义栈的存储空间。有经验的程序员知道使用static定义的变量,编译器会默认将之初始化为0。因此OSTaskStkChk()函数是通过判断线程栈基地址空间方向的数据是否为0来判断协议栈到底用到过的最大地址是多少。因此应用程序可以通过调用OSTaskStkChk()函数并检测函数返回的数据,从而确定未使用的栈空间,到底还有多少。


原理分析如上,现在在代码中验证一下实际使用效果。


首先新建一个带有Micrium OS的例程,例如SOC-Thermometer-RTOS。(注:笔者采用的是EFR32BG13系列芯片,不过因为我们这里讨论的是纯OS应用层面的实现,与硬件平台无关,因此不再描述芯片以及硬件的相关内容)

之后我们在工程的主线程循环中添加OSTaskStkChk()函数调用,并将返回的变量打印出来。

RTOS_ERR err;

CPU_STK_SIZE free,used;

// Start the Thermometer Loop. This call does NOT return.

while (DEF_TRUE)

{

    OSTimeDlyHMSM(0, 0, 1, 0,

    OS_OPT_TIME_DLY | OS_OPT_TIME_HMSM_NON_STRICT,

    &err);

    OSTaskStkChk (&App_Main_Task_TCB, &free, &used, &err);

    DBG("App_Main_Task used/free:%d/%d  usage:%%%d\r\n",used,free,(used*100)/(used+free));

}

其中App_Main_Task_TCB就是主线程的TCB数据。free/ used分别是当前线程栈空闲的和使用的字数。


编译成功后,看打印信息可以看到当前主线程栈使用了177个字,未使用的是79个字,使用率是69%。

(注:笔者是使用的SWD接口进行的RTT信息打印,有关RTT信息打印的实现,请参考笔者的另一篇文章:如何在蓝牙SoC EFR32BG22工程代码中添加SEGGER_RTT打印功能?


授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由skywalker_lee提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。

相关研发服务和供应服务

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

【经验】EFR32BG系列蓝牙SoC之低功耗测试操作指导

很多的蓝牙设备都是电池供电的,因此对蓝牙SoC功耗水平测试与评估就非常有必要。Silicon Labs公司提供的蓝牙评估板底板,都带有电流功耗测试功能,搭配Simplicity studio v4开发平台的energy profile功耗测试上位机,非常容易测试出EFR32BG系列蓝牙SoC的功耗水平。我们详细介绍功耗测试需要的软件和硬件以及测试操作。本文就将具体进行说明。

2020-02-20 -  设计经验 代理服务 技术支持 采购服务

【经验】Silicon Labs 蓝牙SOC EFR32BG系列IADC与ADC的区别

Silicon Labs蓝牙SOC EFR32BG系列包括有EFR32BG12/13和EFR32BG21两个子系列,其中EFR32BG12/13采用的是Cortex-M4内核,EFR32BG21采用的是Cortex-M33内核,二者的内核不同,另外,EFR32BG12/13集成有IADC,EFR32BG21集成的是ADC,两个ADC还是有一些区别的,在使用时需要注意一下,本文介绍其区别。

2020-02-21 -  设计经验 代理服务 技术支持 采购服务

【经验】蓝牙SOC EFR32BG13测试通信距离的实现方法

在使用Silicon Labs 蓝牙SOCEFR32BG13做好PCB板后,首先要测试射频的性能,使用相关的仪器测试性能是最精确的,但不是每个人都有条件使用仪器测试,这种情况下使用两个PCB模块进行通信距离测试就是最简便的方法。

2019-06-26 -  设计经验 代理服务 技术支持 采购服务

BRD4104A EFR32BG13 2.4 GHz 10 dBm无线电板

型号- BRD4104A,EFR32BG,EFR32BG13

March 01, 2017  - SILICON LABS  - 电路原理图  - Rev. A00 代理服务 技术支持 采购服务

【技术】网状网络技术三分天下,蓝牙Mesh欲异军突起

随着2009年蓝牙低功耗(BluetoothLowEnergy)的切入,再到现在的蓝牙网状网络(Mesh),我们正看到并将看到有更多的新应用出现。早期,家庭/楼宇自动化、信标、照明和资产追踪/管理等组网应用主要采用Zigbee网络。然而,Zigbee需要设计路由器/网关,这对开发者形成负担,因此行业也进一步提出了基于IPv6的Thread网状网络标准,形成目前技术三分天下的局面。

2017-11-13 -  新技术 代理服务 技术支持 采购服务

AN1400:低功耗蓝牙互操作性测试报告

型号- ERF32XG21,EFR32XG13,ERF32XG13,EFR32XG21,EFR32BG22,EFR32,EFR32XG22,EFR32BG21,EFR32BG13

April, 2023  - SILICON LABS  - 应用笔记或设计指南  - Rev. 1.0 代理服务 技术支持 采购服务

AN1114:将Silicon Labs Bluetooth®应用程序与Micrium RTOS集成

型号- EFR32MG13,EFR32XG12,EFR32XG13,BRD4159A,EFR32,EFR32BG13

2019/01/14  - SILICON LABS  - 应用笔记或设计指南  - Rev. 0.5 代理服务 技术支持 采购服务

【经验】EFR32BG13系列在SOC模式下使用内部flash进行固件升级的方法

本文根据笔者使用EFR32BG13P632F512GM48进行开发的经历,从函数调用及部分代码分析的角度,总结出EFR32BG13系列在SOC模式下使用内部flash进行固件升级的方法。

2020-12-06 -  设计经验 代理服务 技术支持 采购服务

UG279:EFR32BG13 2.4 GHz 10 dBm无线电板用户指南

描述- 本资料介绍了EFR32BG13 2.4 GHz 10 dBm无线射频板(BRD4104A)及其与无线启动套件主板(BRD4001A或BRD4002A)的配合使用。资料详细描述了硬件布局、连接器、调试功能、软件支持等信息,旨在帮助用户进行无线应用的开发和调试。

型号- SLWSTK6020B,BRD4104A,BRD4002A,BRD4001A,SLWRB4104A,EFR32,EFR32BG13P632F512GM48,EFR32BG13

September 2022  - SILICON LABS  - 用户指南  - Revision 2.0 代理服务 技术支持 采购服务

【经验】蓝牙SOC EFR32BG13系列soc_ibeacon程序中修改发射功率的方法

本文主要介绍Silicon Labs蓝牙SOC EFR32BG13芯片在soc_ibeacon程序中修改发射功率遇到的问题,介绍设置蓝牙发射功率的函数及相关的参数设置。

2019-08-30 -  设计经验 代理服务 技术支持 采购服务

【经验】为什么Bluetooth Mesh(蓝牙网状网络)是家用和商用无线网络的最佳解决方案?

​在创建低功耗无线技术网络时,开发人员有多种选择。 在本次技术讲座中,Silicon Labs现场应用工程师Kris Young解释了为什么Bluetooth Mesh(蓝牙网状网络)是家用和商用无线网络的最佳解决方案。

2020-04-24 -  设计经验 代理服务 技术支持 采购服务

EFR32BG13 2.4 GHz 10 dBm无线电板(BRD4104A)

型号- EFR32BG,EFR32,EFR32BG13

March 01, 2017  - SILICON LABS  - 电路原理图  - Revision A00 代理服务 技术支持 采购服务 查看更多版本

在使用Silicon Labs的SLWSTK6020的开发板时,开发板上的开源开关是否可以拔到USB上供电?

不可以,Silicon Labs的SLWSTK6020开发板上的电源开关有三个档位,分别是BAT、USB、AEM,BAT是由板上的Coin Cell Battery电池接口供电,USB是使用 扩展板的USB接口供电(需要扩展板有USB接口),AEM是由增强型能量监视部分供电,这个是由板内提供电源。所以电源开关拔到BAT时,需要有接入电池才能供电,拔到 USB时需要扩展板有USB接口才能供电(EFR32BG13的小板没有USB接口),所以接到USB时SOC是不工作的,正确的接法是接到AEM接口,即可以供电,也可 以监控SOC的耗电情况。

2018-08-27 -  技术问答

开发必备:超全的蓝牙MESH技术规范,参考设计,开发资料,一站式下载集合!

Silicon Labs EFR32BG13系列低功耗蓝牙soc鉴于其Flash容量(512kB)和RAM大小(64kB),非常适合低功耗蓝牙网状网络应用,EFR32BG21系列蓝牙SoC,具备更高的性价比,非常适合有线供电的产品应用;这两个型号都支持蓝牙5.0。我们也为此整理一份超全的设计开发资料,一站式提供给蓝牙mesh开发人员下载。【世强硬创沙龙2019】

2018-06-16 -  设计经验 代理服务 技术支持 采购服务

EFR32BG13 软件开发规格书有吗? PWM 输出IO口是否可以自己定义,还是固定IO口输出?

Silicon Labs EFR32BG13系列SoC 软件开发规格书下载地址:https://www.sekorm.com/doc/347916.html。 PWM输出I/O端口可以通过寄存器来自定义。也可以固定I/O端口输出。

2018-10-15 -  技术问答 代理服务 技术支持 采购服务
展开更多

电子商城

查看更多

品牌:SILICON LABS

品类:BLE SoC

价格:¥22.9487

现货: 5,000

品牌:SILICON LABS

品类:Wireless Gecko SoC

价格:¥8.1764

现货: 102,628

品牌:SILICON LABS

品类:Mighty Gecko Multi-Protocol Wireless SoC

价格:¥27.0929

现货: 90,767

品牌:SILICON LABS

品类:Wireless SoC

价格:¥31.7756

现货: 88,140

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.5305

现货: 85,765

品牌:SILICON LABS

品类:Wireless SoC

价格:¥19.9760

现货: 84,418

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.9026

现货: 83,555

品牌:SILICON LABS

品类:Wireless SoC

价格:¥35.3989

现货: 76,847

品牌:SILICON LABS

品类:8位MCU

价格:¥5.8534

现货: 71,919

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥12.9143

现货: 61,558

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:SILICON LABS

品类:Switch Hall Effect Magnetic Position Sensor

价格:¥2.2924

现货:126,000

品牌:SILICON LABS

品类:Light Sensor

价格:¥20.3400

现货:28,003

品牌:SILICON LABS

品类:8位MCU

价格:¥4.9000

现货:12,000

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥10.1700

现货:10,000

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥3.7900

现货:3,451

品牌:SILICON LABS

品类:Wireless SoC

价格:¥15.1400

现货:1,455

品牌:SILICON LABS

品类:Mixed-Signal MCU

价格:¥11.1200

现货:1,201

品牌:SILICON LABS

品类:8 BIT MCU

价格:¥16.8500

现货:550

品牌:SILICON LABS

品类:8位MCU

价格:¥56.0000

现货:550

品牌:SILICON LABS

品类:8位MCU

价格:¥5.1900

现货:396

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面