一种基于Bootloader的SFF光模块远程升级方法

文档序号:6638543阅读:408来源:国知局
一种基于Bootloader的SFF光模块远程升级方法
【专利摘要】本发明公开了一种基于Bootloader的SFF光模块远程升级方法,步骤包括:在SFF光模块上嵌入Bootloader程序;升级数据写入SFF光模块;调用Bootloader程序校验升级数据,本发明将Bootloader方式移植于SFF光模块微控制器,实现了光模块出厂后,可通过标准接口进行远程程序升级,无须借助任何编程线缆,不会破坏现有程序和数据,也不用拆卸光模块壳件,这使得客户可以自助升级或由厂商进行远程升级,达到兼容各厂商交换机、路由器的目的。
【专利说明】—种基于Bootloader的SFF光模块远程升级方法

【技术领域】
[0001]本发明涉及光模块远程升级方法,特别是一种基于Bootloader的SFF光模块远程升级方法。

【背景技术】
[0002]光模块是一种提供光电一电光转换能力的集成化通讯配件,目前市场上主流光模块均包含可编程的微控制器。
[0003]普通的光模块在出厂之后,其内部程序不可以直接更改,必须返回工厂,针对不同的微控制器型号,使用专用的编程器对微控制器进行程序烧录。由于程序烧录需要拆卸外壳,这样有可能造成产品性能参数的改变,因此需要再次对光模块性能做测试,这会引入极大的工作量,且因壳件拆卸,会造成一定比例的物料损坏,也大大增加了程序升级的成本,另外程序烧录还会破坏现有程序和数据,因此相当于再次对该光模块进行了生产,这样的解决方案浪费时间精力,维护周期长,极其繁琐,而且SFF光模块,采用DIP封装形式,一般使用于工业级环境,要求硬件上焊接,因此更加不利于返修和拆卸。


【发明内容】

[0004]针对上述技术问题,本发明提供了一种基于Bootloader的SFF光模块远程升级方法,包括以下步骤:
[0005]在SFF光模块的微控制器的Flash区域中,开辟出Bootloader存放区域,其中存储有Bootloader启动程序;选择启动Bootloader,对Flash区域中的程序代码区域内的数据执行升级操作。
[0006]优选方案是:所述SFF光模块设置有IIC接口,系统通过远程访问IIC接口来启动Bootloader,执行升级操作。
[0007]优选方案是:选择启动Bootloader,对Flash区域中的程序代码区域内的数据执行升级操作包括以下步骤:
[0008]I)将升级数据通过远程控制方式写入所述升级数据的缓冲区;
[0009]2)输入进入Bootloader模式的密码控制口令,若正确,进行下述步骤:
[0010]3)Bootloader控制字节写入“擦除指令”,则SFF光模块微处理器根据升级数据的大小擦除所述Flash映射地址字节对应的Flash区域的原始程序;
[0011]4) Bootloader控制字节写入“写入指令”,则SFF光模块微处理器将缓冲区的升级程序写入所述Flash映射地址字节对应的Flash区域,直到程序完全写入;
[0012]5)、Bootloader控制字节写入“读取指令”,则SFF光模块微处理器将所述Flash区域程序数据读出至缓冲区;
[0013]6)将步骤5读出的数据与升级数据的缓冲区的数据进行对比,以此校验其正确性,若正确,Bootloader控制字节写入“运行程序”指令,则运行目标程序代码;若校验错误,则重复4?6步骤。
[0014]优选方案是-Bootloader程序使用光模块标准总线接口 IIC嵌入SFF光模块,兼容光模块SFF-8472协议。
[0015]优选方案是:SFF光模块Flash区域分区设置。
[0016]优选方案是:将SFF光模块Flash区域分为程序代码区,厂商数据区、产品数据区和微控制器自身保留区。
[0017]优选方案是:所述Bootloader启动程序占用SFF光模块的IIC从机地址为A2H。
[0018]优选方案是:所述A2H区域的120、121、和122字节作为自定义Bootloader的控制字节;使用123、124、125、和126字节作为进入Bootloader模式的密码控制字节;使用高128位的页0xFC、0xFD、0xFE、0xFF四个页地址作为Bootloader升级的数据缓冲区。
[0019]本发明将Bootloader方式移植于SFF光模块微控制器,实现了光模块出厂后,可通过标准接口进行远程程序升级,无须借助任何编程线缆,不会破坏现有程序和数据,也不用拆卸光模块壳件,这使得客户可以自助升级或由厂商进行远程升级,达到兼容各厂商交换机、路由器的目的。

【专利附图】

【附图说明】
[0020]图1为本发明的方法流程图;
[0021]图2 为 C8051F330 内部 Flash 规划图。

【具体实施方式】
[0022]光模块是一种提供光电一电光转换能力的集成化通讯配件,其中,光模块中的微控制器主要功能是提供与主机端的通讯总线硬件接口。目前市场上主流光模块均包含可编程的微控制器。SFF光模块,为小封装光模块。光模块作为交换机、路由器的重要组件,广泛应用于网络通讯硬件中。交换机和路由器的生产厂商数量众多,知名厂商包括:思科、华为、中兴、阿尔卡特、惠普、TP-LINK、D-LINK等等。虽然,IEEE和ITU等国际组织提出了标准的通讯协议,设备厂商也联合制定了 SFF8472、INF8077I等标准协议,但各主流设备商之间,也存在诸多互不兼容的自定义标准,这导致了一只符合协议标准的光模块,无法同时取得主流设备商的交换机、路由器等设备的兼容性。光模块生产商为了让光模块获得某设备的兼容性,往往单独开发符合该设备要求的微控制器程序,且这一阶段是在光模块出厂前完成。
[0023]Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像B1S那样的固件程序,因此整个系统的加载启动任务就完全由BootLoader来完成。
[0024]本实施例以光模块常用的C8051F330型号微控制器为例对基于Bootloader的SFF光模块远程升级方法进行阐述,如图1所示:
[0025]首先将SFF光模块总线接口寄存器自定义四个部分,第一部分为Flash映射地址字节;第二部分为为Bootloader控制字节;第三部分为进入Bootloader模式的密码控制字节;第四部分为升级数据缓冲区的地址页字节,所述地址页字节映射存放升级数据的缓冲区,SFF光模块提供IIC总线接口,IIC从机地址为A2H,按照SFF-8472协议规定,A2H区域的120、121、122字节为厂商保留区,123、124、125、126字节为密码入口区,127字节为高128位寄存器映射页选择寄存器。本发明将使用保留地址120、121、122字节作为自定义Bootloader的控制字节,同时使用123、124、125、126字节作为进入Bootloader模式的密码控制字节,使用高128位的页OxFC、OxFD、OxFE、OxFF四个页地址作为Bootloader升级的数据缓冲区。
[0026]本发明以光模块常用的C8051F330型号微控制器为例详细阐述远程升级过程:
[0027]I)将在SFF光模块上嵌入Bootloader程序,Bootloader程序使用光模块标准总线接口 IIC嵌入SFF光模块,兼容光模块SFF-8472协议。
[0028]2)将升级数据通过远程控制方式写入缓冲区;
[0029]A2H地址,高128位,按页映射缓冲区。OxFC页,映射缓冲区0x000-0x07F字节;OxFD页,映射缓冲区0x080-0x0FF字节;0xFE页,映射缓冲区0xl00_0xl7F字节;0xFC页,映射缓冲区0xl80-0xlFF字节。127字节页地址OxFC、OxFD、OxFE、OxFF写入512字节的程序数据。
[0030]3)输入进入Bootloader模式的密码控制口令,A2H地址,123-126字节,写入“BOOT”的ASCII码,进入Bootloader模式。若口令正确,进行下述步骤:
[0031]a) A2H地址,120字节,写入擦除命令“E”,则SFF光模块微处理器根据升级数据的大小擦除所述Flash映射地址字节对应的Flash区域的原始程序;
[0032]b)A2H地址,120字节,写入写入命令“W”,则SFF光模块微处理器将缓冲区的升级程序写入所述Flash映射地址字节对应的Flash区域,直到程序完全写入;
[0033]4)调用Bootloader程序校验升级数据,并在升级数据未通过校验时重新写入升级数据,具体包括以下步骤:
[0034]e)A2H地址,120字节,写入读取命令“R”,则SFF光模块微处理器将所述Flash区域程序数据读出至缓冲区;
[0035]f)将步骤e读出的数据与OxFC、OxFD、OxFE、OxFF升级数据进行对比,以此校验其正确性,若正确,则AOH地址,107字节,写入运行程序命令“S”,则运行目标程序代码;若校验错误,则重复3?4步骤。
[0036]由于Bootloader与硬件息息相关,因此需要对微控制器C8051F330的Flash区域进行规划,如图2所示。微控制器C8051F330内部共8K空间,以512字节为BANK储存程序代码和数据。按照规划,将程序代码区固定于0X0000-0X15FF区域,将厂商数据和产品数据固定于0xl600-0xl9FF区域,将Bootloader存放于0xlA00_0xlDFE区域,其余区域均为微控制器自身保留区。在执行Bootloader升级时,只对0x0000-0xl5FF区域的程序代码。这样可以保证厂商数据和产品数据不受程序更新的影响。
[0037]在完成程序接口拼接后,需要将编译结构进行拼接。即将Bootloader的程序编译的可执行文件和目标程序编译的可执行文件进行拼接。拼接时,需要符合定义的Flash分配地址。即0x0000-0xl5FF为目标程序代码,OxlAOO-OxlDFE为Bootloader程序代码。拼接后的程序,适用于首次对微控制器烧录,之后使用Bootloader升级程序时,只需要导入0x1600以前的代码数据。
[0038]尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用。它完全可以被适用于各种适合本发明的领域。对于熟悉本领域的人员而言,可容易地实现另外的修改。因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
【权利要求】
1.一种基于800丨10狀161~的3??光模块远程升级方法,其特征在于,包括以下步骤: 在3??光模块的微控制器的?匕也区域中,开辟出存放区域,其中存储有0001:108(161-启动程序;选择启动8001:1021(161',对区域中的程序代码区域内的数据执行升级操作。
2.根据权利要求1所述的基于800丨10狀161~的3??光模块远程升级方法,其特征在于,所述3??光模块设置有I X接口,系统通过远程访问I X接口来启动800^1021(161执行升级操作。
3.如权利要求2所述的基于800丨的3??光模块升级方法,其特征在于,选择启动80於10狀161',对?1%1!区域中的程序代码区域内的数据执行升级操作包括以下步骤: 1)将升级数据通过远程控制方式写入所述升级数据的缓冲区; 2)输入进入8001:1021(161'模式的密码控制口令,若正确,进行下述步骤: 3)800^108(161-控制字节写入“擦除指令”,则3??光模块微处理器根据升级数据的大小擦除所述?匕也映射地址字节对应的区域的原始程序; 4)000^108(161-控制字节写入“写入指令”,则3??光模块微处理器将缓冲区的升级程序写入所述?匕也映射地址字节对应的区域,直到程序完全写入; 5)、800^108(161-控制字节写入“读取指令”,则3??光模块微处理器将所述?1狀1!区域程序数据读出至缓冲区; 6)将步骤5读出的数据与升级数据的缓冲区的数据进行对比,以此校验其正确性,若正确,80於10狀161~控制字节写入“运行程序”指令,则运行目标程序代码;若校验错误,则重复3?6步骤。
4.根据权利要求1所述的基于800丨10狀161~的3??光模块远程升级方法,其特征在于,800^108(161-程序使用光模块标准总线接口 11(:嵌入3??光模块,兼容光模块3??-8472协议。
5.根据权利要求1所述的基于800丨10狀161~的3??光模块远程升级方法,其特征在于,8??光模块区域分区设置。
6.根据权利要求5所述的基于800丨10狀161~的3??光模块远程升级方法,其特征在于,将3??光模块区域分为程序代码区,厂商数据区、产品数据区和微控制器自身保留区。
7.如权利要求1所述的基于800丨的3??光模块升级方法,其特征在于,所述800^108(161-启动程序占用3??光模块的IX从机地址为八21
8.如权利要求7所述的基于800丨10^161'的3??光模块升级方法,其特征在于,所述八2?区域的120、121、和122字节作为自定义800003(161的控制字节;使用123、124、125、和126字节作为进入800丨103(16^模式的密码控制字节;使用高128位的页0x1^、0x50、(^而、0x1^?四个页地址作为8001:1021(16:^升级的数据缓冲区。
【文档编号】G06F9/445GK104407902SQ201410768288
【公开日】2015年3月11日 申请日期:2014年12月12日 优先权日:2014年12月12日
【发明者】范巍, 侯羿 申请人:四川华拓光通信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1