Chinaunix首页 | 论坛 | 博客
  • 博客访问: 477902
  • 博文数量: 174
  • 博客积分: 2502
  • 博客等级: 少校
  • 技术积分: 1923
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-28 09:47
文章分类

全部博文(174)

文章存档

2011年(8)

2010年(16)

2009年(68)

2008年(82)

我的朋友

分类:

2008-10-20 11:04:23

目标初始化文件是包含一些初始化寄存器、内存区域的命令的文件,这些命令使得目标板处于需要调试裸板程序的状态。比如在用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
注:内在寄存器的名字可能随处理器内核的不同而不同,另外可能和汇编语言中的命名不同。
 

 
阅读(1244) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~