采用ROM监控器的调试技巧分析

嵌入式系统 时间:2012-06-01来源:网络

RedBoot也称作红帽(Red Hat)嵌入式调试引导程序,是一种用于嵌入式系统的独立开放源代码引导/装载器,任何人都可以从互联网上下载具有红帽eCos公共许可证的RedBoot源代码。

虽然RedBoot使用的是源于eCos实时操作系统(RTOS)的软件模块,并且常用于嵌入式Linux系统,但它与这两种操作系统完全无关,RedBoot能够用于任何操作系统或RTOS,甚至没有操作系统也行。

RedBoot自带一个GDB“存根进程(stub)”,可提供目标端通信软件,允许用户通过标准GDB协议命令进行远端调试,这样设计师就能利用RedBoot与运行GNU调试器的主机通过串口或网络连接起来调试设计的嵌入式软件。RedBoot支持多种处理器架构和硬件平台,包括 ARM、日立SHx、MIPS、PowerPC、SPARC以及x86等。

结构配置

RedBoot可以在多种不同配置下运行,但一般都是从目标平台的闪存引导区或引导ROM启动。RedBoot设计为系统上电启动,能提供完整的处理器初始化和设备设置,使设计人员能够迅速开始与系统通信。

RedBoot可设为用串口或以太网口(通过Telnet)进行通信,当从某个端口收到第一条命令后,那么随后所有的RedBoot通信都将从那个端口进行,直到系统重新启动。

利用以太网口与RedBoot通信时,一定要清楚目标平台是如何得到其IP地址的。设置目标平台IP地址有两种方法,分别是动态法和静态法。在静态方式下,目标平台的IP地址在编译RedBoot映像前设置(后文还会详细讨论这方面内容),也可通过串口命令设置。

RedBoot还可以采用BOOTP协议动态分配IP地址,BOOTP协议是目前许多网络广泛支持的动态主机配置协议(DHCP)的一个子集,与静态法一样,可在编译时或通过串口命令,使目标平台使用动态网络配置。当然,为了取得IP地址,目标设备必须连到能够访问BOOTP或DHCP服务器的网络上。

当装载的应用软件本身需要IP地址时,切记RedBoot映像不能使用动态IP地址,否则会在以太网端口的IP地址配置中引起冲突,从而造成与RedBoot或应用软件通信错误。在这种情况下,最好给不在动态网络配置协议范围内的RedBoot设置静态IP地址。

RedBoot还能根据与BOOTP响应一起收到的配置信息,用一般文件传输协议(TFTP)自动下载应用软件代码,此时在主机上同样需要TFTP服务器以提供软件映像访问。

命令行语句

RedBoot通过命令行接口(CLI)输入命令,在最小模式下,RedBoot命令行接口建立在目标平台硬件串口上,当有多个串口时,RedBoot可以用其中任何一个建立通信。RedBoot还能利用Telnet协议在以太网端口建立CLI(默认情况下RedBoot将端口 9000用于Telnet,不过可以用下面讲到的fconfig命令改变端口号)。图1:RedBoot初始化信息。

CLI输出的RedBoot初始化信息如图1所示,这些信息提供了有关RedBoot映像的信息,包括映像建立日期、目标硬件平台以及可供RedBoot使用的资源等。当显示出提示符

RedBoot>

后,就表明CLI已经准备好,用户可以开始输入命令。

RedBoot命令的基本格式是:


命令 [-选项1] [-选项2 参数值] 操作符

命令格式中的选项1和选项2代表可以加到某些命令中的可选参数,用于指示一些特定动作或附加信息,在选项2中还包括一个数值。操作符定义了某些特殊命令所需的附加信息。命令也可以缩写成最短的无歧义字符串,如dump、dum、du和d都是dump命令的有效写法。

RedBoot用load命令下载应用软件映像,映像可以用TFTP协议、X/Y调制解调器协议或直接从目标硬件下载。映像成功下载到目标平台后,就可以用go命令运行软件。

在RedBoot提示符下可键入help命令显示所有可用命令列表,并不是所有命令都能用于各种RedBoot映像,命令是否可用取决于目标平台的资源状况,例如有些命令就不适合用于没有闪存的硬件平台。

首字符是“$”的命令代表执行后会在RedBoot映像中调用GDB stub,一旦进入GDB模式,RedBoot就会一直保持这种模式直到系统重新启动。

有几条RedBoot命令需要在这里重点提一下。首先是闪存映像系统(fis)命令,当硬件平台上配有闪存时,RedBoot提供fis命令作为基本文件系统,这些命令主要用来管理文件系统映像。

另一个有用的命令是基于闪存的配置和控制命令fconfig。图2给出了用fconfig命令查询的输出信息,从中可以看出,配置命令可以设置RedBoot启动顺序。启动配置包括是否在初始化期间运行引导脚本、是否用BOOTP协议获取IP地址以及是否用GDB telnet端口进行调试等。图2:利用fconfig命令查询得到的RedBoot配置信息。

RedBoot也支持引导脚本,因此允许用户在上电过程完成后执行所需命令。在产品测试阶段采用RedBoot装载应用软件映像时引导脚本很有好处,用户还可以设置超时参数,在引导脚本执行前按下Ctrl+C中断执行。引导脚本可用fconfig命令进行设置。

构建RedBoot

能够自己重新构建RedBoot对用户来说非常重要,因为随时都可能需要进行代码更新和缺陷更正;如果用户希望定制RedBoot,那么也需要重建RedBoot,比如增加自己的命令或与它的接口。

1 2 3

关键词: ROM 监控器 调试技巧

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章


用户评论

请文明上网,做现代文明人
验证码:
查看电脑版