目标初始化文件是包含一些初始化寄存器、内存区域的命令的文件,这些命令使得目标板处于需要调试裸板程序的状态。比如在用CodeWarrior debugger下载U-Boot二进制格式到目标板的时候需要调用初始化文件。
下面讲述一下初始化文件的命令语法:
- 忽略空格键和Tab键;
- 忽略大小写敏感;
- 除非特别注明,数值一般用十六、八或者十进制表示;
- 十六进制表示,以"0x"开头,如: 0xDEADBEEF
- 八进制表示,以"0"开头,如:01234567
- 十进制用非"0"开头:1234
- 注释以";"或者"#"开始,为行注释模式。
命令列表:
alternatePC |
ANDmem.l |
AND |
IncorMMR |
ORmem.l |
reset |
setMMRBaseAddr |
run |
sleep |
stop |
writemem.b |
writemem.w |
writemem.l |
writemem.r |
writemmr |
writereg |
writereg128 |
writespr |
writeupma |
writeupmb |
部分命令解释:
writereg ——为特定寄存器(regName)赋值(value)
语法: writereg regName value # 例如 writereg MSR 0x00001002
writemem.l ——写长整行数据(32bits)(value)到特定的内存地址(address)
语法: writemem.l address value # 例如 writemem.l 0x0001FF00 0x12345678
类似地,writemem.w是写字(16bits);writemem.b是写字节(8bits)。例如 writemem.b 0x0001FF00 0x1A
sleep ——使脚本在执行下一个命令之前暂停特定毫秒(milliseconds)的时间
语法: sleep milliseconds # 例如 sleep 300
setMMRBaseAddr ——为调试器提供处理器内存映射寄存器(MMR)的基地址,一旦执行了这个命令,调试器可以读、写和显示处理器的内存映射寄存器。在初始化文件中,这个命令必须在任何writemmr命令之前。
语法: setMMRBaseAddr baseAddress # 例如 setMMRBaseAddr 0x0f00000
alternatePC ——指定某一地址(address)给程序计数(PC)寄存器
语法: alternatePC address # 例如 alternatePC 0xc28737a4
writemmr ——为特定的内存映射寄存器(MMR)(regName)赋值(value)
语法: writemmr regName value # writemmr RMR 0x0001
AND ——将特定的内存映射寄存器(regName)和32bit的掩码值(mask)进行位与,结果赋回给这个寄存器
语法: ANDmmr regName mask # ANDmmr ACFG 0x00002000
ORmem.l ——用32bit掩码值(mask)与特定内存地址(address)的值进行位或,并将结果写回这个地址
语法: ORmem.l address mask # ORmem.l 0xC30A0008 0x01000800
reset ——复位目标板上的处理器,然后调试器debugger运行'run'(0)或者停止'stop'(1)
语法: reset code # reset 0 # code为0或1
run ——在当前程序计数器地址下开始程序执行
语法: run
stop ——停止程序执行并且使目标板上的处理器halt
语法: stop
writeupma ——写一个RAM字(ramWord)给用户可编程机制(UPM)A的RAM阵列的相应偏移(offset),UPM A的RAM阵列的每个偏移对应于一种存储处理方式;在一个RAM阵列相应偏移的RAM字(以及紧跟第一个RAM字的那些字)都是控制UPM A行为的指令。offset值的范围是0到0x3F.
语法:writeupma offset ramWord # writeupmb 0x18 0xAAAA1100
注:内在寄存器的名字可能随处理器内核的不同而不同,另外可能和汇编语言中的命名不同。
阅读(1631) | 评论(1) | 转发(0) |