电子信息外文翻译成品
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
毕业设计(论文)外文资料翻译
系:电气工程学院
专业:
姓名:
学号: 0414731 外文出处:Getting Started with μVision2
(用外文写)
附件: 1.外文资料翻译译文;2.外文原文。
附件1:外文资料翻译译文
嵌入式系统程序的下载和调试
当你已经在主机上有了一个可执行二进制映像文件的时候,你就需要有一种途径来把这个映像文件下载到嵌入式系统运行了,可执行二进制影响一般是要下载到目标板上的存储器里并在那里执行,并且如果你配备了适当的工具的话,还可以在程序里设置断点或以一种不干扰的方式来观察运行情况,本章介绍了可用于下载,运行和调试嵌入式软件是各种技术。
4.1 在ROM中的时候…….
下载嵌入式软件的最明显的方式,是把二进制映像载入一片存储片并把它插在目标板上,虽然一个整整的只读是不能再覆盖写入的,不过你会在第六章“存储器”里看到,嵌入式系统通常使用了一种特殊的只读存储器,这种存储器可以用特殊的编程器来编程(或重新写入程序).编程器是一种计算机系统,它上面有各种各样的形状和大小的芯片插座,可以用来为各种存储芯片编程。
在一个理想的开发条件下,设备编程器应该和主机接在同一个网络上。这样,可执行二进制映像文件就很容易传给它来对ROM芯片编程。首先把映像文件传到编程器,然后把存储器芯片插入大小形状何时的插座里并冲编程器屏幕上的菜单里悬着芯片的型号。实际的编程过程可能需要几秒到几分钟,这要看二进制映像文件的大小和你所用的芯片型号来定。
变成结束以后,你就可以把ROM插进板上的插座了,当然,不能在嵌入式系统还在加电的时候做这件事。应该在插入芯片之前关掉电源,插入之后在打开。
一旦加电,处理器就开始从ROM里取出代码并执行。不过,要注意到每一种处理器对第一条指令的位置都有自己的要求。例如,当Intel80188EB处理器复位以后,它就会取位于物理地址FFFF0h的指令来执行。这个地址叫做复位地址,位于那里的指令就叫复位代码。
如果你的程序看起来像是没有正确运行,那可能是你复位代码出了问题。你必须保证ROM里你的二进制映像格式要遵从目标处理器的复位要求。在开发过程中,我发现在复位代码执行之后打开板子上的一个LED非常有用,这样我一眼就知道我的芯ROM程序是不是满足了处理器的基本要求。
注意:调试技巧#1:一个最简单的调试技巧就是利用LED来指示成功或者失败。基本思路是慢慢地从LED驱动代码过渡到更大的程序,把LED驱动代码挪到下一个运行标记的地方。这个方式最适合启动代码那样简单的,线性执行的程序。如果你没有本章后面提到的远程调试器或者任何其他调试工具的话,这也许是你唯一的调试办法了。
Arcom电路板特殊的在线可编程存储器,叫做快闪存储器(简称闪存),它可以在不从板上移走的情况下编程。实际上,板上的另外一块存储器中已经包含了可以对这个快闪存储器编程的功能。你知道吗,Arcom电路板上实际带了两个只读存储器,一个是真正的ROM,其中包含了可以让用户对另外一片(即快闪存储器)在线编程的简单程序。主机只需通过一个串行通信口和一个终端程序就可以和这个监控程序沟通了。随板提供的“Target188EB Monitor User’s Manual”包含了把一个Intel十六进制格式文件,比如blink.hex,载入到闪存里的指令。
这种下载技术的最大缺点是没有一种简单的方法来调试运行在ROM外面的软
件,处理器以一种很高的速度提取指令并执行,并没有提供任何使你观察程序内部状态的手段。这在你已经知道你的软件工作正常并且你在计划分发这个系统的时候看起来是不错的,不过对于正在开发的软件是一点用多没有。当然,你还是可以检查LED的状态和其他外部可视硬件指示,但这永远不会比一个调试器提供更多的信息和反馈。
4.2 远程调试器
如果可能的话,一个远程调试器可以通过主机和目标机之间的串行网络连接来下载、执行和调试嵌入式软件。一个远程调试器的前端和你可能用过的其他调试器都一样,通常有一个基于文本或GUI(图形用户界面)的主窗口和几个小一点的窗口来显示正在运行的程序的源代码、寄存器内容和其他相关信息。所不同的是,在嵌入式系统的情况下,调试器和被调试的软件分别运行在两台不同的计算机上。
一个远程调试器实际上包含两部分软件。前端运行在主机上并提供前述的人机界面。但还有一个运行在目标处理器上的隐藏的后端软件来负责通过某种通信链路和前端通信。后端一般被称作调试监控器,它提供了对目标处理器的低层控制。
监视控制器通常是你或生产厂以前讲过的方式放置在ROM里的,它在目标处理器复位的时候会自动启动。它监控和主机的通信链路并对远程调试器的请求做出回应。当然,这些请求和监控器的响应必须符合某种预先定义好的通信协议,而且这些协议通常是很底层的。远程调试器的请求的一些示例就如“读寄存器x”、“修改寄存器y”、读从address开始的内存的n字节”还有“修改位于address的数据”等等。远程调试器通过组合利用这些低层命令来完成诸如下载程序、单步执行和设置断点等高级调试任务。
GUN调试器(gdb)就是这样一个调试器,像其他GUN工具一样,它一开始是被设计用来完成本机调试,后来才具有了跨平台调试的能力。所以你可以创建一个运行在任何被支持的主机上的GDB前端,它就会理解任何被支持的目标上的操作码和寄存器名称。一个兼容的调试兼容器的源代码包含在GDB软件包里面,并需要被移植到目标平台上,不过,要知道这个移植可能需要一些技巧,特别是如果你的配置里只能通过LED来调试的话(参见调试技巧#1)。
GDB前端和调试监控器之间的通信专门被设计来通过串行连接进行字节传输。表4-1显示了命令格式和一些主要的命令。这些命令示范了发生在典型的远程调试
远程调试器是嵌入式软件里最常用到的下载和测试工具。这主要是因为它们一般比较便宜。嵌入式软件开发人员已经有了所需的主机了,任何一个远程调试器的价格并不会在全套跨平台开发工具(编译器、连接器、定址器等等)的价格上增加多少,还有调试器的供应商们通常会提供他们的调试监控器的源代码,以增加他们的用户群。
Arcom电路板在交付的时候在快闪存储器里包含了一个免费的调试系统。和Arcom提供的主机软件一起使用,这个调试监控器就可以把程序直接下载到目标板的RAM里并运行,你可以用tload工具来完成这一任务。按照“SourceVIEW forTarget188EB User’s Manual”的指示简单地把SourceVIEW串行通信适配器接到目标板和主机上,然后在主机PC上执行下述命令:
tload -g blink.exe
SourceView Target Loader v1.4
Copyright (c) Arcom Control Systems Ltd 1994
Opening 'blink.exe'... download size 750H bytes (2K)
Checking COM1 (press ESC key to exit)...
Remote ident: TDR188EB version 1.02
Download successful
Sending 'GO' command to target system
-g选项告诉调试监控器程序下载一结束就马上开始运行,这样一来,运行就是和ROM里的程序完全对应的RAM里的程序了。在这种情况下,我们也许会以可重定址程序来开始,那么tload工具也会自动地在RAM里第一个可利用的地址处为我们的程序重新定址。
对于远程调试的目的,Arcom的调试监控器可以用Borland的Turbo Debugger 做前端。然后Turbo Debugger就可以单步执行你的C/C++和汇编程序,在程序里设置断点,并可以在程序运行时监控变量、寄存器和堆栈(注1),下面是你可能用来启动一个对闪烁LED程序的调试会话的命令:
tdr blink.exe
tver -3.1
Target Debugger Version Changer v1.2
Copyright (c) Arcom Control Systems Ltd 1994
Checking COM1 (press ESC key to exit)...
Remote ident: TDR188EB version 1.02
TDR88 set for TD version 3.1
td -rp1 -rs3 blink.exe
Turbo Debugger Version 3.1 Copyright (c) 1988,92 Borland International Waiting for handshake from remote driver (Ctrl-Break to quit)
Tdr命令实际是调用另外两个命令的一个批处理文件。第一个命令告诉板上的调试监控器你用的是哪个版本的Turbo Debugger,第二个才实际调用Turbo Debugger,每一次用Arcom板启动一个调试会话的时候都会发出这两条命令、tdr.bat批处理文件只是用来把它们组合成一个单一的命令。这里我们再一次使用了程序的可重定址版本,因为我们要把程序下载到RAM里并在那里执行它。调试器启动选项-rpl和-rp3设置了到调试监控器的通信链路的参数。-rpl代表“remote-port(远程端口)