如何读取EFR32BG24系列SoC代码运行PC指针
我们在调试SILICON LABS EFR32BG24系列蓝牙SoC代码的时候,如果需要读取当前代码运行的PC指针,可以有以下两种方式来读取。
方法一:在simplicity studio 5仿真调试模式下直接读取。
我们基于simplicity studio 5,GSDK 4.4.2版本SDK,xG24评估板XG24-RB4186C,使用的芯片是(EFR32MG24B210F1536IM48)
创建“Bluetooth - SoC Empty”参考代码,在main.c文件中int main(void)函数中添加while(1)死循环用于测试。代码运行后PC指针就会一直在while中循环,代码如下:
然后烧录Bootloader - SoC Bluetooth AppLoader OTA DFU,再烧录刚刚编译好的“Bluetooth - SoC Empty”,在simplicity studio 5中点击仿真,进入仿真以后,点击全速运行,等待一段时间点击停止按钮,可以看到代码运行到了while(1)中。
下图中的3个按钮分别是运行,暂停,停止。
点击暂停仿真以后,可以通过仿真页面右侧的“Register”窗口查看PC指针信息,其实从这个窗口还能看到PC指针之外的其他寄存器。从下图中可以看到PC:0x802ea14 <main+10>,代码停在第52行,正好是main开始的第10行。
方法二:通过J-Link Commander读取PC指针。(安装J-Link驱动后,可在电脑的开始菜单里找到)
这种方法可以让EFR32BG24先运行一段时间,当复现出代码运行的异常状态时,再接上jlink调试器,打开J-Link Commander软件,通过jlink命令读取PC指针。这种方式可以脱离Studio 5仿真模式,直接在实际产品运行状态去读取PC指针。
Type "connect" to establish a target connection, '?' for help
J-Link>connect(输入connect命令,连接目标芯片)
Please specify device / core. <Default>: EFR32MG24BXXXF1536
Type '?' for selection dialog
Device>?(输入问号,会跳出手动选择芯片型号的对话框,在device栏输入芯片型号,选择对应的型号)
Please specify target interface:
J) JTAG (Default)
S) SWD
T) cJTAG
TIF>s(输入S选择SWD接口)
Specify target interface speed [kHz]. <Default>: 4000 kHz
Speed>(直接回车)
Device "EFR32BG24BXXXF1536" selected. (芯片选择完成)
更多的J-Link Commander命令,可以输入'?'获得。
J-Link>?
Available commands are:
输入halt命令,Halt CPU,这个时候会自动打印出PC指针,以及其他寄存器值,如下:读取到的PC指针的值,和我们前面方法一在Studio 5仿真模式下读取到的PC指针值是一样的。如果输入halt命令没有自动打印出寄存器值,可以输入Regs命令读取全部寄存器。
如果需要继续运行,可以输入go命令,Start CPU if halted,示例:
J-Link>go
J-Link>halt
PC = 0802EA14, CycleCnt = D84606C9
R0 = 00000000, R1 = 00000000, R2 = 00000000, R3 = 20000EA0
R4 = 00000000, R5 = 00000000, R6 = 00000000, R7 = 00000000
R8 = FFFFFFFF, R9 = FFFFFFFF, R10= 1FFF0AC0, R11= 00000000
R12= 00000290
我们打开工程目录下的.map文件。找到PC指针PC = 0802EA14所在位置。能找到最接近的位置:
.text.startup.main
0x0802ea0a 0xc ./main.o
0x0802ea0a main
.text.PendSV_Handler
0x0802ea16 0x4 ./autogen/sl_bluetooth.o
0x0802ea16 PendSV_Handler
从map信息中可以找到PC = 0802EA14在main 0x0802ea0a的基础上加10的位置。也正好在我们代码手动增加的while(1)位置。
结束语:
有的时候,需要多次halt和go,观察PC指针的变化情况,因为有时候代码不一定是运行在while(1)里空跑,有可能在某一段代码内循环运行,或者某一段异常的代码中运行跳出不来,这时候PC指针不是固定不变的,是会在小范围内变化的。通过这种办法定位到有问题的代码位置后,就可以做出相应的修改了。
- |
- +1 赞 0
- 收藏
- 评论 0
本文由John提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】STUDIO V5中蓝牙SoC EFR32BG22添加串口LOG打印的方法
在调试Silicon Labs蓝牙SoC EFR32BG22时,一般需要添加LOG打印信息,通过串口的方式来判断代码运行是否正常。由于使用RTT功能在打印信息时无法再次在线调试和代码下载,所以直接采用串口的方式更加便捷。
设计经验 发布时间 : 2021-06-30
【经验】Silicon Labs的蓝牙SoC EFR32BG22如何进行在线的OTA升级?
Silicon Labs的蓝牙SOC EFR32BG目前已经能够支持到蓝牙5.2,工艺升级后的EFR32BG22的功耗能够达到接收4.1mA,0dbm发射功耗3.6mA,休眠功耗低至1.4uA,如此低的功耗,能够大幅延长蓝牙设备的电池续航时间。本文介绍蓝牙SoC EFR32BG22如何进行在线的OTA升级。
设计经验 发布时间 : 2020-06-07
Silicon Labs EFR32BG21 蓝牙SoC RCP模式测试-扫描设备
本文介绍测试EFR32BG21 蓝牙RCP模式工作在主模式,用于扫描蓝牙从设备,建立蓝牙连接和收发数据。首先需要准备一台电脑并且已经安装好了linux系统。也可以是windows系统下安装的linux虚拟机。并且已经安装好了蓝牙BlueZ协议栈。
设计经验 发布时间 : 2024-03-01
选对了针对医疗和可穿戴设备的小型蓝牙芯片,设计毫不费力!
芯科科技一直为医疗设备和可穿戴设备制造商提供小型、专为应用而优化的蓝牙解决方案。以下展示了芯科科技提供的八款小型蓝牙芯片以及快速比较表,可以帮助您为应用程序选择最佳蓝牙解决方案!
应用方案 发布时间 : 2024-02-04
CareMedi采用芯科科技BG22系列蓝牙SoC打造小型贴片式胰岛素泵,大幅提升智慧医疗照护设备的应用价值
Silicon Labs(芯科科技)为CareMedi公司提供BG22小型化蓝牙SoC,帮助其开发新一代的贴片式胰岛素泵,大幅提升智慧医疗照护设备的应用价值。芯科科技很自豪能够通过为易用、智能的胰岛素泵设备提供解决方案,来帮助提高糖尿病患者的生活质量。我们期待能够进一步推动医疗物联网向前发展。
应用方案 发布时间 : 2024-10-18
芯科科技EFR32BG27蓝牙SoC助力持续性血糖监测CGM设备长达21天续航时间
在当今医疗领域,持续性血糖监测(CGM)成为人们关注的焦点,特别是对于糖尿病患者而言,实时了解血糖水平变化对于治疗和生活质量的提升具有举足轻重的意义。Silicon Labs提供的极小型、超低功耗EFR32BG27(BG27)蓝牙SoC在CGM中的应用显得尤为突出。本文将详细介绍BG27蓝牙SoC在CGM中的应用及其突出特点。
应用方案 发布时间 : 2024-07-12
智能设备设计概念并开发小型医疗、可穿戴和娱乐设备
随着科技的发展,电子产品的体积越来越小,并被赋予更多智能功能,与网络连接也成为基本功能,像是小型蓝牙医疗保健设备与可穿戴设备、智能娱乐设备和增强现实(AR)和虚拟现实(VR)解决方案等产品,已经逐步改变人类的生活样貌。本文将为您介绍设计这类电子产品的设计概念,以及由Silicon Labs(芯科科技)所推出相关解决方案的产品特性。
应用方案 发布时间 : 2024-10-08
芯科科技提供多款无线连接和控制芯片产品及解决方案,BG2x系列蓝牙SoC成就多样医疗物联网用例,
Silicon Labs(亦称“芯科科技”)的无线SoC和MCU助力全球客户的医疗物联网应用创新,持续打造更智能、高效、安全和便捷的健康监测设备。智能和网联技术近年来一直是医疗和健康保障领域内的热门技术,许多厂商都在利用医疗物联网(IoMT)技术开发更加智能和互联的健康监测设备,以利用物联网、云计算、人工智能和可穿戴等新一代信息通信技术,来帮助用户时刻监控自己的健康状况、降低医疗费用和就医麻烦。
原厂动态 发布时间 : 2023-06-29
BG24蓝牙SoC具备低功耗、小型化等特性,为CoreHW提供蓝牙RTLS的先进解决方案
Silicon Labs(亦称“芯科科技”)的BG24蓝牙SoC具备低功耗、小型化等特性,并支持蓝牙定位技术包括蓝牙到达角(AoA)和蓝牙信道探测(Channel Sounding),为CoreHW公司提供了最先进的实时定位服务(RTLS) 解决方案,以开发出创新的CoreTag和CoreLocator定位应用产品。
应用方案 发布时间 : 2024-06-21
洞悉标准化蓝牙ESL应用潜力,芯科科技全系列低功耗、高性能蓝牙SoC和模块现已支持最新蓝牙5.4版本
随着蓝牙标准的推陈出新,Silicon Labs(亦称“芯科科技”)也持续升级蓝牙解决方案,全系列低功耗、高性能蓝牙SoC和模块现已支持最新蓝牙5.4版本,以满足开发人员的需求。
原厂动态 发布时间 : 2023-08-10
【经验】EFR32BG系列蓝牙SoC之低功耗测试操作指导
很多的蓝牙设备都是电池供电的,因此对蓝牙SoC功耗水平测试与评估就非常有必要。Silicon Labs公司提供的蓝牙评估板底板,都带有电流功耗测试功能,搭配Simplicity studio v4开发平台的energy profile功耗测试上位机,非常容易测试出EFR32BG系列蓝牙SoC的功耗水平。我们详细介绍功耗测试需要的软件和硬件以及测试操作。本文就将具体进行说明。
设计经验 发布时间 : 2020-02-20
2024年版国民技术N32 MCU选型,全面覆盖新能源、工控、汽车、消费、医疗、物联网等各主流应用场景
N32系列MCU是国民技术基于安全SoC技术平台架构,采用32位Arm® Cortex®-M处理器内核,创新打造的以高性能、高集成度、安全、低功耗、高可靠性为特色的MCU产品。产品内置嵌入式高速加密闪存、低功耗电源管理,集成数模混合电路,以及多种密码算法硬件加速引擎和安全单元,全面覆盖新能源、工控、汽车、消费、医疗、物联网等各主流应用场景。
器件选型 发布时间 : 2024-05-16
【经验】芯科科技EFR32BG22系列蓝牙SOC低功耗优化的相关配置
本文主要介绍Silicon Labs(芯科科技)EFR32BG22系列蓝牙SOC目前所有的低功耗优化的相关配置,实现目标: VDD=3V,VSCALE0=0.9V,温度25℃,EM2模式下深度休眠为1.4μA。
设计经验 发布时间 : 2021-09-27
【经验】蓝牙SoC EFR32BG22增加Button功能并发送Notify数据包的方法
本文以Silicon Labs蓝牙SoC EFR32BG22的Thunderboard模块为例,介绍如何使用Simplicity Studio v5软件在蓝牙soc_empty工程中添加Button功能,并向手机发送Notify数据包的方法。
设计经验 发布时间 : 2021-03-14
蓝牙SOC天梯榜:选购蓝牙设备的必备指南
在无线通信技术中,蓝牙技术占据着重要的地位,特别是在短距离无线通信领域。随着蓝牙技术的不断发展,各种蓝牙芯片也层出不穷。为了帮助消费者和开发者更好地了解和选择蓝牙芯片,一些权威机构和技术网站会定期发布蓝牙SOC天梯榜。蓝牙SOC天梯榜是一个根据蓝牙芯片的性能、功耗、集成度、兼容性等多个维度进行综合评价的排名榜单。
技术探讨 发布时间 : 2024-05-10
电子商城
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
根据用户的蓝牙模块,使用Bluetooth 蓝牙测试装置MT8852B,测试蓝牙1.0至5.1,包括传输速率、功率、频率、调制和接收机灵敏度,生成测试报告。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
提供语音芯片、MP3芯片、录音芯片、音频蓝牙芯片等IC定制,语音时长:40秒~3小时(外挂flash),可以外挂TF卡或U盘扩容。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论