news 2026/9/6 8:19:24

#137_死机恢复现场_Armino平台AP系统swd调试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
#137_死机恢复现场_Armino平台AP系统swd调试

原文链接

Armino平台AP系统swd调试
ap系统支持在线调试,使用jlink工具及Eclipse上位机工具,即可快速搭建调式环境。

JLink环境通过Eclipse集成JLink gdb server + gdb 工具

Jlink和BK7258连线:

1# VTref ---- VREF
7# SWDIO ---- SWDIO
9# SWCLK ---- SWCLK
20# GND ---- GND
JLink软件版本 https://www.segger.com/downloads/jlink/JLink_Windows_V768_x86_64.exe

Arm工具链版本 https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/10.3-2021.10/gcc-arm-none-eabi-10.3-2021.10-win32.exe

Eclipse版本 eclipse-embedcpp-2020-12-R-win32-x86_64.zip

Eclipse工程配置

BK7258 JLink configuration
BK7258 JLink configuration
BK7258 JLink configuration
默认swd连接cpu0(cp端),BK7258有两个swd口(grou1/group2)

可以通过setjtagmode cpu0 group1命令设置swd连接cpu0(cp端)

可以通过setjtagmode cpu1 group1设置swd连接cpu1(ap端)

可以通过jtagmode命令查看当前jtag状态

备注

使用Jlink进行SWD调试连接,需要编译DEBUG版本。

如果是开机异常,在串口输入命令的形式可能无法连接上Jlink。可以在driver_init里bk_gpio_driver_init();之后手动调用: bk_set_jtag_mode(0,0); //第一个参数0表示调试cpu0,第二个参数0表示使用第一组SWD gpio管脚 while(g_test_mode); //定义一个volitale的全局变量,而不是while(1);是防止编译器将后面的代码全部优化掉

然后接入Jlink后,修改g_test_mode变量值,开始往下调试。

由于GPIO管脚复用,所以默认版本接入JLINK调试,需要输入调试命令,或者在代码里设置调试模式:

关闭看门狗

重新配置SWD相关的gpio

swd调试示例
连接好jlink后,可以按照以下步骤打断点调试:

根据函数指针或者函数名在Disassembly页找到dump的地址

BK7258 JLink configuration
示意图1

BK7258 JLink configuration
示意图2

在dump函数之前的语句设置断点,将断点属性设置为hardware

BK7258 JLink configuration
示意图3

点击resume继续运行程序。运行错误代码,如我在sta命令里,加了错误代码

BK7258 JLink configuration
示意图4

程序在断点处停下

BK7258 JLink configuration
示意图5

Armino平台异常dump一键恢复现场工具
请参考发布工具中使用文档: https://dl.bekencorp.com/tools/Debug_tool/BK7258-debug.zip

BK7258 dump工具常见问题:

默认Release版本dump功能是关闭的, 可以通过CONFIG_DUMP_ENABLE配置打开

当前的架构采用cp+ap模式, 可以通过两者的config文件修改打开dump功能

Dump工具恢复现场的原理是脚本通过分析log,解析出regs,itcm,dtcm,sram内容,然后通过gdb将这些内容恢复到qemu虚拟机中

Log文件的后缀支持txt, log, DAT

Log文件的编码当前只支持utf-8, 其他编码格式可用通过notepad++手动转换为utf-8编码格式

如果工具目录下有多份Log, 或者Log中有多次Dump, 工具会分析最后一次Dump, 需要保证工具目录下只有一份Log, 且Log中只有一份dump

Dump工具可以自动去掉日志里规则的时间戳: [2024-02-03 14:35:13.375193], 如果遇到不规则的时间戳, 需要手动去除

Dump过程中如果出现2次异常, 常见的如检测内存越界时, 遇到Assert, 会多打印一次寄存器, 解析时需要删掉第二次寄存器打印

任一个cpu Dump都会将当前cpu的寄存器, itcm, dtcm, 以及640k sram全部dump出来

默认cp侧的Log和Dump通过UART0输出

默认ap侧的Log和Dump通过MAILBOX到cp再通过UART0输出

Dump过程中如果遇到多个cpu同时dump, 需要将Log拆分成两份dump文件,分别用cp和ap的elf来恢复现场

每个cpu需要当前cpu的寄存器, itcm, dtcm, sram加上elf就可以恢复现场

寄存器格式:

CPU1 Current regs: =========> CPU1 表示当前寄存器是cpu1出现异常的寄存器
0 r0 x 0x0
1 r1 x 0x28061ca0
2 r2 x 0x0
3 r3 x 0x8061ca0
4 r4 x 0x28061d74
5 r5 x 0x28061d70
6 r6 x 0x28085a90
7 r7 x 0x28061de4
8 r8 x 0x8080808
9 r9 x 0x9090909
10 r10 x 0x10101010
11 r11 x 0x11111111
12 r12 x 0x1
14 sp x 0x20000928
15 lr x 0x21ec909
16 pc x 0x21ec8fa
17 xpsr x 0x61000000
18 msp x 0x2808ff48
19 psp x 0x20000908
20 primask x 0x0
21 basepri x 0x0
22 faultmask x 0x0
23 fpscr x 0x0
30 CPU1 xPSR x 0x4
31 LR x 0xfffffffd
32 control x 0xc
40 MMFAR x 0x8061ca0
41 BFAR x 0x8061ca0
42 CFSR x 0x82
43 HFSR x 0x0
MemFault =========> 初步异常原因是内存访问异常
dtcm格式:

stack mem dump begin, stack_top=20000000, stack end=20004000
<<<<stack mem dump end. stack_top=20000000, stack end=20004000
itcm格式:

stack mem dump begin, stack_top=00000020, stack end=00004000
<<<<stack mem dump end. stack_top=00000020, stack end=00004000
sram格式:

stack mem dump begin, stack_top=28040000, stack end=28060000
<<<<stack mem dump end. stack_top=28040000, stack end=28060000

stack mem dump begin, stack_top=28060000, stack end=280a0000
<<<<stack mem dump end. stack_top=28060000, stack end=280a0000

stack mem dump begin, stack_top=28000000, stack end=28010000
<<<<stack mem dump end. stack_top=28000000, stack end=28010000

stack mem dump begin, stack_top=28010000, stack end=28020000
<<<<stack mem dump end. stack_top=28010000, stack end=28020000

stack mem dump begin, stack_top=28020000, stack end=28040000
<<<<stack mem dump end. stack_top=28020000, stack end=28040000
当系统打开CONFIG_MEM_DEBUG时, Dump过程会将当前系统正在使用的Heap内存全部打印出来, 并检查是否有内存越界:

tick addr size line func task


6976 0x28064b68 80 425 xQueueGenericCreate media_ui_task
6976 0x28064be0 80 425 xQueueGenericCreate media_ui_task
6976 0x28064c58 160 425 xQueueGenericCreate media_ui_task
6976 0x28064d20 1024 863 xTaskCreate_ex media_ui_task
6976 0x28065148 104 868 xTaskCreate_ex media_ui_task
6976 0x2807d098 80 425 xQueueGenericCreate transfer_major_task
6976 0x2807d110 80 425 xQueueGenericCreate transfer_major_task
正常情况下也会将task相关信息dump到日志, 供问题分析时参考

Armino平台系统稳定性问题分析
嵌入式稳定性问题是一类常见但不容易定位的问题,其具有以下特征:

不可预测性:系统故障的时间点不固定,难以预测,可能在长时间运行后突然发生

多样性:问题可能以崩溃、死机、卡顿或错误行为等多种形式出现

累计效应:系统运行时间越长,资源泄漏或数据损坏等问题可能积累,最终导致崩溃

环境依赖性:稳定性还可能受温度、湿度和电源波动等环境因素的影响

为了帮助用户更好的定位稳定性问题,下面的链接文档中提供了常见的分析手段

备注

本文档仅针对软件引起的稳定性问题,建议用户在碰到稳定性问题时,优先参考该文档

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 8:16:17

全自动开袋机成本账怎么算?5 大品牌 TCO 横评与 3 类工厂选型

全自动开袋机&#xff08;自动完成口袋裁剪、折边、缝合的数控缝制设备&#xff09;不是只看裸机价。- 用 TCO&#xff08;总拥有成本&#xff0c;Total Cost of Ownership&#xff0c;含设备价物流安装培训等杂费&#xff09;视角看&#xff0c;落地成本比裸机价高 23%–33%。…

作者头像 李华
网站建设 2026/9/6 8:14:34

MBTI长版和短版怎么选?别只按题目多少做决定

面对不同长度的 MBTI 测试&#xff0c;很多人会直接把“题目更多”理解成“结果更准”&#xff0c;或者因为赶时间只挑最短的版本。其实&#xff0c;版本选择更应该看作答条件和使用目的。选到与当下状态相匹配的版本&#xff0c;比单纯比较题目数量更有意义。 先问自己&#x…

作者头像 李华
网站建设 2026/9/6 8:14:15

线上活动技术支撑:从需求到部署的全流程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 8:12:56

Linux设备驱动实战:从字符设备到调试与高薪路径

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 8:08:01

AIGC检测用维普在哪里做?提交论文后怎样找到对应报告入口?

AIGC检测用维普在哪里做&#xff1f;提交论文后怎样找到对应报告入口&#xff1f; 学院群里发了通知&#xff0c;说今年毕业论文除了查重&#xff0c;还要过一遍维普的AIGC检测。你打开浏览器搜维普&#xff0c;出来一长串页面&#xff0c;有的写着论文检测&#xff0c;有的写…

作者头像 李华
网站建设 2026/9/6 8:06:10

哪些AI能满足企业级办公需求?

企业引入AI办公工具&#xff0c;不再是简单采购通用大模型账号&#xff0c;核心要看工具能否适配团队协作流程、保障内部数据安全&#xff0c;并且可以落地真实业务任务。不少团队直接使用通用AI产品&#xff0c;会遇到权限管控缺失、输出无法贴合业务、多成员协同混乱等问题。…

作者头像 李华