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状态下运行。
|