采用ROM监控器的调试技巧分析
重建RedBoot映像的第一步是建立主机开发环境,建立RedBoot映像的工具要能运行在Windows或Linux主机平台上。主机开发工具包括GNU二进制应用程序(常称为binutils)、C/C++编译器和调试器。在目标处理器架构和主机操作系统平台上建立GNU开发工具和主机开发环境的详细步骤请参阅http://sources.redhat.com/ecos/getstart.html。
安装完GNU工具后,接着就是确定配置工具,用户可以采用图形化配置工具或命令行工具配置建立RedBoot映像。本文重点讲述图形化配置工具。
配置工具允许进行源代码级设置,从而确保RedBoot映像是专为各个用户应用而开发的,整个源代码知识库和配置工具用元件定义语言 (CDL)描述库中的元件及建立软件映像规则。配置工具利用先前设立的GNU工具建立适合特定处理器结构的RedBoot映像,有关配置工具的更多信息可以从网上得到,也可以从帮助菜单中获得。
下面的例子使用的是configtool-2.08-setup.exe,它是目前最新版配置工具,在安装之前最好阅读一下 readme.txt文件,一起下载的changes.txt文件则列出了不同版本的变动情况。接下来就是下载RedBoot源代码,RedBoot源代码包含在匿名CVS库中,可以用免费的客户软件访问。读者可从http://sources.redhat.com/ecos/anoncvs.html 获得更详细信息。
连上库以后,最好将包括eCos文件在内的所有源代码都下载,因为RedBoot会使用设备驱动器之类的eCos源文件。在确定建立自己RedBoot映像所需所有文件后,可以删掉其它不必要文件。RedBoot软件结构主要软件模块方框图如图3所示。
RedBoot软件结构采用分层方法,这样可以装入新的功能和软件组件,RedBoot的基础是eCos硬件抽象层(HAL)和设备驱动器。
让我们看一下RedBoot的源代码目录结构。从匿名CVS库中下载的源代码文件都放在packages子目录下,这个主目录下面是 redboot子目录,里面存放全部RedBoot文件。由于所有文件都是从匿名CVS库下载的,因此都位于current子目录下。在redboot子目录下有个名为ChangeLog的文件,它记录了RedBoot源文件的所有修改情况。
配置工具能够非常方便地用图形化方式配置RedBoot映像建立所必需的组件,通过选中或不选中某个特定组件选择框,可以激活或去除相应的配置选项,设置值可在窗口右边的方格中加入。
创建新RedBoot配置有两种方法。第一种方法是在配置工具的Build菜单下选择模板,这时会弹出模板对话框,然后从中选择硬件平台和模板数据包,这里我们的模板数据包选择redboot。这种方法为建立默认配置RedBoot映像提供了一个基本方式,选择菜单 Build->Packages,在弹出的Packages对话框中可以添加或删除其它数据包。
第二种创建RedBoot新配置的方法是导入eCos最小配置文件(.ecm)。RedBoot支持的每个硬件平台都包含这样的最小配置文件,这些配置文件一般位于硬件抽象层目录hal下对应于每个结构的misc子目录中。
最小配置文件包含特定硬件平台基本配置信息,将.ecm文件作为出发点,我们就有了作为基础的硬件平台工作配置文件,可改变配置选项支持RedBoot映像所需要的任何修改。
最小配置文件同样使用CDL。图4是一个eCos最小配置文件实例,源自redboot_ROM.ecm文件,适合那些采用PowerPC 的Motorola MBX开发板。从图中可以看到,.ecm文件列出了cdl_configuration命令的数据包清单,需要包含在RedBoot配置中。 cdl_option命令用来为特定选项设置选项值。
大多数支持平台都包含一个可以导入的ROM和RAM RedBoot.ecm文件作为配置起点,ROM和RAM表明RedBoot映像在目标硬件上的存放位置。一般情况下,RAM配置在最初调试硬件时使用,而ROM配置则在映像调试完成后准备存放进闪存时使用。RAM映像还可用于更新驻留闪存的RedBoot映像。i386 PC目标平台还包含了一个RedBoot FLOPPY配置文件,可供软盘启动RedBoot时使用。
为了导入最小配置文件,需要选择配置工具菜单中的File->Import命令,然后浏览相应的.ecm文件并选中,配置工具利用.ecm文件装载相应数据包并设置对应选项。如果发生因配置选项设置引起的冲突,配置工具会显示一个冲突解决对话框,选择继续按钮就可解决该冲突。
由于RedBoot还依赖其它软件模块如HAL,因此并不是所有的配置选项都包含在RedBoot ROM监控数据包内。在eCos HAL包中就有底层硬件配置选项,其它可能需要配置的数据包还有设备驱动器,例如在包括网络支持的平台上,以太网设备驱动器选项就包含在通用以太网支持包内。
如果想要网络通信,还需要建立RedBoot网络配置选项,这样可以设定目标硬件的默认IP地址,或BOOTP初始化期间使用的配置。
完成RedBoot配置后,最好把最小配置文件保存下来,这一步可以通过选择File->Export并输入文件名完成。
创建RedBoot映像
接下来需要保存当前的配置。为了将当前配置保存为eCos当前配置文件(.ecc),需要选择File菜单中的Save As命令,不妨把文件存为redboot_rom.ecc。这步操作将生成正在创建的RedBoot映像的工作目录结构,所有目录都将以刚才创建的.ecc文件名开头。在本例中,目录名以redboot开始。
正确设置好配置以后,下面就可以开始创建RedBoot映像了。为了执行创建过程,需要采用Build->Library命令,此时配置工具输出窗口将显示相关创建信息。创建过程完成后,生成的RedBoot映像存放在redboot_installbin子目录中,本例中新的 RedBoot映像取名为redboot_rom.bin。
评论