Motorola微处理器的bootloader分析与应用
f. 根据需要修改连接配置文件Flash.lcf,设定连接时目标代码的地址分配。
g. 编写相应的硬件驱动,如该板上用到的MBM29LV 160BE70 Flash芯片的驱动程序文件am29xxxx.c和am29 xxxx.h、该板上用到的网卡芯片的驱动程序文件Ns8390.c以及5307的串口驱动函数等。
(2)bootloader命令简介[2]
dBUG提供了丰富的调试命令:
① 程序流程控制命令reset(系统重启)、go、exe(用户程序执行)、br(断点设置)、step(单步)、trace(单步跟入)、gt(运行到);
② 内存和寄存器操作命令md、mm(内存查看和修改)、rd、rm(寄存器查看和修改)、bm(内处块移动)、bf(内存块数据填充)、bc(内存块比较)、bs(内存块查找);
③ 指令和数据操作命令dc(数据转换)、dis(反汇编)、asm (汇编指令插入)、sym(符号表管理);
④ 程序下载命令dl(通过串口下载)、dn(通过网络下载)。
(3)bootloader用户功能扩展
除了dBUG bootloader本身提供给用户的命令外,用户还希望根据不同的情况定制自己的命令。如Linux加载、μC/OS加载、kermit下载等。一般自己添加的命令都会放在一个单独的C文件
里面。为了方便,用户也将自己添加的命令都放在board.c文件的最后。
例如,用户想要给dBUG添加μC/OS操作系统加载的功能,除了在dBUG中加上自己的程序加载代码外,还应给dBUG添加一个名为ucosii的用户命令。这样可以通过在界面上输入命令的形式实现相应的加载功能。首先应该在board.c里面实现这个函数:
ucos_boot (int argc, char **argv)
{
…………
}
而后,应在cmds.c文件里面声明这个函数,并在紧接着的UIF_CMD UIF_CMDTAB数组里面声明这个命令的特性和参数。
{“ucosii”, 4,0,0,0,ucos_boot, “Boot uCOS-II from RAM”,””},
其中,第一个test字符串是命令的名称,第二个4表明命令识别的时候要匹配4个字符才行,最后的字符串是help命令时对test命令的解释。在描述中间的test表明指向的函数名称。这样就很方便地添加了这个用户命令。
4 结 论
综上所述,Motorola公司的dBUG软件由于其良好的源代码组织结构使得用户在其上开发应用非常方便,用户稍加修改就可将其移植到不同的硬件平台上。它拥有良好的用户界面,不仅可以完成用户所需的程序下载、加载等功能,而且还可以方便地进行调试,使用户可以更好地监控自己的程序。除此之外,用户还可以很方便地添加自己所要的功能,其结构具有良好的可扩展性。所以,Motorola公司的dBUG bootloader的确是一个优秀的bootloader范例,给广大的嵌入式系统开发者提供了一个不错的选择。
《Motorola微处理器的bootloader分析与应用(第3页)》