|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
<strong>1 引言</strong>
Freescale(其前身为Motorola半导体部)公司推出的系列MCU,具有单一电源供电、支持在线编程的内部Flash。在线写入、读出稳定,为研制新型嵌入式应用开发工具提供了技术基础。Freescale公司的MCU应用非常广泛,销量已多年名列前茅,其中HC08系列MCU,功耗低、运用灵活.占销量中的重要部分。开发廉价且实用的Freescale HC08系列MCU的编程调试开发工具对该系列MCU在我国的推广应用具有重要价值。目前市面上能支持HC08的集成开发环境(IDE).除了CodeWarrior,虽对HC08系列MCU都支持。但系统庞大,功能复杂。价格贵,另外一些高校如清华、复旦等,只能支持某几款芯片,对于有200多款的HC08 MCU,较大局限,使用不便,不利于应用开发,更不便于教学实践。
本实验室从1999年开始研制集成开发环境.在分析了各种嵌入式系统集成开发系统后.推出了一种新型的HC08MCU通用型的集成开发环境.每年不断进行改进升级.现已基本成型。本IDE具有结构清晰、操作简洁的特点.集成了程序编辑、编译、下载、联机调试、硬件评估等功能,有较好的实用前景。在阐述本IDE的设计基础上,本文简要分析了IDE的Pc方软件主要技术要点和简单介绍了本IDE配套的硬件系统的基本结构。
<strong>2 设计思路与技术优势</strong>
对HC08系列MCU。进行深入的研究。经过长期的实践与探索,研制了新型的嵌入式应用系统的集成开发环境。软件分两大部分:PC方软件和MCU方软件,配套硬件分三大部分:PC机、写入器(也称调试器或编程器)和实验箱(或评估板或嵌入式产品)。
1) IDE主要设计思路是:
(1)PC方软件提供程序管理、编辑、编译、下载、联机调试等功能,源程序经过编辑和编译成S19目标文件后.通过USB接口与写入器中的MCU(称主控MCU)方软件通信.将该目标文件发给主控MCU,然后写人器又与实验箱MCU(称目标MCU)芯片串行通信,将该目标文件写入目标MCU芯片的FIash中。成功后可以试运行。检验目标MCU中的程序能否正常运行.否则联机调试该程序。
(2)HC08系列MCU间资源差异较大,进入监控的支撑电路有差别,为了设计适用于不同MCU的通用IDE,解决这些问题是关键,具体方法参考文献,即MCU间资源差异的问题是通过PC机中的数据库保存其差异而得到解决。进入监控的支撑电路问题是通过在PC机和目标MCU间加一个主控MCU而得到解决从而为实现通用的IDE奠定基础。
(3)作为以MC908GP32(旧称MC68HC908GP32)MCU为蓝本进行“单片机原理与嵌入式应用”教学的实验箱配套软件,实验箱提供了基本实验所需的接线端口.还提供了扩展实验的接线排孔。运用本开发环境根据实验项目开发软件要求.可完成所有基于MC908GP32 MCU的接口实验。对于Freescale该系列其他MCU。可通过置换核心板(MCU与其支撑电路构成的),而达到更换HC08 MCU的目的,便于进行其他MCU的实验。
2) 本开发环境与传统的仿真器相比具有如下技术优势:
(1)传统仿真器的“仿真系统”一般是使用软件仿真的技术,在宿主机上通过软件的方式实现目标机的功能。这种方式虽可以模拟大部分目标机的功能。但是这种方式并非是真正的目标系统.往往在此基础上开发出来的程序.一旦移到目标系统上运行.却会出现一些在仿真软件中无法遇到的问题。而本开发环境是基于硬件之上的,对目标系统可以达到完美的模拟,即在本开发环境上开发出来的程序在移到目标系统上时,由于硬件基础相同.因此不会发生任何兼容性问题。
(2)与传统仿真器相比,提供的调试功能为在线调试方式,操作界面为Windows界面,操作犹如调试纯软件,方法简洁。
<strong>3 集成开发环境的设计</strong>
为方便开发和调试嵌入式系统,设计了基于C编译的HC08 MCU集成开发环境.软件总体分两大部分:PC方软件与MCU方软件.PC方软件可分为脱机编辑编译和联机下载调试两部分。MCU方软件设计请参考文献。
PC方软件采用标准的Win32界面.利用Visual C++MFC编写.主界面设计如图1所示,其中左边为工程管理窗口,右边为代码编辑窗口.下面为编译输出及调试窗口。
<ignore_js_op>
2010-3-28 11:33:16 上传
<strong>下载附件</strong> (13.69 KB)
</ignore_js_op>
图1 集成开发环境主界面
本IDE的主要设计功能和技术特点如下:
(1)标准的Win32视窗界面,充分体现Windows平台的特性。具有安装方便、操作简洁等特点。并配置内容丰富的帮助系统,帮助用户快速入门,学习HC08 MCU的编程方法。
(2)工程管理。工程管理分别对c文件和头文件两种源文件进行管理.对汇编也支持.在主界面上以文件树的形式呈现。工程属性根据编程要求而设置,通过“编译设置”对话框进行,它包括MCU类型、Flash区程序的起始地址、RAM起始地址和终止地址、堆栈起始地址等设置。工程管理的主要功能是管理源程序文件和生成编译器所需的文件。在保存T程的同时后台生成了该工程的make file文件(包含编译选项和工程属性)、src文件(包含工程中使用到的文件和资源)。
(3)下载程序。下载程序是将生成的目标机器码写入目标MCU中的.包括通信模块和S19文件分析模块两部分。通信模块负责实现PC机与主控MCU的USB通信。发送命令、参数和程序代码等,和主控MCU一起对目标MCU完成相应的擦除、写入和调试等操作功能。S19文件分析模块负责先对S19文件进行分析和打包.将文件的内容转换成便于传输的格式,并判断文件中程序的起始地址、页数以及是否越界等.然后进行发送通信。
(4)调试器以及寄存器查看器和内存变量查看器。写入器也兼有调试功能.所以也称调试器。调试的功能设计是参照通用IDE的调试方法而设计的,进入调试模式(即监控模式),可以单步调试或断点调试。调试时可以通过寄存器查看器和内存变量查看器观察目标MCU运行的当前值,以便发现程序问题所在.实现在线调试功能。
<strong>4 技术设计要点</strong>
在系统的开发设计过程中,遇到许多的问题。下面把主要问题的一些处理方法作简要分析说明,供大家借鉴。限于篇幅.HC08系列MCU的调试器通用性设计具体见文献。
4.1中文和语法高亮的实现
语法高亮在集成开发系统的代码编写过程中是主要的问题之一。已有的一些控件虽然语法高亮功能比较全,但是对中文支持不是很好.最突出的就是半个汉字问题(在选择和删除字符的时候汉字当两个字符处理,一次只能删除半个,会出现乱码)。使用MFC的RichEdit控件虽可以解决中文问题,但又没有语法高亮的功能,为此,就以RichEdit为基类编写了语法高亮类,才解决语法高亮和中文的显示问题。其主要编程的思路是:通过捕获用户键盘输入的事件.判断用户输入的单词是否为c语言中的关键字.如果是,则改变其颜色。
4.2 GNU编译器的整合
本系统使用的是由GNU移植的HC08编译器,该软件不仅是开源、免费的。而且执行效率高,功能强,对c代码具有优化的功能。但是唯一的问题是。该编译器是Win32控制台程序,输出的编译信息都是在不同控制台下的.不易整合在一个IDE中。更甚的是编译器的输出信息都是非标准的输出流,无法使用ShellExecute函数捕获,也无法输出到管道文件中。为了解决该问题参考了一些国内外的资料,受此启发。采用CreateThread的方法,也就是创建子线程的办法,通过线程的管道,将编译输出信息捕获.并显示在窗口中。同时在此基础上也实现了从编译错误信息跳转到源代码的功能。
4.3 PC机与写入器的USB通信设计
写入器和PC机建立USB通信除了MCU与PC的通信程序设计外.PC方必须要有相应的驱动程序。本设计使用的USB开发包USBIO_EL是由德国Thesycon Systemsoftware&Consulting GmbH公司提供的免费软件,该开发包提供的功能是限制版本的USB驱动程序usbio_el.sys和USB动态链接库usbiocom.dll文件。usbio_el.sys 的限制部分为:厂商ID只能为0x0C70.仅支持一个中断IN端点和中断OUT端点,支持的端点缓冲区大小最大为8字节。而本设计写入器中使用的MC68HC908JB8芯片的USB模块恰好满足限制版本的条件,故可使用该驱动程序;usbiocom.dll可以直接加载至程序中,使用其中的类;表1为本设计中所用到的该库中的类及函数的说明。可以调用这些类及其函数实现建立连接、发送数据和接收数据的程序功能,从而实现指令的通信以及程序代码的传输。
表1本设计中使用到的USB库的类及函数说明
<ignore_js_op>
2010-3-28 11:33:16 上传
<strong>下载附件</strong> (5.42 KB)
</ignore_js_op>
4.4 C语言程序调试功能的设计
调试功能实现对汇编和c语言的源码级在线调试。两者实现过程大体相似,但C语言调试的实现相对复杂。在此只针对C程序进行说明。
汇编程序和C程序在编译后都会产生调试信息文件(后缀名为.dbg)。dbg文件包含有相应的信息以供调试时使用。该文件详细记录了调试所需要的行号与存储地址等信息.包括文件首地址、函数的首末地址、每行源代码的行号和首地址、局部变量以及全局变量的名称地址类型等,如图2所示。对C语言程序的调试主要是基于对该调试信息文件的调用和判断。调试动作的设计首先是“设置断点”,接着点击“开始调试”,进入调试模式.然后选择“单步步入(Step Into)”、“单步步过(Step Over)”或“执行”至下一断点处等调试操作根据程序运行或变量的值判断调试。
下面分别阐述设计思路。
(1)设置断点
如在文件main.c中选择所需中断的一代码行.假设选择第33行,点击菜单“调试”一>“设置断点”,则在调试文件.dbg文件中找到“FILE main.c"行下的“LINE 33 8096”(如图2的双下划线), 该LINE后的33(十进制)等于当前设置断点的行号33,然后提取该“LINE”行中的8096(十六进制.本语句的首地址),作为当前的断点地址。则在界面上显示当前所选择断点的代码行呈红色高亮显示。否则所选择的不是代码行。
<ignore_js_op>
2010-3-28 11:33:16 上传
<strong>下载附件</strong> (5.92 KB)
</ignore_js_op>
图2 dbg文件结构
(2)开始调试
设置断点后。点击菜单“调试" -> “开始调试”,程序运行至断点地址处.产生断点中断.则返回目标MCU运行的有关信息至PC机,在IDE界面中当前断点行呈蓝色高亮显示,在寄存器跟踪窗口和变量跟踪窗口中显示目标MCU中相应的值。接着选择不同的调试操作继续进行.如“单步步入”("单步步过"或“执行”至下一断点的设计思路与之类似)。
(3)单步步入
“单步步入”即从当前断点处按程序执行的流程一条一条语句的运行调试。设计调试的方法是.从程序“开始调试”运行至断点起,点击“单步步入”,程序先计算下一个断点地址。从断点开始.MCU的断点模块自动将当前断点地址加1.作为下一个断点地址.但C语言一条语句编译后往往不止一条汇编语句,可能几十条.甚至几百条.如此计算.则加1还不是下一条C语句的首地址。这时须将返回的PC寄存器值继续加1。直至下一条C语句首地址.即PC寄存器里的值等于下一条C语句对应的首地址,这样一次“单步步人”完成。若需继续执行,则再点击“单步步入”命令。
<strong>5 实验硬件系统</strong>
为了配合本IDE,根据HC08系列MCU电气特征、功能,设计了一个通用的实验硬件系统,方便了实验教学,方便了嵌入式系统的开发和测试。
实验硬件系统的实物结构如图3所示。
<ignore_js_op>
2010-3-28 11:33:17 上传
<strong>下载附件</strong> (8.99 KB)
</ignore_js_op>
图3 HC08嵌入式实验硬件系统
硬件系统主要由以下几部分构成:①MC908GP32和支撑电路构成核心板(更换MCU只要更换该板即可)。本系统为其提供的支撑电路主要由5v电源、晶振电路和PLL电路构成。其中晶振电路采用了一个32.768KHz的晶振为MCU提供振荡信号,PLL电路是主要由电容和滤波网络构成的负反馈环路,使频率稳定地提高至2.4576MHz。②串行通信(SCI)电路。早期的电平转换集成电路由MC1488、MC1489构成.但需另配12V供电,使接线繁琐。本系统采用目前较多用的MAX232将MCU的TTL电平转换为标准的RS-232电平,它仅需共用5V供电实现电平转换。③外围接口和元件。为了给用户提供足够的接口,充分考虑不同用户和开发者的需要.本系统提供2个标准9芯串口、LCD接口、键盘接口、8组指示灯和开关、电位器、蜂鸣器、模拟量接口、继电器以及各种通信口等,不仅满足MCU的教学,也满足MCU开发评估及测试的需要。④IC插线和扩展槽。本系统还具有一定的可扩展性,通过提供的Ic插线和扩展槽,用户可自行扩展其它的IC和设备。
<strong>6 结束语</strong>
以上所阐述的Freescale HC08 MCU集成开发环境设计思路.以及技术要点.对于开发者,具有一定的启发和借鉴作用。本系统的推出.有力地解决了国内开发Freescale HC08嵌入式应用系统主要依赖国外开发平台的现状。经过几年的研制和推广应用.配合Freescale公司的大学计划已经获得较好的应用效果。
本文作者创新点:
(1)编译器的整合以及中文和语法高亮的实现解决一个WindOWS平台中难实现的问题;
(2)充分利用免费开发包实现了PC方USB的驱动;
(3)调试文件的利用解决了MCU方程序调试的问题。
作者:曹金华,刘晓升,王宜怀 来源:《微计算机信息》(嵌入式与SOC)2009年第9-2期 |
|