电子信息外文翻译成品Word下载.docx
- 文档编号:18394444
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:19
- 大小:125.83KB
电子信息外文翻译成品Word下载.docx
《电子信息外文翻译成品Word下载.docx》由会员分享,可在线阅读,更多相关《电子信息外文翻译成品Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
当你已经在主机上有了一个可执行二进制映像文件的时候,你就需要有一种途径来把这个映像文件下载到嵌入式系统运行了,可执行二进制影响一般是要下载到目标板上的存储器里并在那里执行,并且如果你配备了适当的工具的话,还可以在程序里设置断点或以一种不干扰的方式来观察运行情况,本章介绍了可用于下载,运行和调试嵌入式软件是各种技术。
4.1在ROM中的时候…….
下载嵌入式软件的最明显的方式,是把二进制映像载入一片存储片并把它插在目标板上,虽然一个整整的只读是不能再覆盖写入的,不过你会在第六章“存储器”里看到,嵌入式系统通常使用了一种特殊的只读存储器,这种存储器可以用特殊的编程器来编程(或重新写入程序).编程器是一种计算机系统,它上面有各种各样的形状和大小的芯片插座,可以用来为各种存储芯片编程。
在一个理想的开发条件下,设备编程器应该和主机接在同一个网络上。
这样,可执行二进制映像文件就很容易传给它来对ROM芯片编程。
首先把映像文件传到编程器,然后把存储器芯片插入大小形状何时的插座里并冲编程器屏幕上的菜单里悬着芯片的型号。
实际的编程过程可能需要几秒到几分钟,这要看二进制映像文件的大小和你所用的芯片型号来定。
变成结束以后,你就可以把ROM插进板上的插座了,当然,不能在嵌入式系统还在加电的时候做这件事。
应该在插入芯片之前关掉电源,插入之后在打开。
一旦加电,处理器就开始从ROM里取出代码并执行。
不过,要注意到每一种处理器对第一条指令的位置都有自己的要求。
例如,当Intel80188EB处理器复位以后,它就会取位于物理地址FFFF0h的指令来执行。
这个地址叫做复位地址,位于那里的指令就叫复位代码。
如果你的程序看起来像是没有正确运行,那可能是你复位代码出了问题。
你必须保证ROM里你的二进制映像格式要遵从目标处理器的复位要求。
在开发过程中,我发现在复位代码执行之后打开板子上的一个LED非常有用,这样我一眼就知道我的芯ROM程序是不是满足了处理器的基本要求。
注意:
调试技巧#1:
一个最简单的调试技巧就是利用LED来指示成功或者失败。
基本思路是慢慢地从LED驱动代码过渡到更大的程序,把LED驱动代码挪到下一个运行标记的地方。
这个方式最适合启动代码那样简单的,线性执行的程序。
如果你没有本章后面提到的远程调试器或者任何其他调试工具的话,这也许是你唯一的调试办法了。
Arcom电路板特殊的在线可编程存储器,叫做快闪存储器(简称闪存),它可以在不从板上移走的情况下编程。
实际上,板上的另外一块存储器中已经包含了可以对这个快闪存储器编程的功能。
你知道吗,Arcom电路板上实际带了两个只读存储器,一个是真正的ROM,其中包含了可以让用户对另外一片(即快闪存储器)在线编程的简单程序。
主机只需通过一个串行通信口和一个终端程序就可以和这个监控程序沟通了。
随板提供的“Target188EBMonitorUser’sManual”包含了把一个Intel十六进制格式文件,比如blink.hex,载入到闪存里的指令。
这种下载技术的最大缺点是没有一种简单的方法来调试运行在ROM外面的软件,处理器以一种很高的速度提取指令并执行,并没有提供任何使你观察程序内部状态的手段。
这在你已经知道你的软件工作正常并且你在计划分发这个系统的时候看起来是不错的,不过对于正在开发的软件是一点用多没有。
当然,你还是可以检查LED的状态和其他外部可视硬件指示,但这永远不会比一个调试器提供更多的信息和反馈。
4.2远程调试器
如果可能的话,一个远程调试器可以通过主机和目标机之间的串行网络连接来下载、执行和调试嵌入式软件。
一个远程调试器的前端和你可能用过的其他调试器都一样,通常有一个基于文本或GUI(图形用户界面)的主窗口和几个小一点的窗口来显示正在运行的程序的源代码、寄存器内容和其他相关信息。
所不同的是,在嵌入式系统的情况下,调试器和被调试的软件分别运行在两台不同的计算机上。
一个远程调试器实际上包含两部分软件。
前端运行在主机上并提供前述的人机界面。
但还有一个运行在目标处理器上的隐藏的后端软件来负责通过某种通信链路和前端通信。
后端一般被称作调试监控器,它提供了对目标处理器的低层控制。
监视控制器通常是你或生产厂以前讲过的方式放置在ROM里的,它在目标处理器复位的时候会自动启动。
它监控和主机的通信链路并对远程调试器的请求做出回应。
当然,这些请求和监控器的响应必须符合某种预先定义好的通信协议,而且这些协议通常是很底层的。
远程调试器的请求的一些示例就如“读寄存器x”、“修改寄存器y”、读从address开始的内存的n字节”还有“修改位于address的数据”等等。
远程调试器通过组合利用这些低层命令来完成诸如下载程序、单步执行和设置断点等高级调试任务。
GUN调试器(gdb)就是这样一个调试器,像其他GUN工具一样,它一开始是被设计用来完成本机调试,后来才具有了跨平台调试的能力。
所以你可以创建一个运行在任何被支持的主机上的GDB前端,它就会理解任何被支持的目标上的操作码和寄存器名称。
一个兼容的调试兼容器的源代码包含在GDB软件包里面,并需要被移植到目标平台上,不过,要知道这个移植可能需要一些技巧,特别是如果你的配置里只能通过LED来调试的话(参见调试技巧#1)。
GDB前端和调试监控器之间的通信专门被设计来通过串行连接进行字节传输。
表4-1显示了命令格式和一些主要的命令。
这些命令示范了发生在典型的远程调试器前端和调试器之间的交互类型。
Table4-1.GDB调试监控器命令
命令
请求格式
响应格式
读存储器
g
data
写存储器
Gdata
OK
读某地址数据
maddress,length
写某地址数据
Maddress,length:
data
启动/重启执行
c
Ssignal
从某地址执行
caddress
单步执行
s
从某地址开始单步执行
saddress
重置/中止程序
k
noresponse
远程调试器是嵌入式软件里最常用到的下载和测试工具。
这主要是因为它们一般比较便宜。
嵌入式软件开发人员已经有了所需的主机了,任何一个远程调试器的价格并不会在全套跨平台开发工具(编译器、连接器、定址器等等)的价格上增加多少,还有调试器的供应商们通常会提供他们的调试监控器的源代码,以增加他们的用户群。
Arcom电路板在交付的时候在快闪存储器里包含了一个免费的调试系统。
和Arcom提供的主机软件一起使用,这个调试监控器就可以把程序直接下载到目标板的RAM里并运行,你可以用tload工具来完成这一任务。
按照“SourceVIEWforTarget188EBUser’sManual”的指示简单地把SourceVIEW串行通信适配器接到目标板和主机上,然后在主机PC上执行下述命令:
tload-gblink.exe
SourceViewTargetLoaderv1.4
Copyright(c)ArcomControlSystemsLtd1994
Opening'
blink.exe'
...downloadsize750Hbytes(2K)
CheckingCOM1(pressESCkeytoexit)...
Remoteident:
TDR188EBversion1.02
Downloadsuccessful
Sending'
GO'
commandtotargetsystem
-g选项告诉调试监控器程序下载一结束就马上开始运行,这样一来,运行就是和ROM里的程序完全对应的RAM里的程序了。
在这种情况下,我们也许会以可重定址程序来开始,那么tload工具也会自动地在RAM里第一个可利用的地址处为我们的程序重新定址。
对于远程调试的目的,Arcom的调试监控器可以用Borland的TurboDebugger做前端。
然后TurboDebugger就可以单步执行你的C/C++和汇编程序,在程序里设置断点,并可以在程序运行时监控变量、寄存器和堆栈(注1),下面是你可能用来启动一个对闪烁LED程序的调试会话的命令:
tdrblink.exe
tver-3.1
TargetDebuggerVersionChangerv1.2
TDR88setforTDversion3.1
td-rp1-rs3blink.exe
TurboDebuggerVersion3.1Copyright(c)1988,92BorlandInternational
Waitingforhandshakefromremotedriver(Ctrl-Breaktoquit)
Tdr命令实际是调用另外两个命令的一个批处理文件。
第一个命令告诉板上的调试监控器你用的是哪个版本的TurboDebugger,第二个才实际调用TurboDebugger,每一次用Arcom板启动一个调试会话的时候都会发出这两条命令、tdr.bat批处理文件只是用来把它们组合成一个单一的命令。
这里我们再一次使用了程序的可重定址版本,因为我们要把程序下载到RAM里并在那里执行它。
调试器启动选项-rpl和-rp3设置了到调试监控器的通信链路的参数。
-rpl代表“remote-port(远程端口)=1”(COM1),-rp3代表“remote-speed(远程速率)=3”(38400波特率),这些是同Arcom调试监控器通信所要求的参数。
在建立了和调试监控器的联系后,TurboDebugger就可以开始运行了。
如果没成功的话,可能是串行连接出了问题。
把你的安装过程和SourceView用户手册中的描述对照一下。
一旦进入TurboDebugger,你就会看到一个对话框显示“Programoutofdateonremote,sentoverlink?
(远程的程序已过期,是否通过链路发送?
)”,选择“yes”后,blink.exe的内容就会被下载到目录RAM中,然后调试器会在main处设置第一个断点并指示调试监控器运行程序到此处。
所以你现在看到的就是main的C源代码,一个光标指示着嵌入式处理器的指令指针正指向这个例程的入口点。
使用标准的TurboDebugger命令,你可以单步执行程序、设置断点、监控变量和寄存器的值、做调试器允许的任何事。
或者可以按下F9立即运行程序的剩下部分、这样做了以后,你就能看到板上的绿色LED开始闪烁了。
确认程序和调试器都正常工作之后,按下Arcom板上的复位开关来复位复位嵌入式处理器,然后LED会停止闪烁,TurboDebugger又可以响应你指令了。
4.3仿真器
远程调试器用来监视和控制嵌入式软件的状态是很有用,不过只有用在线仿真器(In-CircuitEmulator,ICE)才能检查运行程序的处理器状态。
实际上,ICE取代了(或者仿真了)目标板上的处理器。
它自己就是一个嵌入式系统,有它自己的目标处理器、RAM、ROM和自己的嵌入式软件,结果在线仿真器一样非常贵,往往要比目标硬件还贵。
但是这是一种强有力的工具,在某些严格的环境下可以帮你很大忙。
同调试监控器一样,仿真器也有一个远程调试器作为用户界面。
某些情况下,甚至能使用相同的前端调试器。
但是仿真器有自己的目标处理器,所以就有可能实时的监视和控制处理器的状态。
这就允许仿真器在调试监控器提供的功能外支持一些高级的调试特性,如:
硬件断点额实时跟踪。
使用调试监控器,你可以在你的程序里设置断点。
不过这些软断点只能到指令提取级别,也就是相当于“在提取该指令前停止运行”。
相比之下,仿真器同时支持硬件断点。
硬件断点允许响应多种事件来停止运行。
这些事件不仅包括指令提取,还有内存和I/O读写以及中断。
例如,你可以对事件“当变量foo等于15同时AX寄存器等于0”设置一个硬件断点。
在线仿真器的另一种有用的特性是实时跟踪,典型地仿真包含了大块的专用RAM,专门用来存储执行过的每一个指令周期的信息。
这个功能使你可以得知事件发生的精确次序,这就嫩帮助你回答诸如计时器中断是发生在变量bar变成94之前还是之后这类的问题。
另外,通常可以限制存储的信息或者在查看之前预处理数据以精简要检查的数据的数量。
4.4ROM仿真器
另外一种仿真器也值得在这里提一下。
ROM仿真器被用来仿真一个只读存储芯片。
和ICE一样,它是一个独立的嵌入式系统并和主机与目标板相连。
不过,这次是通过ROM芯片插座来和目标板连接的。
对于嵌入式处理器,它就像一个只读存储芯片,而对于远程调试器,它又像一个调试器。
ROM仿真器相比调试监控器有如下几个优点。
首先,任何人都不需要为你的专有目标硬件移植调试监控器代码。
其次,ROM仿真器通常自带了连接主机的串行或网络连接,所以不必用主机自己的通常很有限的资源。
最后,ROM仿真器完全替代了原有的ROM,所以不会占用目标板的存储空间来容纳调试监控器代码。
4.5模拟器和其他工具
当然,还可以使用另外很多种调试工具,比如模拟器(simulator)、逻辑分析仪和示波器。
模拟器是一个完全基于主机的程序,它模拟了目标处理器的功能和指令集,它的用户界面通常和远程调试器的一样和比较类似。
实际上,可以为后端模拟器使用一个调试器来做前端,就像图4-2显示的那样。
尽管模拟器有很多不足,它在项目的早期特别是没有任何实际的硬件可以用来试验程序的时候就相当有用。
注意:
调试技巧#2:
如果曾经遇到目标处理器从不同于你认为应该的数据手册里读取数据,尝试在模拟器上运行相同的软件。
如果你的程序正常工作,那么你知道这是某种形式的硬件问题。
但是,如果模拟器展示相同的问题像实际芯片一样,你就知道你错误的曲解了处理器的所有文件。
到目前为止,一个模拟器最大的缺点是它仅能模拟处理器,而且嵌入式系统经常包含一个或多个其他重要设备。
与这些设备相互作用有时会模仿与仿真脚本或其他变通办法,但这种解决方法相比模拟本身的价值创造了更多的麻烦。
所以,你可能不会做太多的模拟器,一旦你有实际嵌入式硬件提供给您。
他们对处理器和其它芯片之间的相互作用非常有用。
因为他们只能查看信号处理器以外的错误,但是,他们无法控制你的像一个调试器或仿真器软件可以执行流程。
这使得这些工具本身明显用处不大。
但是,再加上像一个远程调试调试器或仿真器工具软件,它们可以是非常宝贵。
逻辑分析仪是专门用来调试数字电路硬件的一种实验室设备。
它会有几十个甚至上百个输入,它们分别只用来做一件事:
它所连接的电信号的逻辑电平是1还是0。
你选择的任何输入子集都可以以时间坐标显示出来,如图4-3所示。
大多数逻辑分析仪也允许你以特定的模式捕捉数据或“触发器”。
例如,你可以发出如下请求:
“显示输入信号1到10的值,但是直到输入2和5同时变为0时才开始记录”。
调试技巧#3:
有时可能需要同时观察运行着嵌入式软件的目标板上电信号的一个子集。
例如:
你可能想观察处理器和它所连一个外设的总线交互信号。
一个技巧是在你感兴趣的交互的前面加上一个输出语句。
这个输出语句会在处理器的一个或多个引脚上产生特定的逻辑电平。
例如,你可以使一个空闲的I/O引脚从0到1,然后逻辑分析仪就可以设置成响应这个使劲的触发器并开始捕获后续的所有情况。
示波器是用于硬件调试的另一种试验室设备,不过它可以在任何硬件上检查任何电信号,不管是模拟的还是数字的。
在手头没有逻辑分析仪的情况下,示波器可以迅速观察特定引脚上的电压,也可以做一些更复杂的事情。
不过,它的输入很少(通常有四个)而且通常没有高级的触发逻辑。
结果,只有在没有软件调试工具的情况下它才会对你有用。
附件2:
外文原文(复印件)
RTX-51Real-Time
OperatingSystem
RTX51isamultitaskingreal-timeoperatingsystemforthe8051family.RTX51simplifiessystemandsoftwaredesignofcomplexandtime-criticalprojects.RTX51isapowerfultooltomanageseveraljobs(tasks)onasingleCPU.
TherearetwodistinctversionsofRTX51:
RTX51Fullwhichperformsbothround-robinandpreemptivetaskswitchingwith4taskprioritiesandcanbeoperatedwithinterruptfunctionsinparallel.RTX51supportssignalpassing;
messagepassingwithamailboxsystemandsemaphores.Theos_waitfunctionofRTX51canwaitforthefollowingevents:
interrupt;
timeout;
signalfromtaskorinterrupt;
messagefromtaskorinterrupt;
semaphore.
RTX51TinywhichisasubsetofRTX51Full.RTX51Tinyeasilyrunsonsingle-chipsystemswithoutoff-chipmemory.However,programusingRTX51Tinycanaccessoff-chipmemory.RTX51Tinyallowsround-robintaskswitching,supportssignalpassingandcanbeoperatedwithinterruptfunctionsinparallel.Theos_waitfunctionofRTX51Tinycanwaitforthefollowing
events:
interval;
signalfromtaskorinterrupt.TherestofthissectionusesRTX-51torefertoRTX-51FullandRTX-51Tiny.Differencesbetweenthetwoarestatedwhereapplicable.
Introduction
Manymicrocontrollerapplicationsrequiresimultaneousexecutionofmultiplejobsortasks.Forsuchapplications,areal-timeoperatingsystem(RTOS)allowsflexibleschedulingofsystemresources(CPU,memory,etc.)toseveraltasks.RTX-51implementsapowerfulRTOSthatiseasytouse.RTX-51workswithall8051derivatives.
YouwriteandcompileRTX-51programsusingstandardCconstructsandcompilingthemwithC51.OnlyafewdeviationsfromstandardCarerequiredinordertospecifythetaskIDandpriority.RTX-51programsalsorequirethatyouincludetheRTX51.HorRTX51TNY.Hheaderfile.WhenyouselectintheμVision2dialogOptionsforTarget-Targettheoperatingsystem,thelinkeraddstheappropriateRTX-51libraryfile.
SingleTaskProgram
AstandardCprogramstartsexecutionwiththemainfunction.Inanembeddedapplication,mainisusuallycodedasanendlessloopandcanbethoughtofasasingletaskthatisexecutedcontinuously.Forexample:
Round-RobinTaskSwitching
RTX51Tinyallowsaquasi-parallel,simultaneousexecutionofseveraltasks.Eachtaskisexecutedforapredefinedtimeoutperiod.Atimeoutsuspendstheexecutionofataskandcausesanothertasktobestarted.Thefollowingexampleusesthisround-robintaskswitchingtechnique.
SimpleCProgramusingRTX51
RTX51startstheprogramwithtask0(assignedtojob0).Thefunctionos_create_taskmarkstask1(assignedtojob1)asreadyforexecution.Thesetwofunctionsaresimplecountloops.Afterthetimeoutperiodhasbeencompleted,RTX51interruptsjob0andbeginsexecutionofjob1.Thisfunctionevenreachesthetimeoutandthesystemcontinueswithjob0.
Theos_waitFunction
Theos_waitfunctionprovidesamoreefficientwaytoallocatetheavailableprocessor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子信息 外文 翻译 成品