一种基于Bootloader的CSFP光模块升级方法

文档序号:6638554阅读:506来源:国知局
一种基于Bootloader的CSFP光模块升级方法
【专利摘要】本发明公开了一种基于Bootloader的CSFP光模块升级方法,包括:在CSFP光模块的微控制器的FLASH区域中,开辟出Bootloader存放区域,其中存储有Bootloader启动程序;选择启动Bootloader,对FLASH区域中的程序代码区域内的数据执行升级操作。本发明使得光模块出厂后,不必返厂使用编程器烧录程序,即可完成程序的更新,达到兼容不同类型和要求的交换机或路由器的目的,同时,厂商通过远程控制实现程序升级,或者客户可通过光模块总线接口进行程序升级,降低了工作量,减少了因为壳件拆卸造成的程序升级成本。
【专利说明】—种基于Bootloader的CSFP光模块升级方法

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

【背景技术】
[0002]光模块是一种提供光电一电光转换能力的集成化通讯配件,其内部结构框图如图1所示。其中,微控制器主要功能是提供与主机端的通讯总线硬件接口和警告、告警硬件接口。目前市场上主流光模块均包含可编程的微控制器。CSFP光模块是近年来一种新兴的光模块,采用与常规SFP光模块同等大小的封装,集成了两个全双工通讯光模块,使得光模块体积不变的条件下,数据传输能力增加了一倍。光模块作为交换机、路由器的重要组件,广泛应用于网络通讯硬件中,交换机和路由器的生产厂商数量众多,知名厂商包括:思科、华为、中兴、阿尔卡特、惠普、TP-LINK、D-LINK等等。虽然,IEEE和ITU等国际组织提出了标准的通讯协议,设备厂商也联合制定了 SFF8472、INF8077I等标准协议,但各主流设备商之间,也存在诸多互不兼容的自定义标准,这导致了一只符合协议标准的光模块,无法同时取得主流设备商的交换机、路由器等设备的兼容性。光模块生产商为了让光模块获得某设备的兼容性,往往单独开发符合该设备要求的微控制器程序,且这一阶段是在光模块出厂前完成。
[0003]普通的光模块,在出厂之后,其内部程序不可以直接更改,必须返回工厂,针对不同的微控制器型号,使用专用的编程器对微控制器进行程序烧录。由于程序烧录会破坏现有程序和数据,因此相当于再次对该光模块进行了生产,这样的解决方案浪费时间精力,维护周期长,极其繁琐。如图2所示为普通光模块返厂程序升级流程图。由于外壳的拆卸,有可能造成产品性能参数的改变,因此需要再次对光模块性能做测试。这会引入极大的工作量,且因壳件拆卸,会造成一定比例的物料损坏,也大大增加了程序升级的成本。部分光模块生产厂商,通过电路板的设计,避开了光模块壳件拆卸和编程线缆的连接问题,但必须搭配其特制的程序升级电路板,也使得客户无法自行或无法在远程协助下完成程序升级。同时,此类电路的设计,会带来成本的增加,且降低光模块可靠性。
[0004]Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行。在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像B1S那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。
[0005]目前,Bootloader适用于专用的嵌入式环境,例如其广泛应用于GNU/Linux系统。一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:
[0006]1、引导加载程序。包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分。
[0007]2、Linux内核。特定于嵌入式板子的定制内核以及内核的启动参数。
[0008]3、文件系统。包括根文件系统和建立于Flash内存设备之上文件系统。通常用ramdisk 来作为 rootfs。
[0009]4、用户应用程序。特定于用户的应用程序。有时在用户应用程序和内核层之间可能还会包括一个嵌入式图形用户界面。常用的嵌入式⑶I有:MicroWindows和Mini⑶I等。
[0010]但是,Bootloader目前尚只在一些大型软件项目或系统中使用,比如个人计算机(PC),手机操作系统,智能交换机操作系统,电视机机顶盒操作系统等;在一些小型软件系统或单片微机系统领域,几乎没有使用Bootloader的先例。Bootloader本身对于系统硬件的依赖性很高,往往特定的硬件需要搭配特定的Bootloader程序。
[0011]基于Bootloader程序,用户可以使用给定的软件接口,对现有软件进行升级。厂商也可以通过网络远程进行软件升级。


【发明内容】

[0012]本发明的目的是克服现有技术缺陷,提供一种基于Bootloader的CSFP光模块升级方法,其使得光模块出厂后,不必返厂,即可完成程序的更新,达到兼容不同类型和要求的交换机或路由器的目的,并且可实现厂商通过远程控制,完成程序升级,或者客户通过光模块总线接口进行程序升级。
[0013]本发明的目的是提供一种基于Bootloader的CSFP光模块升级方法,其包括:
[0014]在CSFP光模块的微控制器的FLASH区域中,开辟出Bootloader存放区域,其中存储有Bootloader启动程序;
[0015]选择启动Bootloader,对FLASH区域中的程序代码区域内的数据执行升级操作。所述CSFP光模块的微控制器的FLASH区域,专门开辟一个Bootloader存放区域,用于存储Bootloader启动程序,这样当需要使用所述的Bootloader启动程序进行程序升级时,通过相关指令进入所述的Bootloader启动程序这一模式即可。本发明通过在CSFP光模块的微控制器的FLASH区域中存储Bootloader启动程序,实现对所述FLASH区域中的程序代码区域内的数据进行升级,不必进行对光模块返厂进行数据升级,也不必对光模块进行拆装,消除了对光模块因为拆装造成的不必要损害,缩短了维护周期,降低了程序升级的成本。
[0016]优选的是,其中,所述CSFP光模块设置有IIC接口,系统通过远程访问IIC接口来启动Bootloader,执行升级操作。所述IIC接口是所述CSFP光模块都设置有的接口,并且所述的lie接口都使用同一标准,这样通过过远程访问IIC接口来启动Bootloader简单方便,并且不增加生产成本,并可实现远程访问的功能。
[0017]优选的是,其中,选择启动Bootloader,对FLASH区域中的程序代码区域内的数据执行升级操作包括以下步骤:
[0018]1)在微控制器中写入“BOOT”的ASCII码,启动Bootloader ;
[0019]2)将新的程序数据写入FLASH区域中的程序代码区域;
[0020]3)读出写入的新程序数据,与目标程序数据进行比对;
[0021]4)如果正确,则运行新程序数据,完成升级;如果不正确,则重复步骤2)和3),直到正确为止。
[0022]所述步骤1)中通过在微控制器中写入“BOOT”的ASCII码,启动Bootloader,这种启动Bootloader的方式当进行程序升级时,可以通过厂商的远程控制方式完成或有客户来完成,操作简单并且可实现远程控制,所述步骤3)和4)实现对写入的新程序数据与目标程序数据进行比对,达到保证写入的新程序数据就是所要写入的目标程序。
[0023]优选的是,其中,所述步骤2)中包括:
[0024]2.1)查找待写入新程序数据的FLASH区域中的映射地址;
[0025]2.2)将新程序数据中的512字节数据写入微处理器的缓冲区;
[0026]2.3)根据查找到的映射地址,擦除对应的FLASH区域中的原始程序;
[0027]2.4)将缓冲区内的新程序数据写入根据映射地址对应的FLASH区域中;
[0028]2.5)反复执行步骤2.2)-2.4)直到将所有新程序数据全部写入对应的FLASH区域中。
[0029]所述步骤2.1)、2.2)、2.3)、2.4)完成新程序写入到对应的FLASH区域中,并且擦除了对应的FLASH区域中的原始程序,既完成了对新数据的写入,又不改变原来的数据大小。
[0030]优选的是,其中,所述步骤3)中包括:
[0031]3.1)查找写入了新程序数据的FLASH区域中的映射地址;
[0032]3.2)根据查找到的映射地址,将对应的FLASH区域中的新程序数据读取到缓冲区;
[0033]3.3)在缓冲区中读出新程序数据中的512字节数据,与目标程序数据进行比对,以校验写入程序的正确性;
[0034]3.4)反复执行步骤3.3),直到完成校验。
[0035]所述步骤3.1)、3.2)、3.3)执行对新写入程序的校验功能,保证写入新程序就是目标程序。
[0036]优选的是,其中,所述Bootloader启动程序占用CSFP光模块的IIC从机地址为Α0Η、A2H。所述IIC从机地址Α0Η、A2H为所述CSFP光模块的固有功能结构,通过使用所述IIC从机地址Α0Η、A2H,不增加另外的配件,降低了成本。
[0037]优选的是,其中,所述A2H区域的120、121、和122字节作为自定义Bootloader的控制字节;使用123、124、125、和126字节作为进入Bootloader模式的密码控制字节;使用高128位的页0xFC、0xFD、0xFE、0xFF四个页地址作为Bootloader升级的数据缓冲区。通过对所述CSFP光模块A2H区域的重新定义分配,实现了新的功能,且不增加新的开发成本,节约了资源。
[0038]优选的是,其中,所述123-126字节为写入“BOOT”的ASCII码;121_122字节为FLASH映射地址字节;120字节为Bootloader控制字节,命令有:‘E’擦除微控制器的程序储存区,‘W’将缓冲区数据写入微控制器对应的FLASH区域,‘R’读取微控制器对应的FLASH区域数据至缓冲区,‘S’开始运行应用程序;高128位,按页映射缓冲区,OxFC页,映射缓冲区0x000-0x07F字节;0xFD页,映射缓冲区0x080-0x0FF字节;0xFE页,映射缓冲区0xl00-0xl7F字节;0xFF页,映射缓冲区0xl80_0xlFF字节。所述123-126字节为写入“BOOT”的ASCII码,通过写入“BOOT”的ASCII码,实现启动Bootloader的功能;所述121-122字节为FLASH映射地址字节,实现对写入程序和目标程序的校验功能;所述120字节为Bootloader控制字节,实现对新程序的写入和读取功能,完成对微控制器的程序储存区原有程序的擦除功能;所述高128位,作为按页映射缓冲区,实现对数据的临时存放功能。实现了对所述Bootloader启动程序进行启动,完成了对新数据的校验,最终实现对程序的升级,简单易行,可靠性高,且厂商数据和产品数据不受程序更新的影响。
[0039]本发明的有益效果在于:
[0040]1、本发明中远程访问IIC接口来启动Bootloader,执行升级操作,实现了光模块出厂后,不必返厂使用编程器烧录程序,根据交换机、路由器的不同,升级光模块内部程序,达到兼容不同类型和要求的交换机或路由器的目的。
[0041]2、本发明中在CSFP光模块的微控制器的FLASH区域中,开辟出Bootloader存放区域,将Bootloader启动程序存储在微控制器的FLASH区域,形成一个整体。
[0042]3、本发明中厂商通过远程控制,实现程序升级,或者客户可通过光模块总线接口进行程序升级,降低了工作量,减少了因为壳件拆卸造成的程序升级成本。
[0043]4、本发明中厂商通过远程进行程序,将保留光模块的现有厂商、用户数据,不会造成有效数据丢失或调测试参数丢失。

【专利附图】

【附图说明】
[0044]图1为光模块内部结构框图;
[0045]图2为普通光模块返厂程序升级流程图;
[0046]图3为微控制器Bootloader程序工作流程图;
[0047]图4为微控制器C8051F330内部FLASH规划图。

【具体实施方式】
[0048]下面结合附图对本发明做进一步的详细说明,以令本领域技术人员参照说明书文字能够据以实施。
[0049]本发明所述基于Bootloader的CSFP光模块升级方法包括:
[0050]在CSFP光模块的微控制器的FLASH区域中,开辟出Bootloader存放区域,其中存储有Bootloader启动程序;
[0051]选择启动Bootloader,对FLASH区域中的程序代码区域内的数据执行升级操作。所述CSFP光模块的微控制器的FLASH区域,专门开辟一个Bootloader存放区域,用于存储Bootloader启动程序,这样当需要使用所述的Bootloader启动程序进行程序升级时,通过相关指令进入所述的Bootloader启动程序这一模式即可。本发明通过在CSFP光模块的微控制器的FLASH区域中存储Bootloader启动程序,实现对所述FLASH区域中的程序代码区域内的数据进行升级,不必进行对光模块返厂进行数据升级,也不必对光模块进行拆装,消除了对光模块因为拆装造成的不必要损害,缩短了维护周期,降低了程序升级的成本。
[0052]在其中一个实施例中,所述CSFP光模块设置有IIC接口,系统通过远程访问IIC接口来启动Bootloader,执行升级操作。所述IIC接口是所述CSFP光模块都设置有的接口,并且所述的IIC接口都使用同一标准,这样通过过远程访问IIC接口来启动Bootloader简单方便,并且不增加生产成本,并可实现远程访问的功能。
[0053]在其中一个实施例中,如图3所示,选择启动Bootloader,对FLASH区域中的程序代码区域内的数据执行升级操作包括以下步骤:
[0054]I)在微控制器中写入“BOOT”的ASCII码,启动Bootloader ;
[0055]2)将新的程序数据写入FLASH区域中的程序代码区域;
[0056]3)读出写入的新程序数据,与目标程序数据进行比对;
[0057]4)如果正确,则运行新程序数据,完成升级;如果不正确,则重复步骤2)和3),直到正确为止。
[0058]所述步骤I)中通过在微控制器中写入“BOOT”的ASCII码,启动Bootloader,这种启动Bootloader的方式当进行程序升级时,可以通过厂商的远程控制方式完成或有客户来完成,操作简单并且可实现远程控制,所述步骤3)和4)实现对写入的新程序数据与目标程序数据进行比对,达到保证写入的新程序数据就是所要写入的目标程序。
[0059]在其中一个实施例中,如图4所示为微控制器C8051F330内部FLASH规划图,所述步骤2)中包括:
[0060]2.1)查找待写入新程序数据的FLASH区域中的映射地址;
[0061]2.2)将新程序数据中的512字节数据写入微处理器的缓冲区;
[0062]2.3)根据查找到的映射地址,擦除对应的FLASH区域中的原始程序;
[0063]2.4)将缓冲区内的新程序数据写入根据映射地址对应的FLASH区域中;
[0064]2.5)反复执行步骤2.2)-2.4)直到将所有新程序数据全部写入对应的FLASH区域中。
[0065]所述步骤2.1)、2.2)、2.3)、2.4)完成新程序写入到对应的FLASH区域中,并且擦除了对应的FLASH区域中的原始程序,既完成了对新数据的写入,又不改变原来的数据大小。
[0066]在其中一个实施例中,所述步骤3)中包括:
[0067]3.1)查找写入了新程序数据的FLASH区域中的映射地址;
[0068]3.2)根据查找到的映射地址,将对应的FLASH区域中的新程序数据读取到缓冲区;
[0069]3.3)在缓冲区中读出新程序数据中的512字节数据,与目标程序数据进行比对,以校验写入程序的正确性;
[0070]3.4)反复执行步骤3.3),直到完成校验。
[0071]所述步骤3.1),3.2),3.3)执行对新写入程序的校验功能,保证写入新程序就是目标程序。
[0072]在其中一个实施例中,所述Bootloader启动程序占用CSFP光模块的IIC从机地址为A0H、A2H。所述IIC从机地址A0H、A2H为所述CSFP光模块的固有功能结构,通过使用所述IIC从机地址A0H、A2H,不增加另外的配件,降低了成本。
[0073]在其中一个实施例中,所述A2H区域的120、121、和122字节作为自定义Bootloader的控制字节;使用123、124、125、和126字节作为进入Bootloader模式的密码控制字节;使用高128位的页OxFC、OxFD、OxFE、OxFF四个页地址作为Bootloader升级的数据缓冲区。通过对所述CSFP光模块A2H区域的重新定义分配,实现了新的功能,且不增加新的开发成本,节约了资源。
[0074]在其中一个实施例中,所述123-126字节为写入“BOOT”的ASCII码;121-122字节为FLASH映射地址字节;120字节为Bootloader控制字节,命令有:‘E’擦除微控制器的程序储存区,‘W’将缓冲区数据写入微控制器对应的FLASH区域,‘R’读取微控制器对应的FLASH区域数据至缓冲区,‘S’开始运行应用程序;高128位,按页映射缓冲区,OxFC页,映射缓冲区0x000-0x07F字节;0xFD页,映射缓冲区0x080-0x0FF字节;0xFE页,映射缓冲区0xl00-0xl7F字节;0xFF页,映射缓冲区0xl80_0xlFF字节。所述123-126字节为写入“BOOT,,的ASCII码,通过写入“BOOT”的ASCII码,实现启动Bootloader的功能;所述121-122字节为FLASH映射地址字节,实现对写入程序和目标程序的校验功能;所述120字节为Bootloader控制字节,实现对新程序的写入和读取功能,完成对微控制器的程序储存区原有程序的擦除功能;所述高128位,作为按页映射缓冲区,实现对数据的临时存放功能。实现了对所述Bootloader启动程序进行启动,完成了对新数据的校验,最终实现对程序的升级,简单易行,可靠性高,且保留光模块的现有厂商、用户数据,不会造成有效数据丢失或调测试参数丢失。
[0075]尽管本发明的实施方案已公开如上,但其并不仅仅限于说明书和实施方式中所列运用,它完全可以被适用于各种适合本发明的领域,对于熟悉本领域的人员而言,可容易地实现另外的修改,因此在不背离权利要求及等同范围所限定的一般概念下,本发明并不限于特定的细节和这里示出与描述的图例。
【权利要求】
1.一种基于Bootloader的CSFP光模块升级方法,其特征在于,包括以下步骤: 在CSFP光模块的微控制器的FLASH区域中,开辟出Bootloader存放区域,其中存储有Bootloader启动程序; 选择启动Bootloader,对FLASH区域中的程序代码区域内的数据执行升级操作。
2.如权利要求1所述的基于Bootloader的CSFP光模块升级方法,其特征在于, 所述CSFP光模块设置有IIC接口,系统通过远程访问IIC接口来启动Bootloader,执行升级操作。
3.如权利要求2所述的基于Bootloader的CSFP光模块升级方法,其特征在于,选择启动Bootloader,对FLASH区域中的程序代码区域内的数据执行升级操作包括以下步骤: 1)在微控制器中写入“BOOT”的ASCII码,启动Bootloader; 2)将新的程序数据写入FLASH区域中的程序代码区域; 3)读出写入的新程序数据,与目标程序数据进行比对; 4)如果正确,则运行新程序数据,完成升级;如果不正确,则重复步骤2)和3),直到正确为止。
4.如权利要求3所述的基于Bootloader的CSFP光模块升级方法,其特征在于, 所述步骤2)中包括: 2.1)查找待写入新程序数据的FLASH区域中的映射地址; 2.2)将新程序数据中的512字节数据写入微处理器的缓冲区; 2.3)根据查找到的映射地址,擦除对应的FLASH区域中的原始程序; 2.4)将缓冲区内的新程序数据写入根据映射地址对应的FLASH区域中; 2.5)反复执行步骤2.2)-2.4)直到将所有新程序数据全部写入对应的FLASH区域中。
5.如权利要求4所述的基于Bootloader的CSFP光模块升级方法,其特征在于, 所述步骤3)中包括: 3.1)查找写入了新程序数据的FLASH区域中的映射地址; 3.2)根据查找到的映射地址,将对应的FLASH区域中的新程序数据读取到缓冲区; 3.3)在缓冲区中读出新程序数据中的512字节数据,与目标程序数据进行比对,以校验写入程序的正确性; 3.4)反复执行步骤3.3),直到完成校验。
6.如权利要求5所述的基于Bootloader的CSFP光模块升级方法,其特征在于,所述Bootloader启动程序占用CSFP光模块的IIC从机地址为AOH、A2H。
7.如权利要求6所述的基于Bootloader的CSFP光模块升级方法,其特征在于,所述A2H区域的120、121、和122字节作为自定义Bootloader的控制字节;使用123、124、125、和126字节作为进入Bootloader模式的密码控制字节;使用高128位的页0xFC、0xFD、0xFE、OxFF四个页地址作为Bootloader升级的数据缓冲区。
8.如权利要求7所述的基于Bootloader的CSFP光模块升级方法,其特征在于,所述123-126字节写入“BOOT”的ASCII码;121-122字节为FLASH映射地址字节;120字节为Bootloader控制字节,命令有:?’擦除微控制器的程序储存区,‘W’将缓冲区数据写入微控制器对应的FLASH区域,‘R’读取微控制器对应的FLASH区域数据至缓冲区,‘S’开始运行应用程序;高128位,按页映射缓冲区,OxFC页,映射缓冲区0X000-0X07F字节;0xFD页,







。栌il.&TX0-08TX0Μ殳1£谨 ^ ΗΗΧΟΚ 栌il.Ηζτχοιοοτχο ^§s ^ 3?°栌il.Ηδχο-Οοοοχο ^§s同 2/2 cj_ 玲 狀 r-ψ ν 6ε9?940? ζο
【文档编号】G06F9/445GK104461639SQ201410768456
【公开日】2015年3月25日 申请日期:2014年12月12日 优先权日:2014年12月12日
【发明者】范巍, 侯羿 申请人:四川华拓光通信股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1