如何读取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提供,版权归世强硬创平台所有,非经授权,任何媒体、网站或个人不得转载,授权转载时须注明“来源:世强硬创平台”。
相关推荐
【经验】芯科科技EFR32BG22系列蓝牙SOC修改自定义广播包的思路与具体实例
在蓝牙的实际应用中,往往需要自定义的蓝牙广播包来适应不同的应用环境,本文主要介绍基于SILICON LABS的EFR32BG22蓝牙SOC实现自定义广播数据包的方法。
【经验】STUDIO V5中蓝牙SoC EFR32BG22添加串口LOG打印的方法
在调试Silicon Labs蓝牙SoC EFR32BG22时,一般需要添加LOG打印信息,通过串口的方式来判断代码运行是否正常。由于使用RTT功能在打印信息时无法再次在线调试和代码下载,所以直接采用串口的方式更加便捷。
【经验】Silicon Labs的蓝牙SoC EFR32BG22如何进行在线的OTA升级?
Silicon Labs的蓝牙SOC EFR32BG目前已经能够支持到蓝牙5.2,工艺升级后的EFR32BG22的功耗能够达到接收4.1mA,0dbm发射功耗3.6mA,休眠功耗低至1.4uA,如此低的功耗,能够大幅延长蓝牙设备的电池续航时间。本文介绍蓝牙SoC EFR32BG22如何进行在线的OTA升级。
SILICON LABS ZIGBEE 无线 Gecko SoC选型表
EFR32MG无线 Gecko SoC 是在 IoT 设备上实现节能多协议连网的理想之选。芯片解决方案结合了 76.8MHz ARM和高性能 2.4GHz 无线电,旨在为 IoT连接应用提供行业领先的节无线 SoC。
产品型号
|
品类
|
Protocol Stack
|
Frequency Band @ Max TX Power(GHz@dBm)
|
Flash(kB)
|
RAM(kB)
|
GPIO(个数)
|
Operating Temperature(℃)
|
Storage Temperature(℃)
|
Pin Count
|
AVDD Supply Voltage(V)
|
EFR32MG12P433F1024GL125-C
|
Gecko Multi-Protocol Wireless SoC
|
Bluetooth LE Zigbee Thread Proprietary, Wi-SUN
|
2.4GHz @ 19dBm, Sub-GHz @ 20dBm
|
1024kB
|
256kB
|
65
|
-40℃~85℃
|
-50℃~150℃
|
BGA125
|
1.8V~3.8V
|
选型表 - SILICON LABS 立即选型
无线物联网技术打造智能、小型且安全的医疗保健设备
无线物联网(IoT)技术的快速发展,正在为医疗保健行业带来革命性的变革。智能医疗设备具有小型化设计和无线连接的特点,实现了患者的远程监测、精准诊断和个性化治疗。这一趋势将塑造未来医疗领域的发展,提供更高效、更智能和更安全的医疗保健解决方案。本文将为您介绍一些智能医疗保健设备的设计实例。
选对了针对医疗和可穿戴设备的小型蓝牙芯片,设计毫不费力!
芯科科技一直为医疗设备和可穿戴设备制造商提供小型、专为应用而优化的蓝牙解决方案。以下展示了芯科科技提供的八款小型蓝牙芯片以及快速比较表,可以帮助您为应用程序选择最佳蓝牙解决方案!
CareMedi采用芯科科技BG22系列蓝牙SoC打造小型贴片式胰岛素泵,大幅提升智慧医疗照护设备的应用价值
Silicon Labs(芯科科技)为CareMedi公司提供BG22小型化蓝牙SoC,帮助其开发新一代的贴片式胰岛素泵,大幅提升智慧医疗照护设备的应用价值。芯科科技很自豪能够通过为易用、智能的胰岛素泵设备提供解决方案,来帮助提高糖尿病患者的生活质量。我们期待能够进一步推动医疗物联网向前发展。
Silicon Labs EFR32BG21 蓝牙SoC RCP模式测试-扫描设备
本文介绍测试EFR32BG21 蓝牙RCP模式工作在主模式,用于扫描蓝牙从设备,建立蓝牙连接和收发数据。首先需要准备一台电脑并且已经安装好了linux系统。也可以是windows系统下安装的linux虚拟机。并且已经安装好了蓝牙BlueZ协议栈。
芯科科技EFR32BG27蓝牙SoC助力持续性血糖监测CGM设备长达21天续航时间
在当今医疗领域,持续性血糖监测(CGM)成为人们关注的焦点,特别是对于糖尿病患者而言,实时了解血糖水平变化对于治疗和生活质量的提升具有举足轻重的意义。Silicon Labs提供的极小型、超低功耗EFR32BG27(BG27)蓝牙SoC在CGM中的应用显得尤为突出。本文将详细介绍BG27蓝牙SoC在CGM中的应用及其突出特点。
【经验】EFR32BG22系列蓝牙SOC电池电压与VDD供电电压检测ADC的方法
EFR32BG22作为低功耗蓝牙SOC方案,经常应用于电池供电的方案中,一般采用内部的ADC作为采集通道,内部的输入源作为输入接口,来测试VDD供电电压。本文将讲解电池电压与VDD供电电压检测ADC的方法。
SILICON LABS Matter 无线SoC选型表
EFR32MG24 无线 SoC 是使用 Matter、OpenThread 和 Zigbee 进行网状物联网无线连接的理想选择
产品型号
|
品类
|
Protocol Stack
|
MAX TX Power (dBm)
|
Flash(kB)
|
RAM(kB)
|
GPIO(个数)
|
Secure Vault
|
IADC High-Speed/High-Accuracy
|
Multi Vector Processor
|
Max CPU Speed(MHz)
|
Operating Temperature(℃)
|
Storage Temperature(℃)
|
Pin Count
|
AVDD Supply Voltage(V)
|
EFR32MG24B310F1536IM48-B
|
Wireless SoC
|
Matter,Zigbee,Thread,Bluetooth 5.3
|
10dBm
|
1536kB
|
256kB
|
28
|
High
|
IADC High-Speed/High-Accuracy
|
Multi Vector Processor
|
78.0MHz
|
-40℃~125℃
|
-50℃~150℃
|
QFN48
|
1.71V~3.8V
|
选型表 - SILICON LABS 立即选型
BG24蓝牙SoC具备低功耗、小型化等特性,为CoreHW提供蓝牙RTLS的先进解决方案
Silicon Labs(亦称“芯科科技”)的BG24蓝牙SoC具备低功耗、小型化等特性,并支持蓝牙定位技术包括蓝牙到达角(AoA)和蓝牙信道探测(Channel Sounding),为CoreHW公司提供了最先进的实时定位服务(RTLS) 解决方案,以开发出创新的CoreTag和CoreLocator定位应用产品。
【经验】EFR32BG系列蓝牙SoC之低功耗测试操作指导
很多的蓝牙设备都是电池供电的,因此对蓝牙SoC功耗水平测试与评估就非常有必要。Silicon Labs公司提供的蓝牙评估板底板,都带有电流功耗测试功能,搭配Simplicity studio v4开发平台的energy profile功耗测试上位机,非常容易测试出EFR32BG系列蓝牙SoC的功耗水平。我们详细介绍功耗测试需要的软件和硬件以及测试操作。本文就将具体进行说明。
芯科科技提供多款无线连接和控制芯片产品及解决方案,BG2x系列蓝牙SoC成就多样医疗物联网用例,
Silicon Labs(亦称“芯科科技”)的无线SoC和MCU助力全球客户的医疗物联网应用创新,持续打造更智能、高效、安全和便捷的健康监测设备。智能和网联技术近年来一直是医疗和健康保障领域内的热门技术,许多厂商都在利用医疗物联网(IoMT)技术开发更加智能和互联的健康监测设备,以利用物联网、云计算、人工智能和可穿戴等新一代信息通信技术,来帮助用户时刻监控自己的健康状况、降低医疗费用和就医麻烦。
2024年版国民技术N32 MCU选型,全面覆盖新能源、工控、汽车、消费、医疗、物联网等各主流应用场景
N32系列MCU是国民技术基于安全SoC技术平台架构,采用32位Arm® Cortex®-M处理器内核,创新打造的以高性能、高集成度、安全、低功耗、高可靠性为特色的MCU产品。产品内置嵌入式高速加密闪存、低功耗电源管理,集成数模混合电路,以及多种密码算法硬件加速引擎和安全单元,全面覆盖新能源、工控、汽车、消费、医疗、物联网等各主流应用场景。
电子商城
现货市场
品牌:SILICON LABS
品类:Switch Hall Effect Magnetic Position Sensor
价格:¥2.2924
现货:126,000
服务
提供语音芯片、MP3芯片、录音芯片、音频蓝牙芯片等IC定制,语音时长:40秒~3小时(外挂flash),可以外挂TF卡或U盘扩容。
最小起订量: 1pcs 提交需求>
提供蓝牙BLE芯片协议、蓝牙模块、蓝牙成品测试认证服务;测试内容分Host主机层,Controller控制器层,Profile应用层测试。支持到场/视频直播测试,资深专家全程指导。
实验室地址: 深圳 提交需求>
登录 | 立即注册
提交评论