HC08系列微控制器在线调试的关键技术分析doc.docx
- 文档编号:1460658
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:13
- 大小:25.17KB
HC08系列微控制器在线调试的关键技术分析doc.docx
《HC08系列微控制器在线调试的关键技术分析doc.docx》由会员分享,可在线阅读,更多相关《HC08系列微控制器在线调试的关键技术分析doc.docx(13页珍藏版)》请在冰豆网上搜索。
HC08系列微控制器在线调试的关键技术分析doc
HC08系列微控制器在线调试的关键技术分析
5322009,30(3)计算机工程与设计ComputerEngineeringandDesign
?
嵌入式系统?
HC08系列微控制器在线调试的关键技术分析
刘晓升,王宜怀
(苏州大学计算机与科学技术学院,江苏苏州2l5006)
摘要:
调试系统是嵌入式处理器中不可或缺的功能模块之一,讲述了在线调试系统模型,分析了具有MON08编程调试接
口的HC08系列微控制器在线调试系统的核心技术,详细阐述了源程序的断点设置,目标系统中用户程序的执行,单步调试
及变量的实时跟踪技术.将这些关键技术应用于HC08在线编程调试系统,实现了系统的通用性和高效性.
关键词:
嵌入式系统;MON08;在线调试;HC08微处理器;单步调试
中图法分类号:
TP368文献标识码:
A文章编号:
1000.7024(2009)030532—04
Analysisofkeytechniqueforin—circuitdebugsystembasedonHC08serialMCU
LIUXiao—sheng.WANGYi.huai
(SchoolofComputerScienceandTechnology,SoochowUniversity,Suzhou215006,China)
Abstract:
Thedebugsystemisacriticalcomponentinembeddedprocessor.Anin—circuitdebuggingsystemmodelispresented,the
coretechnologyisexpoundedaboutin?
-circuitdebuggingsystemoftheHC08serialMicrocontrollerswiththeMON08debugginginter?
-
face,whichincludessettingbreakpointsonsourcecode,theexecutionoftheuserprogram,single—stepdebuggingandreal—timetracking
ofthevariables,discussestheimplementationofthesetechnologiesandgivesspecificanalysisofthetechnicaldifficulties.Theversatility
andefficiencyofthein—circuitprogramminganddebuggingsystemareachievedbyapplyingkeytechnologiestothesystem.
Keywords:
embeddedsystem;MON08;in?
-circuitdebug;HC08serialMCU;single?
?
stepdebug
0引言
传统的嵌入式应用开发方法主要是使用仿真器模拟目
标MCU的运行情况,希望达到在目标系统硬件尚未定版情
况下,先行调试目标系统的硬件,软件设计,为系统的研制
提供前期基础.但是,一些情况下,难以实现100%的实时
仿真,有些功能在用仿真器调试时十分正常,而到了实际应
用系统却不能顺利运行.同时,传统的仿真方式的一些调
试功能仅适用于初学者,对于具有一定开发经验并拥有通
用功能模块积累的开发者,往往增加了开发时间.
目前,许多公司新推出的微控制器已经具备了在线调试
接口或模块,如:
Freescale公司HC08系列MCU的MON接口,
S08及S12系列的BDM接口.作者所在的苏州大学Freescale
嵌入式实验中心经过几年的努力,在研究这些调试接口的基
础上,自主研制了HC08系列微控制器的在线调试系统.
该系统与传统的仿真器相比具有如下新特点:
①传统仿
真器的"仿真系统"与实际目标系统的硬件不是一套系统,难
以实现目标系统的全部功能,这主要是由于过去的目标系统
的程序存储器多为OTP,EPROM或不支持在线写入的存储
器.新型的开发系统的硬件可以直接构成目标系统的评估
硬件,所调试的软件即运行于此系统,可以实现1O0%在线实
时仿真;②与传统仿真器相比,提供的调试功能与方法更多,
操作更加简便,可以缩短开发进程;③由于开发系统的硬件
体系就是目标评估系统,不必为仿真功能配置另外硬件,极
大地减少了开发过程中的硬件实验成本.鉴于国内具有这
种功能的新型仿真开发工具还较少,技术仍在完善之中,本
文重点讨论我们研制的HC08系列微控制器在线调试系统的
一
些关键技术.
1在线调试系统模型
在线调试系统的核心思想是通过芯片的调试接口,控制
目标芯片程序的运行与停止,获取目标芯片程序的运行信息,
如:
内存单元的数值,PC指针,堆栈指针等信息,同时观察硬
件系统的运行情况,综合软硬件信息,判断程序的正确性.
为了实现对目标芯片程序的在线调试功能,上位机软件
提供源程序的断点设置功能,接收目标芯片运行信息及对目
标芯片程序的控制.上位机不能直接和目标芯片的调试接口
进行数据通信,在这两者之间需要一个连接的"桥梁"——调
试器.调试器接收上位机的操作指令(如:
运行程序,单步步
入,单步步过等),转化为调试接口的相关信息,并通过调试接
口把这些信息发送给目标芯片.
另一方面,调试器也需要接收目标芯片的反馈信息,组成
收稿日期:
2008—07—28E—mail:
liuxiaosheng@suda.edu.CD
基金项目:
江苏省教育厅科研基金项目(Q2118201).
作者简介:
刘晓升(1976~),男,安徽安庆人,硕士,讲师,研究方向为智能控制和嵌入式系统;王宜怀(1962--),男,江苏宿迁人,博士
教授,硕士生导师,CCF会员,研究方向为人工智能和嵌入式系统.
刘晓升,王宜怀:
HC08系列微控制器在线调试的关键技术分析2009,30(3)533
特定的数据帧格式,发送给上位机.图1给出了在线调试系
统的系统模型.
图1在线调试系统的系统模型
现阶段,嵌入式系统内存资源相对紧张,嵌入式系统源
程序通常采用汇编或C语言.~行汇编代码对应的机器码相
对固定,但c语言的----行代码编译后可能对应很多条汇编指
令,有一段机器码与之对应.针对两种语言源程序的在线调
试方法基本相同,具体实现时,针对C语言源程序的断点设
置更为复杂.本文主要讨论基于c语言源程序的在线调试系
统的关键技术:
源程序的断点设置,调试接口的数据通信,目
标系统中用户程序的执行,单步调试及变量的实时跟踪,其中
调试接口的数据通信在文献【1】中已有详细的讨论,这里不再
进行讲述.
2源程序断点设置
源程序的断点设置是调试者在源代码的基础上,设置标
志,当程序执行到此时,停止程序的执行,其本质是获取标志
行的指令代码地址.
2.1调试信息文件
C语言源程序的断点设置依赖于调试信息文件(后缀名为
.
db,该文件是在c语言程序编译时产生的,一些编译器在默
认方式下不产生该类型文件,需要在编译命令后添加编译参
数.在我们实现的系统中,编译和连接命令中部有参数一g,产
生编译信息,如编译命令:
sdcc08一g—e—lmain.C
调试信息文件包含多个段,每一一段包含一个源文件的调
试信息,其文件格式是ASCII编码,文件中的每一行都是一个
独立的命令.图2给出了一个调试信息文件的实例,图中的
嗣11调试文件的版本信息
HC08CPU类型
鞠E:
\example\以下FILE命令的路径
main.c一个文件段的开始
懑黼main8035fV一个c函数段的开始
秘168038一个块的开始
鞫10A[12:
3:
2]1局部变量
168038]澜
188038l;I
=:
:
:
:
:
=;:
3:
:
3:
:
:
8:
:
0:
:
9;:
6源文件行号对应目标
11存储区的首地址
488117l
268】17l
辚赣0811C一个块的结束
壤鞫811C一个函数段的结束
main.C
蘩蘸涵睡x42D全局变量
图2dbg文件结构及解释
阴影部分都是命令字,这些命令字就是分析调试文件提取调
试信息的关键字.图的左栏是调试信息文件的部分内容,右
栏给出了每一行的含义.
在调试信息文件中一个函数段开始后,都会有一个块的
开始,如图2所示的语句:
FUNCmain8035fV
BL0CK168038
这表示函数编译后的代码起始地址是8035H,而块地址
是函数中第一条语句编译后的代码起始地址8038H,也就是说
函数的起始地址不是第一条语句的起始地址,其原因在于C
函数的局部变量占用堆栈空间,编译后的C函数首先要进行
堆栈空间的分配,然后再执行每条语句,堆栈空间的分配的指
令占用了函数代码的前3个地址空间(8038—8035=3).如上面
的main函数编译后的堆栈空间分配指令为:
0000A7FDais一3:
分配3字节的堆栈空间
000295tsx;堆栈指针赋给HX寄存器
在实现单步调试时,理解上述函数段地址和块地址的差
异是至关重要的.
2.2设置断点
假设在main.C中选择第33行,从图2给出的.dbg文件中
找到"FILEmain.c"行下有"LINE338096",表示刚刚选择的代
码行(第33行)对应的地址为$8096,即找到了断点地址,然后
当前选择的代码行呈红色高亮显示.
设置断点的方法是:
将当前工程的调试文件打开,从该文
件的第一行开始分析,直到在和当前设置断点所在文件的文
件名相同的"FILE"行下找到这样的"LINE"行,该行的<lineno>
等于当前设置断点的行号,然后提取该"LINE"行的<addr>,将
它转化为16进制后即为当前的断点地址.若找不到,则表示
选择的不是代码行.
2.3提高查找效率所采用的数据结构
在上述的从行号到地址的转换过程,其实质是一个查找
算法问题,对于文件比较多,代码量大的程序,如果采用对dbg
文件逐行扫描,其效率是很低的.为了提高查找效率,需要对
dbg文件进行处理,以合适的数据结构重新组织.dbg文件是
以文件,函数(或者块)以及行的方式所组成.图3给出了dbg
文件的组织形式.
图3存放dbg文件的数据结构
dbg文件表示时需要3个结构体:
①文件信息:
保存文件
名及指向第一个块结点的头指针信息;②块结点:
保存块开始
行号,块结束行号,程序首行地址,函数名,指向下一个块结点
指针及指向该块内首个行结点指针;③行结点:
保存行号,行
地址,是否是该函数的最后一行及指向下一个行结点指针.基
于这些结构体信息,用户在进行断点设置时,根据文件名及行
压露
圈
5342009,30(3)计算机工程与设计ComputerEngineeringandDesign
号就能快速检索到该行的地址信息.
3目标系统中用户程序的执行
HC08系列MCU程序调试方法是首先让目标MCU进入
峨挖模式有天!
控模式的进入条件参见文献[11),执行ROM
中的监控程序(厂商已经固化的程序).图l中的调试器通过
MON08调试接口与监控程序进行数据交互.监控程序的主
要功能是通过数据端口,接收调试器命令,设置或发送MCU
当前的寄存器值,内存值等.目标系统中用户程序的执行依
赖于监控程序的控制,是一种被动的运行模式,具体执行流
程如下:
(DMCU上电复位,运行监控程序,MCU处于等待接收命
令状态.
(2)根据上位机的断点行地址,通过调试器设置断点寄存器.
(3)上位机根据源程序所对应的目标代码文件(.s19文件),
从向量表中提取用户程序的首地址.
(4)通过调试器,修
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HC08 系列 控制器 在线 调试 关键技术 分析 doc
![提示](https://static.bdocx.com/images/bang_tan.gif)