SFP+双MCU光收发模块升级的设计与实现
来源:华强电子网 作者:------ 时间:2014-06-26 15:13
2.3 模块更新的实现
AN806一I2C Download Protocol是一种广泛使用的ADuC70xxBCPZxxI模块的下载协议。依照协议的具体规定设计和实现了双MCU模块的升级,具体的模块更新流程如图4所示。
图4模块更新流程
1)运行微转换器加载器
为了防止I2C意外下载,I2C下载模式进人前提是在复位器件串行下载保持低电平、同时Flash/EE存储器Oxl4地址单元的内容为0xFFFFFFFF。因此,用户代码必须有一个内置机制用来擦除第0页(Flash地址0x0到0x200)和复位器件。该机制允许进入下载模式对器件重新编译。
在理想情况下,为了能够在数据重编程时出现掉电故障或出现其他错误时重新进入下载模式,Flash地址单元Oxl4应该最后编程。
在基于MCU的嵌入式系统中,程序的存储区与数据的存储区是一致的,有时只是为了更新程序而又希望可以保留原有的数据,此时往往选择只擦除程序部分。因此,在执行擦除命令时要首先确定是否需要保留数据部分,避免误操作。
2)启动下载协议
一旦加载器进入下载模式,加载器从机器件地址为0x04,因此,每次向加载器发送数据,主机必须以字节0x04(I2c写地址)开始,每次从加载器读取命令应答请求以字节0x05(I2C读地址)开始。加载器的第一个数据包的数据必须为退格符(BS=0x08)以启动该协议。
在收到退格符后,加载器发送如下24 byte ID数据包:
15 byte=产品标示符
3 byte=硬件和固件的版本号
4 byte=保留
2 byte=换行和回车
3)加载器接收数据
为了防止在重新编程过程中出现的异常故障使得MCU无法再次进入下载模式,所以Flash地址单元0x14应该最后编程。从Hex文件的帧结构中可以发现0x14在第2行Hex中,也就是说第2行Hex文件应该在其他数据传完之后再写入。由于程序的起始点在第1行,所以Hex文件的第1行和第2行应该放在最后写入。协议转换器发送数据的具体软件流程如图5所示。
图5 协议转换器发送数据的具体软件流程图
其中,若加载器为MCU1则协议转换器为下载板,即数据的封装在下载板中完成;若加载器为MCU2则协议转换器为MCU2,即数据的封装在MCU1中完成,此时下载板只起转发的作用。
4)加载器接收远程执行命令
一旦主机将所有的数据包发送到加载器,主机可以发送最后一个包以指示加载器开始执行代码。具体的软件流程如图6所示。
图6协议转换器重启加载器的软件流程图
其中有2种不同的远程运行方式:软件复位(h,u,m,l=0x1)和跳转至用户代码(h,u,m,l=0x0)。一般情况下,会选择软件复位,因为软件复位可以重置所有外设。然而在串行接口永久接地和地址0x80014被清零的情况下,有必要采用一个跳转直接到用户代码。如果采用软件复位,则最后发送的数据包的帧结构如表2所示。
表2 软件复位的帧结构
- •在风谲云诡的存储市场独辟蹊径,富士通用二十年时间完美布局嵌入式系统存储2019-10-28
- •汽车电子发展4大趋势 英飞凌的三个应对案例2019-01-23
- •Thread网络协议基于IP网状网络的解决方案2019-01-23
- •MCU控制系统电路原理图2019-01-18
- •微控制器模块和DS18B20 的连接电路图2019-01-18
- •一款采用微处理器控制方式的洗碗机电路设计原理图2019-01-18
- •ARM9内核μC/OS-II系统实现SD卡文件系统电子电路设计图2019-01-18
- •光电隔离RS485典型电路图2019-01-18
- •小型单片机可编程控制延时开关电路模块设计2019-01-18
- •一种新型智能电表的电路设计图2019-01-18