第23卷 第3期  2003年9月
南 京 邮 电 学 院 学 报
Journal of Nanjing University of P osts and T elecommunications
V ol.23 N o.3Sep.2003 
 文章编号:100021972(2003)0320078204
  收稿日期:2002210209;修回日期:2003207209
具有在系统调试功能的单片机系统设计
周宁宁1,黄国方2
11南京邮电学院计算机科学与技术系,江苏南京 21000321国电南瑞科技股份有限公司,江苏南京 210003
摘 要:介绍了具有与PC 主机进行在系统调试功能的单片机系统设计方法,详述了单片机系统硬件、
软件及主机程序的设计。关键词:在系统;调试;目标代码
中图分类号:TP33;T N79    文献标识码:B
1 概 述
现在I NTE L 80296S A 、M OT ORO LA MC68332等高性能单片机正被应用到各种工业控制场合,这些单片机管脚多,器件又大多数是PQFP 、QFP 表贴封装。研发人员在开发设计这些单片机系统时,普遍关心的是目标板的调试问题。由于80296S A 等单片机没有专用的调试端口,它们的仿真器适配器结构及管脚排布复杂
,这样在硬件设计时,将大大增加设计的工作量及印刷板的面积,这些对于产品的连续开发及产品化生产是不利的。另外,用仿真器调试的目标板还不能直接焊上单片机,这样在整机调试时就会遇到仿真器如何放置等问题。仿真器虽然功能强大,但价格也十分昂贵,而且仿真器与目标板在上电、掉电及插拔时要十分小心,稍有不慎就可能损坏仿真器。所以设计人员系统设计时,必须充分考虑调试工具和方法
的优缺点,使系统易调试,易维护。本文介绍的是一种不依赖于仿真器、无需特殊硬件设计的一种具有与PC 主机进行在系统调试功能的单片机系统设计及调试方法,该方法能适用于各种高性能单片机系统的开发及调试。这种设计方法对于采用同种型号的单片机进行产品开发及多人协同开发的系统更具有实用价值。
2 单片机系统硬件设计
图1是具有在系统调试功能的单片机系统硬件
原理框图。
图1 单片机系统硬件原理框图
图1中,调试口主要用于与PC 主机进行联机系
统调试,其中UART 可用16C552、16C554等专用串行接口芯片,也可以直接采用单片机CPU 的串行口,通过M AX232或M AX202等芯片进行RS232/TT L 电平转换后,就可以与PC 机直接接口。
图1中,F LASH/EPROM 在调试过程中,主要用于存放管理串行口与接收PC 机命令的监控程序,这部分程序要求在与PC 主机联机调试前编制调试完成。
RAM 主要用于存放待调试的用户程序以及作为单片机系统的数据区。在RAM 中存放用户程序,可以避免频繁地使用编程器烧写存储芯片。对于I NTE L 8XC196等单片机,它们采用的是程序存储器与数据存储器合二为一的普林斯顿结构,存储空间完全统一,所以不用特殊的硬件设计,就可把RAM 设计成既可存取数据又可存取代码的形式。但对于I NTE L MCS 251等单片机,它们的程序存储器与数据存储器完全独立,这样的单片机系统可采取图2所示的硬件设计来合并代码、数据空间。图2中PSE N 是外部程序存储器的读选通信号,RD 是外部数据存储器的读选通信号。
图2 合并代码、数据空间的硬件设计
I/O、通信网络则根据系统功能要求进行扩展。这样的单片机系统设计,除占用了一个调试口及部分RAM外,CPU的其他资源都可用于别的应用。
3 单片机系统软件设计
由于汇编语言可读性差,并且仅能用于相应的单片机,不易移植,所以单片机设计人员应尽量采用高效、稳定和可移植的C语言来编写单片机程序,具有在系统调试功能的单片机系统软件大体上分为两部分:监控程序、用户程序。
311 单片机系统监控程序及用户程序
监控程序完成接受主机下载的用户程序、数据和命令,并控制用户程序的运行。另外监控程序应使用户程序使用的中断程序重新定位,使中断程序不用存放在监控程序存放的EPROM中,而可以放在用户程序占用的存储器中
。监控程序、用户程序的目标码及数据在程序编译连接时应定位在相应的存储器及对应的物理地址,如调试时用户程序目标代码应定位在RAM中而不是EPROM中。用户程序通过函数userMain()调用,userMa
in()函数可采取main()函数相同的方式设置,这样就实现了监控程序与用户程序的接口。单片机系统程序流程框图见图3。
由于现在单片机系统越来越复杂,程序中又有硬件、软件中断服务程序,单片机系统运行时,单步跟踪、设置断点并不能很好地动态调试程序。另外,这些调试方式与相应单片机的编译程序联结紧密,相对比较复杂,所以本系统未考虑这些调试方式。为了弥补这些缺点,提高单片机程序调试的方便性,在监控程序中提供了printfT estC om()函数,用来在程序中向调试口发送用户程序执行信息,就象在PC 机上调试C语言程序,用printf()函数向显示窗口打印调试信息,来跟踪程序执行情况,这是现在大多数嵌入式系统软件开发过程中采用的比较多的调试手段。
图3 单片机系统程序流程框图
312 单片机系统与主机的通讯程序及通信协议
主机采用P olling方式与单片机系统通讯。单片机系统通讯程序主要包括中断发送、接收程序(testInt())、接收处理程序(recProcess()),发送处理程序(sendProcess())。采用中断方式能保证通讯的实时性并减少丢失数据。接收数据由中断接收程序放入环行缓冲区,接收处理程序通过头、尾指针判断是否接收到数据,并从环行缓冲区中取出数据进行处理,发送处理程序把待发送的数据放入发送缓冲区,最后经中断发送程序发送。
单片机系统与主机的通讯协议格式如下: 其中:
ssssssss同步头:用于表示一帧通讯数据的开始,如E B90E B90
nn长度:命令码与数据的字节总个数
tt命令码:有以下几种:
(1)下载用户程序命令码;
(2)启动用户程序执行命令码;
(3)停止用户程序执行命令码;
(4)读内存命令码;
(5)写内存命令码;
(6)读I/O命令码;
(7)写I/O命令码。
dd:数据
97
 第3期 周宁宁等:具有在系统调试功能的单片机系统设计
cccc 校验和:采用命令码与数据的累加和,用于
校验接收的数据是否有错。
4 主机程序的设计
单片机系统的调试工具运行在PC 主机上,主机
与单片机系统通过串行口联系(见图4)。设计人员所有的软件开发工作在主机开发环境下完成,包括编辑源代码,程序编译、连接,用户程序下载和调试等工作,生成的用户程序目标代码通过串行口下载到单片机系统。其中编辑、编译、
连接一般采取专用的软件开发工具,这里介绍的主要是自主开发的下载、调试工具程序,下载、调试工具除能完成本身的功能外,还应具有友好的用户界面。图5是单片机系统调试程序主画面,图5中区域1用于显示存储器、I O 内容;区域2显示发送数据,而且,还可在区域2中编辑数据,发送给单片机系统,它主要用于在调试时临时增加通讯信文;区域3中显示从调试口接收到的数据,单片机系统printfT estC om ()函数发送的信息就在此区域显示,显示方式可以是HEX 十六进制,也可以是字符。
图4 主机与单片机系统联机调试框图
图5 单片机系统调试程序主画面
下载、调试程序功能:
(1)用户程序目标码读取、解释,并通过下载命令下载给单片机系统;
(2)启动/停止用户程序;
(3)程序变量与内存地址映射;
(4)读写存储器、I/O 并显示。
设计人员通过读写存储器、I/O 可以检查单片机系统程序是否运行正常,采集数据是否正确以及与其它装置的通讯是否正常,这些基本上实现了仿真器的功能,程序变量与内存地址映射是通过查符号表文件获取的。
现在常用的单片机或其他处理器的目标程序代码一般采用Intel hex 格式及M otorola S 记录格式,它们用来保存物理程序存储区中的目标代码映象。文件全部由可打印的ASCII 字符组成。
4.1 I ntel hex 文件格式
Intel hex 文件由一条或多条记录组成,每条记录
都由一个冒号“:”打头,其格式如下:
: 其中:
nn  本条记录的数据域中的实际字节数aaaa  本条记录中的数据在存储区中的起始地址
tt  记录类型00 数据记录(data record )01 结束记录(end record )02 段记录(paragraph record )03 转移地址记录(trans fer address record )
dd  数据域
cc 长度、地址、数据域的校验和,校验和是三者
字节总和的补码
Intel hex 文件如下例所示::020*********C B
:0600320000B29002003252:00000001FF
4.2 Motorola S 文件格式
M otorola S 文件也由一条或多条记录组成,每条
记录都由一个“S ”打头,其格式如下:
< 其中:
t 记录类型0 开始记录(starting record )1 具有16位地址的数据记录(data record with 162bit address )
2 具有24位地址的数据记录(data record with 242bit address )
3 具有32位地址的数据记录(data record with 322bit address )
8 南 京 邮 电 学 院 学 报2003年
4 符号记录(symbol record )
7、8、9结束记录(end record )
nn  本条记录中的地址、数据、校验和的总字节
个数
<本条记录中的数据在存储区中的起始
地址,地址长度由记录类型决定
dd  数据域cc  长度、地址、数据域的校验和,校验和是字节总和的补码
M otorola S 文件如下例所示:
S10500000132C7
S109003200B2900200324E S9030000FC
Intel hex 、M otorola S 文件记录中地址、数据、
校验
和都采用16进制格式。按照文件记录格式,下载程序就可正确地读取用户程序目标代码并将目标代码传递给单片机系统。
5 结束语
随着芯片工艺的飞速发展,以及现在设计的单
片机系统越来越复杂,而完成项目的时间越来越短,所以单片机系统设计人员在进行系统设计时必须充分考虑对系统进行调试的工具和调试方法。以上介绍的单片机系统设计方法虽然占用了一个串口及一
部分存储单元,但它在复杂的单片机系统设计中给
系统调试带来了巨大的灵活和方便性。笔者采用本文介绍的方法在多套16位、32位单片机系统设计中均取得了良好的效果。参考文献:
[1] M OT ORO LA INC.M68300Family MC68332User ’s M anual[Z]119951[2] INTE L.80296S A M icrocontroller User ’s M anual[Z]119961
[3] 赵秀菊.单片微机8XC196原理及应用[M]1南京:东南大学出
版社,19951
[4] 陈力钧,刘英.单片机高级程序设计语言P L/M -51与P L/M 296
[M].西安:西安电子科技大学出版社1
[5] T ASK ING INC 1T ASK ING C for196/296User ’s M anual[Z].19981
作者简介:
  周宁宁(1972-),女,江苏南京人。南京邮电学院计算
机科学与技术系讲师。(见本刊2003年第1期第80页)
单片机printf函数  黄国方(1971-),男,江苏南京人。国电南瑞科技股份有限公司工程师。1996年在东南大学仪器科学与工程系获工学硕士学位。现主要从事电力系统自动化科研工作。
Design of Single Chip Microcomputer System with System Testing Function
ZH OU Ning 2ning 1,HUANG G uo 2fang 2
11Department of C om puter Science and T echnology ,Nanjing University of P osts and T elecommunications ,Nanjing 210003,China 21NARI T echnology Development Limited C om pany ,Nanjing 210003,China
Abstract :This paper studies the design of single chip microcom puter system with in system testing function.Hard 2ware ,s oftware of this single chip microcom puter system and the program of host com puter are mainly discussed.
K ey w ords :In system ;T esting ;T arget code
1
8 第3期 周宁宁等:具有在系统调试功能的单片机系统设计