使用GDB调试嵌入式系统
——
本文将介绍在你的主站点上需要哪些软件和嵌入式设备,这样有助于你能够使用GDB调试嵌入式代码。
主机调试器
在主机站点上,你将必须需要一个GDB版本以作为目标处理器的调试器。卖方提供的GNU GCC工具应该附带一个编译好的可执行的GDB,否则,你必须从RedHat下载源代码或者需要一个GNU FTP,然后自己建立调试器。如果你要运行一个Linux主机或者一个Windows的Cygwin,建立调试器是一个相对简单的过程。
目标“树桩(stub)”
GDB调试器与一个运行于目标处理器的小“树桩(stub)”交流。主机调试器与一个使用简单的支持读写注册表和内存的协议交流。你将会发现GDB源目录中有许多处理器体系的写好的“树桩”,比如sh-stub.c, i386-stub.c, and m68k-stub.c。
如果你没有找到一个适合的“树桩”,在SourceForge上检查gdbstubs工程。你需要编译和连接合适的“树桩”到目标嵌入程序和提供两个通讯函数:getDebugChar()和putDebugChar()。你的系统初始化代码也会调用set_debug_traps()函数来初始化“树桩”和安装必要的调试异常处理。
编写自己的“树桩(stub)”
如果你无法找到已经写好的“树桩”,你不得不自己编写自己的“树桩”。如果你对目标CPUx体系很熟悉的话,这样的工程也不是很复杂。最简单的方法就是对现成的“树桩”进行更改。“树桩”中绝大多数的代码都与通讯协议有关,可以可以不变地使用于不同处理器之间。
你将需要更改内嵌汇编程序部分,这主要处理安装和处理处理器的异常问题,包括断点,单步,以及通用的保护错误。
异常处理相对比较简单:它们必须将CPU注册存放在一个静态缓冲器,然后输入handle_exception()函数,这一函数带有一个显示异常原因的整数参数。handle_exception()函数然后取得对CPU的控制并处理与主机调试部分的所有通讯。你将需要对handle_exception()函数作一些特别是更改,但绝大部分的代码都是可以利用的。
GDB的GUI
GDB是内嵌命令的工具。如果你适合于这一水平的工作,你将发觉用户界面对基本的调试任务非常的快捷和方便。如果你觉得更适应使用GUI调试器,你也必须安装GDB的GUI中的一个,比如Insight。
如果你对这方面更多的知识感兴趣,请查看extensiv online documentation on GDB(GDB中广泛在线文档)。
David Brenan是一个具有15年经验的嵌入式系统开发人员,他的工作包括授过奖章的专用数字音频产品的设计。
评论