郑州建设网站企业网站视频主持人网
web/
2025/10/1 6:49:04/
文章来源:
郑州建设网站企业,网站视频主持人网,网站联系方式设置要求,网络文化经营许可证怎么办请阅读【Trace32 ARM 专栏导读】 文章目录 Trace32 Go.directGo配合程序断点使用Go 配合读写断点使用Go 快速回到上一层函数 System.Mode Go Trace32 Go.direct
TRACE32调试过程中#xff0c;会经常对芯片/内核进行控制#xff0c;比如全速运行、暂停、单步等等。这篇文章先…请阅读【Trace32 ARM 专栏导读】 文章目录 Trace32 Go.directGo配合程序断点使用Go 配合读写断点使用Go 快速回到上一层函数 System.Mode Go Trace32 Go.direct
TRACE32调试过程中会经常对芯片/内核进行控制比如全速运行、暂停、单步等等。这篇文章先介绍全速运行Go.direct Go命令一般用于控制芯片/内核的全速、实时运行命令不区分大小写也可以缩写成一个字母g。
这边文章以测试函数t32_test 为例进行介绍其反 C 代码如下
struct t32_str {uint32_t t32_val;uint32_t t32_id;char* t32_name;
};static volatile struct t32_str str_t32;
static uint32_t volatile g_t32;void t32_test(void)
{uint32_t t32_tmp;hal_printf(%s\n, __func__);t32_tmp 0xdeadbeef;g_t32 0xdeadbeef;str_t32.t32_val 0x5a5a5a5a;str_t32.t32_id 0xacce55;str_t32.t32_name trace32;hal_printf(t32_tmp:0x%x, g_t32:0x%x, val:0x%x, id:0x%x, name:%s\n,t32_tmp, g_t32, str_t32.t32_val, str_t32.t32_id, str_t32.t32_name);
}汇编代码如下
38110 2001823c t32_test:
38111 2001823c: b510 push {r4, lr}
38112 2001823e: b082 sub sp, #8
38113 20018240: 490c ldr r1, [pc, #48] ; (20018274 t32_test0x38)
38114 20018242: 480d ldr r0, [pc, #52] ; (20018278 t32_test0x3c)
38115 20018244: f7fa fa06 bl 20012654 hal_printf
38116 20018248: 480c ldr r0, [pc, #48] ; (2001827c t32_test0x40)
38117 2001824a: 490d ldr r1, [pc, #52] ; (20018280 t32_test0x44)
38118 2001824c: 6001 str r1, [r0, #0]
38119 2001824e: f04f 335a mov.w r3, #1515870810 ; 0x5a5a5a5a
38120 20018252: 6043 str r3, [r0, #4]
38121 20018254: 4b0b ldr r3, [pc, #44] ; (20018284 t32_test0x48)
38122 20018256: 6083 str r3, [r0, #8]
38123 20018258: 4b0b ldr r3, [pc, #44] ; (20018288 t32_test0x4c)
38124 2001825a: 60c3 str r3, [r0, #12]
38125 2001825c: 6802 ldr r2, [r0, #0]
38126 2001825e: 6843 ldr r3, [r0, #4]
38127 20018260: 6884 ldr r4, [r0, #8]
38128 20018262: 68c0 ldr r0, [r0, #12]
38129 20018264: 9001 str r0, [sp, #4]
38130 20018266: 9400 str r4, [sp, #0]
38131 20018268: 4808 ldr r0, [pc, #32] ; (2001828c t32_test0x50)
38132 2001826a: f7fa f9f3 bl 20012654 hal_printf
38133 2001826e: b002 add sp, #8
38134 20018270: bd10 pop {r4, pc}
38135 20018272: bf00 nop
38136 20018274: 2001e478 .word 0x2001e478
38137 20018278: 2001a5e8 .word 0x2001a5e8
38138 2001827c: 20021038 .word 0x20021038
38139 20018280: deadbeef .word 0xdeadbeef
38140 20018284: 00acce55 .word 0x00acce55
38141 20018288: 2001c8d8 .word 0x2001c8d8
38142 2001828c: 2001c8e0 .word 0x2001c8e0Go配合程序断点使用
正常我们设置好断点后都需要点击Go来使CPU内核跑起来并达到断点处
Break.set t32_test
Go我们也可以把上面两个命令结合起来
Go t32_test这样我们可以把程序一直运行到t32_test函数的入口处。
当然写地址效果是一样的
Go 0x2001823CGo 配合读写断点使用
命令 Var.go g_t32 /Write 便可以把程序运行到 g_t32 变量被改写的位置。
Go 快速回到上一层函数
有时当程序正好停在某一个函数内例如下图的 t32_test我希望快速地执行完当前函数的所有代码并返回到上一层调用者的位置 我们可以使用命令 Go.up , 执行完后可以看到 PC 指针已经跳出 t32_test。
System.Mode Go
上面介绍的Go命令不等同于 System.Mode Go 也就是说不等同于如下窗口的Go按钮
此处Go按钮的完整作用是
Step1复位芯片如果接有复位信号Step2TRACE32尝试连上芯片内核并建立调试通信Step3: 控制芯片内核全速运行
推荐阅读 https://blog.csdn.net/weixin_48120109/article/details/126167861
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84903.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!