EDN China > 设计实例 > 通信 > 光通信 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

(多图) SFP+双MCU光收发模块升级的设计与实现

/?? 2014年06月25日 ?? 收藏0

2 双MCU嵌入式系统升级的实现

双MCU嵌入式系统升级的实现可分为以下几个部分:实现串口数据收集,实现数据的封装以及按照下载协议实现系统的更新。

2.1 串口数据收集实现

上位机(GUI)将Hex文件一行一行地发送给下载板,通过协议转换模块对数据封装后通过下载协议更新需要升级的系统。而串口每次只能发送一个ASCII码字符给下载板。下载板接收到数据后将每2个ASCII码合并为1个相应的十六进制数据,从而实现数据的收集。

2.2 数据封装的实现

数据的封装可根据具体的更新哪块MCU分别在下载板(更新MCU1)或MCU1(更新MCU2)中完成。由于数据封装前是Hex的帧结构,无法满足下载协议的要求,所以在更新系统之前必须对数据进行封装,使其满足协议的要求。下面将介绍具体的实现方式。

1)Hex文件的帧结构如图2所示。

图2 Hex文件的帧结构
图2 Hex文件的帧结构

(1)起始符:固定为“:”用于记录一帧数据的开始。

(2)数据字节数:后面的2个字符表明记录的长度。一般情况为0x10,表明这一帧中传送的有效数据位16 byte。

(3)地址位:4个字符表明调入的起始地址。

(4)数据类型:2个字符表明记录的类型。以下为具体的字符对应的不同的数据类型:

0:数据记录。

l:记录文件结束。

2:扩展地址记录。

3:开始段地址记录。

4:扩展线性地址记录。

5:开始线性地址记录。

(5)数据:表明有效的数据。

(6)校验和:最后的2位表明校验和检查,它加上前面所有的数据为0。

2)下载协议规定的数据帧结构如图3所示。

图3发送数据的帧结构
图3发送数据的帧结构

(1)起始ID:0x07和0x0E是两个固定的有效值。

(2)数据字节数:表示数据帧中传输的数据,从Datal开始算起。最小值为5,最大值为255。

(3)数据1 CMD,如表1所示。

表1 命令功能

表1 命令功能

(4)数据2一数据5(Address:h,u,m,1):该地址字段包含一个32位地址h,u,m,l,其中h中包含最高有效位(MSB),l中包含最低有效位(LSB)。

(5)数据x(x=6~255):用户代码是按字节下载的,数据字节字段最多为250个数据字节。数据必须是扩展Hex 16字节记录格式的数据串,而且在传输到加载器之前作为上面数据表格的一部分由主机重新编译。

(6)校验和:校验和的计算方法为所有数据的和取余。

3)帧结构封装的实现

协议转换模块将收到的每2个ASCII码转化为1个对应的十六进制,并存放于特定的缓存中。当协议转换模块收到回车换行后就会开始帧结构的封装工作。按照协议规定,为数据加入Start ID;帧结构中的No.of Data Bytes的值为Hex文件中数据的个数加5(其中主要加入了CMD Byte以及4 byte的地址);Datal则是命令Byte可根据协议要求写入适当的命令,在更新系统时应使用写命令W(0x57);Data2一Data5为Hex文件中指定的地址;Data x对应Hex文件中的数据部分;Checksum则为0x00减去从Bytel~Byte x 的所有数据的和。从而实现对数据的封装。

【分页导航】


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

SFP+光收发模块? MCU? 嵌入式系统?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈