|
|
1
4
命令
<地址>向其写入数据具有以下形式:
一个完整的地址,只是地址偏移量和值(您想要写入),也可以用调试符号表示。这些符号通常是在目标应用程序中定义的变量、函数名和标签,并通过加载目标应用程序的ELF文件向调试器声明。
但是,在这种情况下,符号是由命令在调试器中手动声明的
无论如何:通过在命令中将符号替换为其值
那么这个命令实际上是干什么的呢?
这对您的目标和运行在其上的应用程序到底意味着什么?
嗯,我不了解你的芯片或SoC(我也不知道你的应用程序)。
但从我看到的数据来看,我猜你正在调试一个ARM架构的芯片——可能是Cortex-M。您的芯片的引导ROM似乎从地址0x340000开始,而实际应用程序的启动代码从0x340020开始(可能带有符号
对于Cortex-M内核,您必须在矢量表(在引导ROM中)的偏移量0处编程 堆叠指标 ,而在偏移量4处,您必须写入 程序计数器 。在您的情况下,程序计数器应初始化为0x340021。为什么是0x3400021而不是0x3400020?因为您的启动代码可能编码在 ARM Thumb 。(Cortex-M只能执行Thumb代码)。通过将程序计数器初始值的最低有效位设置为1,核心知道它应该开始解码Thumb指令。(在Cortex-M上不将最低有效位设置为1将导致异常)。 |