Mon08接口批量数据传输方法

文档序号:6472038阅读:230来源:国知局
专利名称:Mon08接口批量数据传输方法
技术领域
本发明涉及HC08系列微控制器的编程调试接口批量数据传输方法,具体 涉及一种用于MON08接口的数据通信,实现髙速批量数据传输。
背景技术
HC08系列MCU有近百种型号,具有稳定性好、功耗低、带有Flash存 储器等特点,在嵌入式系统中被广泛选用。MON08接口是Freescale HC08系 列微控制器(MicroController Unit, MCU)的编程调试接口,在嵌入式产品的 研发及生产阶段,大批量数据都要通过编程接口下载到MCU的存储器中,而 MCU的下载及调试过程中,绝大部分时间都消耗在数据传输上,擦写Flash 的时间很短。因此,提髙编程接口的数据传输速率,可以有效地提髙嵌入式产 品的研发和生产效率。
HC08系列MCU可以工作在两种模式用户模式和监控模式。用户模式 是MCU上电复位后,转向复位矢量所指向的地址,执行Flash中的用户程序。 监控模式是MCU在上电复位后,执行监控ROM中的程序(MCU出厂时,固 化在芯片中的程序)。监控模式下MCU和外界通过MON08接口进行交互,标 准的MON08接口如图l所示。MCU进入监控模式需要一些外界条件,例如 IRQ引脚加髙电压(1.5倍VDD)、某些1/0 口的特定电平。
在监控模式下,微控制器内部的监控ROM程序开始工作,并通过I/0口 实现单线半双工串行通信,为连接的主机提供服务,这里的主机可能是PC机, 也可能是另一个MCU。监控模式下MCU以标准不归零(NRZ)的数据格式进行 异步串行通信,每传输l字节需要l位开始位、8位数据位和1位停止位,共 计10位,数据传输速率为9600bps(HC08中的GZ60系列是7200bps)。
MON08接口的基本功能是将用户程序写入到MCU的Flash存储器中, Flash的擦写是需要一定的时序来完成的,直接的MON08接口通信是不能实 现的。监控ROM程序提供了 6条指令,实现对MCU内存地址的读、连续读、 写、连续写、读堆栈指针、运行内存中的程序(执行RTI命令)。有了这6条指令,主机首先把Flash擦写程序的目标代码发送到目标MCU内存中,再发 送一批用户程序目标代码到目标MCU内存中,执行写Flash程序,将该批数 据写入,然后再发送下一批程序代码、写入,直到所有程序数据写入完毕。这 里将用户程序代码分批的原因在于①对Flash的写入是按页的方式来进行 的,不同的MCU其页大小也不相同,GP32的Flash页大小为128字节② HC08系列MCU内存较小,通常在128B 2KB, 一次缓存的数据不可能太多。
这些监控指令的执行也需要遵从严格的时序要求,主机每发送一字节,目 标MCU都会将该字节返回给主机,供主机校验。图2给出了向特定内存单元 写数据的时序图,向目标MCU指定内存写一字节数据需要先发送写命令(命 令代码是0x49),再发送内存地址髙字节和低字节,然后发送数据,每一字节 都需要等待对方的回应,最后还需要等待12位的延时,才可以发送下一个命 令。因此,向目标MCU内存写1字节数据需要时间为
1 + 10+2 + 10+1 + 10+2+10+1 + 10+2 + 10+1 + 10+2 + 10+1 + 11 + 1 = 105位时间
在批量数据传输时,写第一字节需要地址信息,后续字节使用连续写命令 (0x19),省略地址信息,发送l字节时间为105-46 = 59位
则发送32KB的数据所需要理论时间为
32X1024X59 + 9600=201.4秒
用基本的MON08接口通信传输32KB数据最少需要3分半钟,而程序下 载时还需要擦除、写入、写入校验等时间,对于开发者或生产者来说,这是一 个漫长的时间。
因此,基本MON08接口通信的数据传输率很低,不适合于批量数据传输。

发明内容
本发明目的是提供一种MON08接口批量数据传输方法,通过方法的改进, 提髙MON08接口通信的数据传输率,以加快开发和生产速度。
为达到上述发明目的,本发明采用的技术方案是 一种MON08接口批量 数据传输方法,包括下列步骤
(1) 编写串行通信程序,编译成目标代码,所述串行通信程序中,在数据传 输时,对每64 256字节数据进行一次校验;
(2) 采用基本的MON08接口通信方法将步骤(l)的目标代码发送至目标MCU的内存中并执行;
(3)由编写的串行通信程序将所需传输的数据传输至目标MCU,实现 MON08接口的批量数据传输。
上述技术方案中,所述步骤(l)中的串行通信程序既可以采用异步通信方式 进行数据传输,也可以采用同步通信方式进行数据传输。为了加快传输速度, 优选采用同步通信方式进行数据传输。
其中,所述同步通信方式是,主机方发送数据时,先发送4个周期的"低 电平"同步信息,然后发送数据位,并将数据位信息持续10个周期;接收方 在接收到同步信息后,延时8个周期后接收信息位;主机方在接收数据时,先 发送4个周期的同步信息,然后将I/0 口置为输入状态,延时6个周期后接收 信息位;接收方在接收到同步信息后,把需要发送的信息位发送到线上。
将基本的MON08通信方法称为第一种方法,将本发明中采用异步通信方 式进行数据传输的方法称为第二种方法,将本发明中采用同步通信方式进行数 据传输的方法称为第三种方法,下面从传输速度、可靠性等方面对这三种通信 进行比较。
1) 传输速度
基本的MON08通信方法速度最慢,第二种方法较快,第三种方法最快。 第一种方法完全使用基本的MON08接口通信,每个字节均需校验,传输延时 较多,且通信速率限制在9600bps。第二种方法由于双方的通信程序都是自己 编写,灵活性较大,可以采用9600bps、 19200bps,甚至于38400bps的传输 速率,校验方法由用户自定义。第三种方法由于采用同步通信方式,速度最快。
2) 可靠性
从理论上来讲,第一种通信方法由于对每个字节都进行校验,最可靠。但 通过大量的实验验证,后两种采用批量数据校验的方法也是可靠的,数据传输 出错的情况约为5%。,并且这种错误也能校验出来。
3) 传输距离
第一、二种方法采用异步通信,通信距离可以达到几米。第三种方法使用 同步方法,当传输距离长时,线路对信号干扰比较明显,通信质量下降,通过 实验验证,传输距离在30厘米范围内,这种通信方法的稳定性很好,但由于 开发和生产过程中,接口距离通常很近,因此对本发明的实施并无影响。可见,由于上述技术方案的采用,本发明与现有技术相比具有下列有益效

(1) 本发明通过改进MON08接口的通信流程及通信方式,大大加快了大批 量数据传输的通信速度,采用现有技术,32KB程序下载用时大约是5分钟而 采用本发明的技术方案,下载32KB程序仅需大约IO秒钟时间。
(2) 本发明在大大提髙传输速度的同时,保证了数据传输的可靠性,并且, 可以根据传输距离的不同,选择同步或异步方式进行通信,适用范围广。
(3) 本发明创造性地通过将100字节左右的通信程序下载到目标MCU上运 行,此后由该程序控制通信,来实现传输速度的极大提髙,从而不需要对HC08 的硬件作任何改动,实现方便。


图1是标准的MON08接口的示意图2是现有技术中向特定内存单元写数据的时序图3是实施例一中主机方MON08接口通信流程图4是实施例二中主机向目标MCU发送l位信号的时序图5是实施例二中主机接收目标MCU发送的l位信号的时序图。
具体实施方式
下面结合附图及实施例对本发明作进一步描述
实施例一 一种MON08接口批量数据传输方法,包括下列步骤
(1) 编写串行通信程序,编译成目标代码,所述串行通信程序中,在数据传 输时,对每64 256字节数据进行一次校验;
(2) 采用基本的MON08接口通信方法将步骤(l)的目标代码发送至目标 MCU的内存中并执行;
(3) 由编写的串行通信程序将所需传输的数据传输至目标MCU,实现 MON08接口的批量数据传输。
为了提髙数据通信速度,在批量数据传输时,可以对每一批数据进行校验, 而不是对每个字节进行验证。这时就不能完全依靠监控ROM中的程序,而需 要编写自己的串行通信程序,编译成目标代码,在基本MON08接口通信的支
6持下,把这些代码发送到目标MCU内存中并执行,后续的数据在自己编写的 串行通信程序的支持下进行通信。依据这种思想,主机方MON08接口通信流 程如图3所示。
使用自己编写的串行通信程序(该程序编译后的目标代码100字节),传输 32KB数据的理论时间为
(100X59+32X1024X8) + 9600"28秒
在编写用于串行通信及校验的程序时,技术要点如下
1) 用I/O 口模拟串行通信,通信双方采用相同的通信速率。如果双方的 总线频率不相同时,需要精确计算延时的周期数,避免数据传输的错位现象。 为了实现精确延时,编程时应该是选用汇编语言。JB8芯片的总线频率是 3MHz, GP32进入监控模式后的总线频率是2.4576MHz,采用9600bps速率
通信时,JB8和GP32发送1位所需要的周期数分别为313个和256个。
<formula>formula see original document page 7</formula>
2) 编译后的目标代码尽可能少。HC08系列MCU是针对低端的应用,内 存资源相对较少,通常为几百个字节。在监控模式下进行程序下载,需要放置 擦写Flash的程序、串行通信及校验程序、写入Flash页数据以及程序运行的 变量堆栈数据,所以串行通信及校验程序需要节省代码量,尽可能选用操作码 短的汇编指令。
3) 有选择性地使用跳转指令。串行通信及校验程序最终要搬到内存执行, 程序运行空间和编译时指定的存储空间可能有所差异,因此程序中使用相对跳 转指令BSR和BRA,避免绝对跳转指令JSR和JMP。
4) 批数据校验采用"累加和"或"异或"的方式。不带进位的加法指令 "ADD,X"和异或指令"EOR,X"仅需要2个总线周期,执行速度非常快。
实施例二 一种MON08接口批量数据传输方法,包括下列步骤
(1) 编写串行通信程序,编译成目标代码,所述串行通信程序中,在数据传 输时,对每64 512字节数据进行一次校验;
(2) 采用基本的MON08接口通信方法将步骤(l)的目标代码发送至目标MCU的内存中并执行;
(3)由编写的串行通信程序将所需传输的数据传输至目标MCU,实现 MON08接口的批量数据传输。
实施例一中采用的是异步通信方式,更适用于距离较远的场合,而使用 MON08接口通信时距离往往较短,可以采用同步方式。因此,本实施例中采 用同步通信方式。
主机方发送数据时,先发送4个周期的"低电平"同步信息,然后发送数 据位,并将数据位信息持续IO个周期接收方在接收到同步信息后,延时8 个周期后接收信息位,如图4所示。
主机方在接收数据时,也先发送4个周期的同步信息,然后将I/0 口置为 输入状态,延时6个周期后接收信息位;接收方在接收到同步信息后,把需要 发送的信息位发送到线上,如图5所示。
这种串行数据通信使用自定义的串行通信协议,所有的通信都是由主机发 起和控制,在传送每一位数据时,都是由一个髙到低的电平跳变信号来同步。 其传送1位信息大约在15个总线周期,则传送1字节用时15X8=120个总线 周期,再加上传输8位所用的循环控制100个总线周期,则传送l字节只需要 220个总线周期。用这种同步方式进行数据传输速率要远远高于异步串行数据 传输,此时传输32KB字节理论上所用的时间为
100 X 59+ 9600+(32 X 1024 X220)+ (2.4576 X106)"4秒
说明用这种方式进行数据通信也依赖于MON08的基本串行通信,其编
译后的目标代码大约在ioo字节,所以在上述时间计算的前一部分是用于传输
这些代码的时间。
从上面的计算可以看出,变"异步"为"同步"的MON08接口通信在数 据传输上有了质的飞跃。在实际实现时,这种通信方式对信号质量要求较髙, 避免毛刺信号的干扰,电路设计时要使用滤波电路,布线要合理。编程时,通 信双方密切配合,严格遵从时序要求,同时要反复测试确保数据稳定性。
8
权利要求
1. 一种MON08接口批量数据传输方法,其特征在于,包括下列步骤(1)编写串行通信程序,编译成目标代码,所述串行通信程序中,在数据传输时,对每64~512字节数据进行一次校验;(2)采用基本的MON08接口通信方法将步骤(1)的目标代码发送至目标MCU的内存中并执行;(3)由编写的串行通信程序将所需传输的数据传输至目标MCU,实现MON08接口的批量数据传输。
2. 根据权利要求l所述的MON08接口批量数据传输方法,其特征在于 所述步骤(l)中的串行通信程序采用同步通信方式进行数据传输。
3. 根据权利要求2所述的MON08接口指量数据传输方法,其特征在于 所述同步通信方式是,主机方发送数据时,先发送4个周期的"低电平"同步 信息,然后发送数据位,并将数据位信息持续IO个周期;接收方在接收到同 步信息后,延时8个周期后接收信息位;主机方在接收数据时,先发送4个周 期的同步信息,然后将I/O 口置为输入状态,延时6个周期后接收信息位;接 收方在接收到同步信息后,把需要发送的信息位发送到线上。
全文摘要
本发明公开了一种MON08接口批量数据传输方法,其特征在于,包括下列步骤(1)编写串行通信程序,编译成目标代码,所述串行通信程序中,在数据传输时,对每64~512字节数据进行一次校验;(2)采用基本的MON08接口通信方法将步骤(1)的目标代码发送至目标MCU的内存中并执行;(3)由编写的串行通信程序将所需传输的数据传输至目标MCU,实现MON08接口的批量数据传输。本发明通过改进MON08接口的通信流程及通信方式,大大加快了大批量数据传输的通信速度,同时保证了数据传输的可靠性。
文档编号G06F13/42GK101446937SQ20081024378
公开日2009年6月3日 申请日期2008年12月15日 优先权日2008年12月15日
发明者刘晓升, 朱巧明, 王宜怀, 龚声蓉 申请人:苏州大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1