Integrator开发板作为经典的ARM评估平台,其调试接口采用标准的20针JTAG连接器。实际操作中需要注意以下硬件配置细节:
特别注意:Integrator/AP与Integrator/CP的Timer控制寄存器存在差异,CP版需要额外设置中断使能位(0xA0),否则LED闪烁例程无法正常工作。
ADS 1.2开发套件包含三个关键组件:
配置要点:
bash复制# 环境变量检查(ADS安装后自动设置)
echo %ARMTOOLS%
# 应显示类似:C:\Program Files\ARM\ADSv1_2
调试器内存设置是常见问题源头:
$top_of_memory变量为0x00040000服务端参数优化建议:
以hello.c为例的完整调试流程:
工程导入:
断点设置技巧:
br 0xAddress设置硬断点br命令查看所有断点单步执行策略:
printf输出到AXD控制台的原理:
c复制// 半主机操作示意代码
void __semihosting_call(int op, void* arg) {
__asm {
MOV R0, op
LDR R1, =arg
SVC 0x123456
}
}
常见故障处理:
LED闪烁项目的关键步骤:
scatter复制LOAD_REGION 0x24000000 0x04000000 {
FLASH 0x24000000 0x04000000 {
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RAM 0x00000000 0x0003FFFF {
.ANY (+RW +ZI)
}
}
code复制a0x24000000 - 指定加载地址
i0 - 镜像编号
*LedFlash - 镜像名称(供Boot Monitor识别)
Integrator启动时的内存布局变化:
| 阶段 | 地址0x0映射 | 控制信号 |
|---|---|---|
| 上电 | Boot ROM | S1-1=ON |
| 第一阶段 | Flash镜像 | Remap=0 |
| 第二阶段 | RAM | Remap=1 |
调试技巧:
STR指令触发重映射AXD中异常捕获配置:
优化代码调试方法:
assembly复制; 典型混合调试视图
0x00000100: E92D4000 STMFD SP!, {LR}
0x00000104: EBFFFFFE BL subroutine ; C代码对应行
0x00000108: E3A00000 MOV R0, #0
操作建议:
| 现象 | 排查步骤 | 解决方案 |
|---|---|---|
| Multi-ICE无响应 | 1. 检查USB驱动 2. 测量JTAG电压 3. 换用备用电缆 |
更新驱动至2.2版 确保Vref在2.7-3.6V |
| 无法识别内核 | 1. 确认板卡供电 2. 检查nTRST信号 3. 降低JTAG频率 |
使用-noclock参数启动Server |
断点失效的典型原因:
我在实际项目中总结的调试口诀:
"一查连接二看电,三验时钟四找线,
五对地址六翻书,七问同事八重编"
Multi-ICE通信优化参数:
ini复制[MultiICE]
Timeout=3000
Cache=1024
ChainPosition=1
批量编程技巧:
实测数据对比:
| 模式 | 256KB写入时间 |
|---|---|
| 默认 | 12.7s |
| 优化 | 3.2s |
实时查看Timer控制寄存器:
bash复制# AXD命令行输入
mem 0x13000000 0x130000FF
配置Watchpoint捕获寄存器修改:
虽然Integrator是单核平台,但MultiICE支持多核调试:
我在调试ARM9+ARM7双核系统时,发现时钟同步是关键,建议: