打印
[APM32F4]

Initialzation file调试运用与ARM内核

[复制链接]
164|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
guguli|  楼主 | 2023-12-19 00:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
Initialzation file调试运用与ARM内核
事情的起因是在做测试时,对现有资料进行在KEIL上编译后,发现下载后,无法成功跑起来,进入debug界面发现PC总是指向0x1开头的某个地址,然后跑飞,经过高手哥的指点,解决了这个问题,他重写了一份后缀ini的文件,文件内容大概是对PC,SP、以及xPSR操作。
一、内核寄存器介绍
采用的芯片为ARM Cortex-M4 内核,ARM Cortex-M4 内核是一种嵌入式处理器内核,具有一组特定的寄存器用于控制和管理处理器的操作。以下是 ARM Cortex-M4 内核的一些常见寄存器:

特殊寄存器(Special Registers):
1.MSP(Main Stack Pointer):主堆栈指针,用于管理主线程的堆栈。
2.PSP(Process Stack Pointer):进程堆栈指针,用于管理任务或中断处理过程的堆栈。
3.PRIMASK(Priority Mask):优先级屏蔽寄存器,用于控制中断的屏蔽。
4.CONTROL:控制寄存器,用于控制处理器运行模式和堆栈选择。
寄存器Banks(Register Banks):
1.R0~R3:通用寄存器,用于存储临时数据。
2.R4~R11:通用寄存器,用于存储局部变量和函数参数。
3.R12(IP:Intra-Procedure-call Scratch Register):函数调用过程中的临时寄存器。
4.SP(Stack Pointer):堆栈指针,用于管理当前线程的堆栈。
5.LR(Link Register):链接寄存器,用于保存函数调用的返回地址。
6.PC(Program Counter):程序计数器,用于存储当前执行指令的地址。
xPSR(Program Status Register):程序状态寄存器,用于存储程序状态信息,如条件标志和当前模式。
除了上述寄存器,ARM Cortex-M4 内核还具有特定的控制寄存器和系统寄存器,用于配置和管理处理器的其他功能,如中断控制、睡眠模式、异常处理等。

二、.ini文件
调试过程中的 .ini 文件通常用于配置调试工具或环境,以指定调试器的行为和设置。这些文件可以根据不同的调试工具和目标系统进行定制。以下是一个示例 .ini 文件的结构和可能包含的配置项:
【连接设置】
连接类型 = JTAG/SW
目标设备 = APM32F4xx
连接接口 =xx
连接速度 =xx
【调试选项】
断电支持 = xx
远程调试 = xx
日志记录=xx
日志文件链接 =xx
【调试器命令】
初始化命令 = xx
加载符号表命令 = xx
设置断点命令 =xx
开始运行命令 =xx
可以看出.ini 文件分为几个部分:
  • [连接设置]:指定连接目标设备的相关设置,如连接类型、目标设备型号、连接接口和速度等。
  • [调试选项]:指定调试过程中的一些选项,如是否支持断点、是否启用远程调试、是否进行日志记录等。
  • [调试器命令]:指定调试器在不同阶段的命令,如初始化命令、加载符号表命令、设置断点命令、开始运行命令和停止运行命令等。

具体的调试需求和工具文档来编写和配置 .ini 文件,在这案例中重新编写INI文件内容,编写PC/SP/xPSR内容,程序就可以在debug状态下运行。

iwEdAqNwbmcDAQTRAOoF0QGkBrBbBawQvtDdqQVxAMspVxoAB9Jw7mkCCAAJomltCgAL0RpK.png_720.jpg (72.51 KB )

iwEdAqNwbmcDAQTRAOoF0QGkBrBbBawQvtDdqQVxAMspVxoAB9Jw7mkCCAAJomltCgAL0RpK.png_720.jpg

111.PNG (21.44 KB )

111.PNG

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

5

帖子

0

粉丝