飞思卡尔S08系列机器码文件下载软件的开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

飞思卡尔S08系列机器码文件下载软件的开发
王超艺;常赛;王宜怀
【摘要】A kind of software is needed to download the machine code to target chip when the embedded product is put into production process. The download software usually communicates with the debugger through USB interface, while the debugger communicates with the target chip through JTAG or BDM interface. S19 record, which is the machine code file of chips of SOS family of Freescale, is a kind of character-based executable file record format. In this paper we designed and implemented a S19 record download software using open source BDM debugger of Freescale. In the paper we analysed the interface of the open source debugger and the downloading processes, and devised a Flash download program with configurable parameters. In addition, we expounded the partition of the target chip RAM during downloading process. The download software designed in this paper supports the download of all MCUs in S08 family of Freescale by using an XML configuration file.%嵌入式产品进入生产过程以后,需要一款将机器码文件下载到目标芯片中的软件.下载软件通常使用USB接口与调试器通信,调试器使用JTAG或BDM接口与目标芯片通信.飞思卡尔S08系列芯片的机器码文件是S19记录,是一种基于字符形式的可执行文件记录格式.使用飞思卡尔开源的BDM调试器,设计并实现了S19记录的下载软件.文中分析了开源调试器的接口,分析了下载流程并设计了参数可配置的Flash下载程序.此外,文中详细阐述了下载过程中对目标芯片RAM的划分.该设计的下载软件利用XML配置文件实现了对飞思卡尔S08系列所有芯片的下载支持.
【期刊名称】《计算机应用与软件》
【年(卷),期】2011(028)012
【总页数】3页(P256-258)
【关键词】飞思卡尔;S19记录;下载软件
【作者】王超艺;常赛;王宜怀
【作者单位】苏州大学计算机科学与技术学院江苏苏州215006;苏州大学计算机
科学与技术学院江苏苏州215006;苏州大学计算机科学与技术学院江苏苏州215006
【正文语种】中文
【中图分类】TP319
0 引言
嵌入式产品进入生产阶段以后,需要一个操作方便、通用性强的下载软件。

下载软件将固件程序下载到目标芯片中,同时提供对目标芯片Flash的擦除和校验等功能。

下载软件不同于集成开发环境,不提供代码的编辑、编译等功能。

下载软件使用下载器或调试器将可执行文件下载到目标芯片中。

通常下载软件通过USB接口与调
试器通信,调试器通过JTAG或BDM接口与目标芯片通信。

一个优秀的下载软件可以大大提供生产效率,同时也是程序员在编码阶段良好的调试工具。

S08系列芯片是飞思卡尔的8位单片机,应用广泛,集成度高,片内资源丰富,
接口模块包括 SPI、SCI、IIC、A/D、KBI、USB、CAN、LVD和PWM等,且具
有灵活的时钟模式和很宽的工作温度范围。

飞思卡尔官方没有提供并且市场中也没
有S08系列芯片机器码文件的专用下载软件,产品生产中仍然使用的是Codewarrior集成开发套件下载机器码,这对生产过程造成了很大的不方便。


代理工厂进行产品代加工时,不能提供源程序,仅提供产品最终的机器码文件和一款将机器码下载到目标芯片的下载软件。

基于S08系列芯片的嵌入式产品生产和
研发中需要一款操作方便并且通用性强的下载软件。

本文使用飞思卡尔开源的BDM调试器,设计了S08系列芯片机器码的下载软件。

下载软件同时提供Flash 的擦除和校验功能。

文中详细分析了下载流程,提出了带参数的Flash下载程序,同时分析了下载过程中目标芯片的RAM划分。

图1为下载过程中各部分连接框图。

图1 下载软件各部分连接框图
1 相关名词
1.1 S19 记录
S19记录是飞思卡尔单片机的机器码,是基于字符的格式固定的可执行文件记录格式,一条记录独占一行,每行由5部分组成,其组成结构见表1所示。

表1 S19记录格式数据段长度说明S19记录类型 2 S0,S1等长度 2 S19记录长度,不包含类型和长度地址 4,6 或8数据部分的地址数据 0~2n 机器码校验和
2校验和计算不包含记录类型
S19 记录共有 8 种类型,分别为 S0,S1,S2,S3,S5,S7,S8,S9。

其中S0
标记S19文件开始,其数据部分包含了可执行文件的模块名、版本号等描述信息。

S1记录使用2字节地址,S2记录使用3字节地址,S3记录使用4字节记录。

S7,S8和S9分别为S3,S2和S1记录的结束记录,其数据部分为空,S5用于记录文件中S1、S2和S3记录的数目。

本文主要解析S1记录、S2和S3记录处理方法类似。

S08系列机器码的下载就是将S19记录数据部分的机器码下载到目标芯片Flash中的特定地址,该地址即
S19记录中给出的地址。

1.2 BDM
背景调试模式BDM(Background Debug Mode)是飞思卡尔单片机支持的一种OCD(On Chip Debugging)调试模式。

通过BDM接口可以完成对目标芯片的基
本调试功能,例如:设置断点、读写内存、读写寄存器、下载程序、单步执行程序、运行程序、停止程序运行等。

在宿主机方需要专门的驱动程序,并且在宿主机和目标机间需要用专门的接口电路。

2 飞思卡尔BDM调试器
BDM调试器可实现对目标芯片的调试和机器码的下载等功能。

常用的飞思卡尔BDM调试器有P&E公司、飞思卡尔公司和Softec公司的调试器。

但这些官方调试器一般价格昂贵,功能复杂。

本文使用飞思卡尔开源的BDM调试器(以下简称OSBDM),适用于飞思卡尔S08、S12和Coldfire各系列芯片。

BDM调试器通常提供高端DLL作为接口,接口中给出了打开调试器,复位目标芯片,操作目标芯片寄存器和RAM等功能函数。

OSBDM同样提供高端DLL调用
接口,接口中给出了丰富的DLL导出函数。

本文主要使用了表2中给出的导出函数。

表2 OSBDM导出函数函数名功能targt_reset 复位目标芯片target_go 目标芯
片从PC 处运行write_reg_pc 写目标芯片PC write_byte 写目标芯片RAM 的一
个字节read_byte 读目标芯片RAM 的一个字节write_block 写目标芯片RAM 的一片地址区域read_bolck 读目标芯片RAM 的一片地址区域
3 下载流程设计
机器码的下载即将机器码文件烧写到目标芯片的Flash存储器中。

Flash存储器即闪速存储器,属于EEPROM(电擦除可编程只读存储器)类型,断电的情况下能长
期保持存储的信息。

与RAM不同,对Flash存储器的下载需要特定的时序,调试器很难直接实现对Flash存储器的写入,因此,通常调试器不实现对Flash的下载
功能,只提供Flash的读取功能。

Flash的下载时序是借助于在RAM中运行的Flash下载程序实现。

下载软件通过OSBDM提供的高端DLL与调试器通信,将控制命令通过USB口发送给调试器。

BDM调试器解析控制命令,通过BDM接口与目标芯片通信,然后
将目标芯片返回数据回发给高端下载软件。

由于调试器只能直接对目标芯片的RAM进行写入,而且通常MCU的RAM空间有限,因此必须仔细设计下载流程,充分发挥RAM的作用。

3.1 下载流程
OSBDM提供了对目标芯片RAM的读写功能,但只提供了对Flash的读取功能。

由于不能直接对目标芯片的Flash进行写入,必须引入能在目标芯片RAM中运行的Flash下载程序。

Flash下载程序是运行在目标芯片RAM中的一段程序,它实
现了Flash的下载时序,可以将RAM缓冲区内的机器码写入到目标芯片Flash存储器的特定地址当中。

下载过程中,首先将Flash下载程序通过BDM调试器下载到目标芯片的RAM中,然后将解析后的机器码文件下载到RAM缓冲区中,然后执行RAM中的Flash下载程序,下载程序将缓冲区内的机器码文件下载到目标芯片Flash存储器的指定地址中。

下载结束后,必须对写入的机器码进行校验以保证写入数据的正确性。

下载流程见图2所示。

图2 S08机器码文件下载流程
3.2 带参数的Flash下载程序
Flash下载软件运行在目标芯片的RAM中,负责将指定缓冲区中的数据下载到Flash中。

由于每次运行时缓冲区地址、Flash下载地址和数据长度不一样,因此,这3个数据必须以参数的形式提供给下载程序。

本文封装了Flash下载函数,函数原型如下:
其中buf为RAM中缓冲区地址,f_addr为Flash下载地址,len为数据长度。

本文定义了变量RAMStartAddr来记录目标芯片的RAM起始地址。

Flash下载主程序中只执行了下面的一条指
令:write_flash((int8u*)(*((int16u*)(RAMStartAddr))),
*(int16u*)(RAMStartAddr+2),*(int16u*)(RAMStartAddr+4));即Flash下载程序执行时首先到芯片RAM起始地址中读取上文提到的3个参数。

Flash下载程序也是一段S19记录,如图2所示,下载过程中首先发送解析过的Flash下载程序到RAM的指定地址中,然后将待下载的S19的数据部分发送到RAM的一段缓冲区当中,最后设定参数给Flash下载程序。

参数包括S19下载的Flash目标地址,数据长度和缓冲区地址。

参数设置通过调用write_byte函数将目标芯片RAM起始的6个字节实现。

最后,设置目标芯片的PC为Flash下载程序的第一条指令的地址,通过调用target_go函数让Flash下载程序在RAM中运行。

Flash下载完成后必须进行校验以确保写入成功。

调用read_bolck函数读取Flash下载地址的内容,读取长度即刚才的下载数据长度,然后进行匹配,如果读出数据和写入内容一致则下载成功,否则失败。

3.3 目标芯片RAM分配
如3.1节所述,机器码下载即将机器码文件烧写到目标芯片的Flash存储器中。

由于调试器不提供Flash的直接写入功能,必须借助在RAM中运行的Flash下载程序将机器码文件从RAM中写入到Flash存储器中。

Flash下载程序将RAM中缓存的机器码文件写入到Flash存储器中,因此,RAM还必须缓存即将要写入到Flash存储器中的机器码。

目标芯片的RAM是下载过程中使用的主要资源,图2中所示几乎所有步骤都是在
RAM中完成的。

通常单片机RAM资源很少,有些甚至只有512字节,因此必须仔细划分RAM空间,以保证下载流程正常执行。

本设计中RAM主要有3部分功能:缓冲S19记录数据部分和参数,缓冲Flash下载程序和充当Flash下载程序执行时的RAM。

因此,目标芯片RAM被划分为3块区域。

在对目标芯片进行划分时必须保证3块区域的RAM足够用,不会造成RAM访问越界。

下面以S08AW60芯片为例说明RAM的划分。

S08AW60的RAM有2K。

地址区间0x0070~0x086F。

下面一段代码是AW60芯片Flash下载程序的link文件的片段。

其中RAMBUFF段用作缓冲S19记录数据部分和参数,RAM段用作Flash下载程序执行是的RAM,RAMCODE段用作缓冲Flash下载程序。

其中,RAMBUFF 前6个字节记录缓冲区地址、Flash下载地址和本次下载的数据长度。

S19数据部分缓冲区是从RAMBUFF段开始的第17个字节开始的。

3.4 通用性
S08系列芯片写入流程相同,S19文件解析方法相同,因此,提取出写入流程中针对不同芯片的不同部分,通过配置文件的形式读取,即可以实现对S08系列所有单片机的下载支持。

对于不同目标芯片,只有两个参数不一样:目标芯片的RAM起始地址和Flash下载程序。

其他参数如Flash下载程序的缓冲地址和Flash下载程序的第一条指令的地址等信息都可以从Flash下载程序中解析出来。

因此为了实现S19记录下载软件的通用性和扩展性,本文使用了XML配置文件。

XML文件中每种芯片存储了两个参数:RAM起始地址和芯片名称。

Flash下载程序即以芯片名称为名的S19文件。

S08AW60的Flash下载程序即S08AW60.s19。

添加对新的芯片的下载支持只需要在配置文件中添加一条记录,并添加新的目标芯片的Flash下载文件。

4 结语
S08系列机器码文件的下载软件可以有效地提高生产效率,同时也是开发阶段良好的调试工具。

本文使用飞思卡尔开源的BDM调试器,在深入研究调试器接口功能的基础上,针对调试器不能直接对Flash存储器写入的特点,提出了带参数的Flash下载程序。

下载过程中,首先将机器码缓存在目标芯片RAM中,然后使用在RAM中运行的Flash下载程序将机器码下载到目标芯片的Flash存储器中。

本文对目标芯片的RAM划分进行了仔细讨论,同时利用XML配置文件实现了下载软件的通用性和扩展性。

本文实现的S08系列机器码文件下载软件支持S08全系列单片机,下载软件已经用于生产实践,有效地提高了生产效率,同时也成为了开发人员良好的调试工具。

文中阐述的下载流程对所有单片机机器码的下载具有参考意义。

本文实现的飞思卡尔S08系列机器码下载软件对飞思卡尔 S12和Coldfire系列单片机机器码的下载具有借鉴意义。

参考文献
[1]王宜怀.MC68HC908GP32单片机编程器的设计与实现[J].计算机工程,2004(20).
[2]Freescale Inc.OpensourceBDM User Manul.2009.
[3]Freescale Inc.MC9S08AW60 Technical Data.2006.
[4]郭继伟,刘晓升,王宜怀.Mon08编程接口算法的改进及高速编程调试器的设计与实现[J].计算机应用与软件,2008,25(3):265-268.
[5]陆晗,潘雪增,平玲娣.基于JTAG的ARM调试器实现[J].计算机应用与软件,2007,24(2):137-139.
[6]IEEE,IEEE Standard Test Access Port and Boundary2Scan Architecture.。

相关文档
最新文档