一种二进制合一Boot程序及内核程序的设计方法

文档序号:6491263阅读:178来源:国知局
一种二进制合一Boot程序及内核程序的设计方法
【专利摘要】本发明公开了一种二进制合一Boot程序及内核程序的设计方法,包括:对不同控制芯片的配置文件进行统一配置,根据硬件信息标识控制芯片,并修改不同控制芯片的代码流程,以完成Boot程序的二进制合一;统一不同控制芯片的内核配置,并进行不同控制芯片的编译共存配置和运行共存配置,以实现内核程序的二进制合一。本发明的方法可实现同一个软件版本能在两种或多种不同的控制芯片上使用。
【专利说明】一种二进制合一 Boot程序及内核程序的设计方法
【技术领域】
[0001]本发明涉及光纤通信【技术领域】,尤其涉及以太无源光网络(EPON),千兆无源光网络(GPON),无线第三代移动通信技术(3G)等综合接入技术中的一种二进制合一 Boot程序及内核程序的设计方法。
【背景技术】
[0002]目前,随着各种通信业务的不断增长,光网络终端主控设备(ONU)在光纤通信中被广泛应用。相应的,ONU控制芯片的种类也逐渐增多,即使同一厂家不同系列的控制芯片也存在很大差异。在软件设置时,都是每一款控制芯片对应一个软件版本,如果这样的设置方式用到同一款产品上,就会对外场升级和用户使用带来很大麻烦。比如:对于同一款产品,先后使用两种甚至多种不同ARM核的控制芯片,虽然对外是同一款产品,但却需要提供两套甚至多套软件版本,导致外场升级效率低,升级方法过于繁琐,用户使用也不方便,管理也比较困难。

【发明内容】

[0003]有鉴于此,本发明的主要目的在于提供一种二进制合一 Boot程序及内核程序的设计方法,可实现同一个软件版本能在两种或多种不同的控制芯片上使用。
[0004]为达到上述目的,本发明的技术方案是这样实现的:
[0005]本发明提供了一种二进制合一 Boot程序及内核程序的设计方法,该方法包括:
[0006]对不同控制芯片的配置文件进行统一配置,根据硬件信息标识控制芯片,并修改不同控制芯片的代码流程,以完成Boot程序的二进制合一;
[0007]统一不同控制芯片的内核配置,并进行不同控制芯片的编译共存配置和运行共存配置,以实现内核程序的二进制合一。
[0008]其中,所述对不同控制芯片的配置文件进行统一配置,为:
[0009]将不同控制芯片相冲突的宏分别定义为全局变量,在控制芯片初始化的过程中对所有宏对应的冲突项均进行设计,并对使用冲突项的位置依次进行修改。
[0010]其中,所述硬件信息包括:通用输入/输出GPIO接口信息或处理器类型信息。
[0011]其中,所述编译共存配置为:使用同一套配置,将一个或者多个控制芯片的板级支持包BSP代码整合到其中一个控制芯片的BSP中。
[0012]进一步地,该方法还包括二进制合一 Boot程序的启动方法,包括:
[0013]系统上电,Boot程序开始启动,获取控制芯片类型;
[0014]判断控制芯片类型,如果是ARM9核控制芯片,则初始化ARM9核控制芯片控制器的寄存器,初始化系统外围硬件;如果是ARMll核控制芯片,则初始化ARMl I核控制芯片控制器的寄存器,初始化系统外围硬件;
[0015]检测文件系统类型,并初始化文件系统;
[0016]判断flash上的版本文件是否完整有效,如果是完整有效版本,则启动系统主版本;否则,返回Boot命令行,提示无有效版本。
[0017]进一步地,该方法还包括:二进制合一 Boot程序的升级方法,分为:Boot命令行下的升级,以及带内升级,即版本启动后,通过网管进行的远程升级。
[0018]其中,所述Boot程序在Boot命令行下的升级方法包括:
[0019]搭建Boot命令行下升级Boot程序的设备环境;上电启动0NU,并配置网络参数;执行更新命令,升级二进制合一 Boot程序;升级成功后,重启ONU设备,运行系统新版本。
[0020]其中,所述Boot程序带内升级方法包括:
[0021]搭建版本启动后升级Boot程序的设备环境;0NU上电启动,配置网络参数;执行Boot程序升级命令,升级二进制合一 Boot程序;升级成功后,重启ONU设备,运行系统新版本。
[0022]进一步地,该方法还包括二进制合一内核程序的启动方法,包括:
[0023]系统上电,内核程序开始启动,获取控制芯片类型;
[0024]判断控制芯片类型,如果是ARM9核控制芯片,则初始化ARM9核控制芯片控制器的寄存器,初始化系统外围硬件,加载ARM9单板相关外设的驱动程序;如果是ARMll核控制芯片,则初始化ARMll核控制芯片控制器的寄存器,初始化系统外围硬件,加载ARMll单板相关外设的驱动程序;
[0025]兼容ARMV6和ARMV4两种体系结构编码,使运行共存;
[0026]检测文件系统类型,初始化文件系统;
[0027]判断flash上的用户态版本文件是否完整有效,如果是,则启动用户态版本;否贝1J,返回内核shell命令行,提示无有效用户态版本。
[0028]进一步地,该方法还包括:二进制合一内核程序的升级方法,分为=Boot命令行下的升级,以及带内升级。
[0029]其中,所述内核程序在Boot命令行下的升级方法包括:
[0030]搭建Boot命令行下升级内核程序的设备环境;上电启动0NU,并配置网络参数;执行版本升级命令,升级二进制合一内核程序;升级成功后,重启ONU设备,运行系统新版本。
[0031]其中,所述内核程序带内升级方法包括:
[0032]搭建版本启动后升级内核程序的设备环境;0NU上电启动,配置网络参数;执行版本升级命令,升级二进制合一内核程序;升级成功后,重启ONU设备,运行系统新版本。
[0033]本发明提供的二进制合一 Boot程序及内核程序的设计方法,对不同控制芯片的配置文件进行统一配置,根据处理器的类型标识控制芯片,并修改不同控制芯片的代码流程,以完成Boot程序的二进制合一;统一不同控制芯片的内核配置,并进行编译共存配置和运行共存配置,以实现内核程序的二进制合一。本发明可实现同一软件版本能在两种不同的控制芯片上使用,不需要额外增加硬件成本,可移植性好。
[0034]此外,本发明的Boot程序及内核程序在升级过程中,一个版本可以升级到两种不同的控制芯片上,便于外场升级和版本管理,版本升级效率和稳定性都大大提高,且使用方便,降低了系统的维护成本。
【专利附图】

【附图说明】
[0035]图1为本发明二进制合一 Boot程序及内核程序的设计方法流程图;[0036]图2为本发明设置的控制芯片Boot程序实施例的组成结构示意图;
[0037]图3为本发明Boot程序的启动方法实现流程图;
[0038]图4本发明Boot程序在Boot命令行下的升级方法流程示意图;
[0039]图5为本发明Boot程序带内升级方法的流程示意图;
[0040]图6为本发明内核程序的启动方法实现流程图;
[0041]图7为本发明内核程序在Boot命令行下的升级方法流程示意图;
[0042]图8为本发明内核程序带内升级方法的流程示意图。
【具体实施方式】
[0043]本发明的基本思想是:对两个或者多个不同控制芯片的配置文件进行统一配置,根据硬件信息标识控制芯片,并修改不同控制芯片的代码流程,以完成Boot程序的二进制合一;统一不同控制芯片的内核配置,并进行不同控制芯片的编译共存配置和运行共存配置,以实现内核程序的二进制合一。
[0044]进一步地,本发明还包括:二进制合一 Boot程序的启动方法,以及二进制合一内核程序的启动方法。
[0045]进一步地,本发明还包括:二进制合一 Boot程序的升级方法,以及二进制合一内核程序的升级方法。
[0046]下面结合附图及具体实施例对本发明作进一步详细说明。
[0047]本发明所述的ONU主控板,即ONU的控制芯片,一方面完成ONU系统的控制和数据交换功能,另一方面负责对各种线卡的管理,包括线卡的上下线处理、线卡的版本管理等。无源光网络(PON)子卡通过光分路器完成与EP0N/GP0N光线路终端(OLT)系统的对接,同时完成与主控板的数据交互。基于网络层协议的语音(VOIP)子卡完成对模拟电话业务(POTS)用户提供多路VOIP接入;E1子卡主要完成El业务到以太网的转换与恢复;电源板主要提供系统的电源。
[0048]图1为本发明二进制合一 Boot程序及内核程序的设计方法流程图,如图1所示,该流程的实现步骤如下:
[0049]步骤101:对不同控制芯片的配置文件进行统一配置;
[0050]具体为:对于不同的控制芯片,通常常见的冲突项包括:内存基址、内存大小、flash基址、flash大小及其他外设基址等。这里,将不同控制芯片相冲突的宏分别定义为全局变量,在控制芯片初始化的过程中对所有宏对应的冲突项均进行设置,并对使用冲突项的位置依次进行修改。
[0051]以flash配置冲突为例,相关的冲突宏为CFG_FLASH_BASE和CFG_FLASH_SIZE,则将这两个宏定义为全局变量_g_CFG_FLASH_BASE和_g_CFG_FLASH_SIZE,如果有其他宏使用了 CFG_FLASH_BASE与CFG_FLASH_SIZE,就将使用的宏修改为对应的变量_g_CFG_FLASH_BASE 或 _g_CFG_FLASH_SIZE。
[0052]步骤102:根据硬件信息标识控制芯片;
[0053]具体为:不同的控制芯片都有特定的识别方式,这种识别方式可以通过控制芯片独特的硬件信息进行标识,可使用的硬件信息有通用输入/输出(GPIO)接口信息或者处理器类型信息。以ARM系列处理器为例,协处理器CP15的寄存器O中有处理器的相关信息,通过该寄存器可以判断当前处理器是ARM9还是ARMlI。这里,可通过设计接口 detect控制芯片来探测当前处理器的类型。
[0054]步骤103:修改不同控制芯片的代码流程;
[0055]具体为:对不同控制芯片的代码流程进行修改,在消除代码统一后的编译错误之后,从控制芯片上电后初始化代码开始,使用if-else结构控制不同控制芯片的代码流程,直到控制芯片初始化结束,进入统一流程。
[0056]上述步骤101-103的操作完成了 Boot程序的二进制合一,该方法主要使用类似if-else指令控制程序根据控制芯片的不同类型进行各自的流程,直到控制芯片的初始化结束。
[0057]图2为本发明设置的控制芯片Boot程序实施例的组成结构示意图,如图2所示,包括:版本头部和版本主体;其中,
[0058]所述版本头部占用256个字节,包括:版本号、版本功能,即对应的控制芯片类型、版本类型,表明所述程序为Boot程序、版本的创建时间、版本头的长度、整个版本的大小、版本头的校验和、Boot掩码信息和保留信息;所述版本主体即Boot版本镜像,即Boot程序的有效代码。
[0059]步骤104:统一不同控制芯片的内核配置;
[0060]这部分主要统一两个或多个不同控制芯片的内核配置项,使用同一套配置,能够编译出在不同控制芯片上都能运行正常的映像。
[0061]步骤105:不同控制芯片的编译共存配置;
[0062]这里,所述编译共存配置是指:使用同一套配置,将一个或者多个控制芯片的板级支持包(Board Support Package,BSP)代码整合到其中一个控制芯片的BSP中。以ARMll和ARM9控制芯片的整合为例,将ARMl I控制芯片的BSP整合到ARM9控制芯片中,编译完成。
[0063]由于不同控制芯片冲突的宏较多,且取值也不同,因此将所有有冲突的宏定义采取改名的方式进行整合;控制芯片相关的代码,以不同的控制芯片目录进行区分;驱动代码也进行区分,其中,各个控制芯片可以共用通用的驱动;而对于某些控制芯片特有的驱动,则仅为该控制芯片使用。
[0064]所有控制芯片的所有模块都加载,在模块加载与卸载的时候,首先判断处理器类型,如果不是本控制芯片,直接返回;因此在后续执行的过程中,控制芯片初始化代码与驱动代码都不会混合。
[0065]步骤106:不同控制芯片的运行共存配置;
[0066]这里,所述运行共存是二进制合一调试的关键,主要在于不同版本处理器指令的统一。由于同一个架构的处理器,通常高版本处理器能够兼容低版本处理器的指令,因此,可提取包含高版本处理器指令的代码,将这部分代码使用高版本处理器指令去编译。
[0067]以ARMll和ARM9的统一为例,需对ARMV6与ARMV4都进行配置,ARMV6的代码使用ARMV6指令去编译。
[0068]这样处理之后,内核能够同时支持不同版本的处理器。内核程序二进制合一设置之后,再和用户态代码一起编译出系统的二进制合一版本。
[0069]上述步骤104-106的操作完成了内核程序的二进制合一,由于不同控制芯片的处理器类型存在差异,涉及一些扩展指令,以及不同宏控制的代码,因此内核程序二进制合一相对复杂,但是基本思想与Boot程序类似。
[0070]当然,由于上述过程均在系统启动之前完成的,所以上述步骤101-103可与步骤104-106的操作可以相互调换。
[0071]本发明还提供了一种Boot程序的启动方法,如图3所示,实现步骤如下:
[0072]步骤301:系统上电,Boot程序开始启动,获取控制芯片类型;
[0073]步骤302:判断控制芯片类型,如果是ARM9核控制芯片,则执行步骤303 ;如果是ARMll核控制芯片,则执行步骤304 ;
[0074]步骤303:初始化ARM9核控制芯片控制器的寄存器,初始化系统外围硬件,之后执行步骤305 ;
[0075]所述外围硬件包括:内存,flash,网口,串口等设备。
[0076]步骤304:初始化ARMll核控制芯片控制器的寄存器,初始化系统外围硬件;
[0077]所述外围硬件包括:内存,flash,网口,串口等设备。
[0078]步骤305:检测文件系统类型,即:检测flash上的文件系统类型,并初始化文件系统;
[0079]步骤306:判断flash上的版本文件是否完整有效,主要是检查主程序的掩码,大小,校验和等,如果是完整有效版本,则执行步骤307 ;否则,跳转到步骤308 ;
[0080]步骤307:启动系统主版本;
[0081 ] 步骤308:返回Boot命令行,提示无有效版本。
[0082]进一步地,本发明还包括Boot程序的升级方法,分为=Boot命令行下的升级,以及带内升级,即版本启动后,通过网管进行的远程升级。
[0083]图4为本发明Boot程序在Boot命令行下的升级方法流程示意图,如图4所示,实现流程如下:
[0084]步骤401:搭建Boot命令行下升级Boot程序的设备环境;
[0085]具体为:把ONU通过网线和串口线连接到PC机,在PC机侧打开简单文件传输协议(TFTP)客户端,准备好需要升级的Boot程序。
[0086]步骤402:上电启动0NU,并配置网络参数;
[0087]具体为:上电启动0NU,在Boot启动的过程中按回车键,进入Boot命令行,输入c命令,配置ONU侧和TFTP服务器侧的IP地址在同一网段。
[0088]步骤403:执行更新命令,即执行Boot程序升级命令,升级二进制合一 Boot程序;
[0089]步骤404:升级成功后,重启ONU设备,运行系统新版本。
[0090]图5为本发明Boot程序带内升级方法的流程示意图,如图5所示,实现流程如下:
[0091]步骤501:搭建版本启动后升级Boot程序的设备环境;
[0092]具体为:把ONU通过网线连接到PC机,在PC机侧打开WFTP客户端,准备好需要升级的Boot程序。
[0093]步骤502:0NU上电启动,配置网络参数;
[0094]具体为:0NU上电启动,版本启动后,通过PC机远程登录到主控板,即控制芯片,控制芯片远程配置ONU的IP地址和vlan参数。
[0095]步骤503:执行Boot程序升级命令,升级二进制合一 Boot程序;
[0096]步骤504:升级成功后,重启ONU设备,运行系统新版本。[0097]本发明还提供了一种内核程序的启动方法,如图6所示,实现步骤如下:
[0098]步骤601:系统上电,内核程序开始启动,获取控制芯片类型;
[0099]步骤602:判断控制芯片类型,如果是ARM9核控制芯片,则执行步骤603 ;如果是ARMll核控制芯片,则执行步骤604 ;
[0100]步骤603:初始化ARM9核控制芯片控制器的寄存器,初始化系统外围硬件,加载ARM9单板相关外设的驱动程序,之后执行步骤605 ;
[0101]所述外围硬件包括:内存,flash,网口,串口等设备。
[0102]步骤604:初始化ARMll核控制芯片控制器的寄存器,初始化系统外围硬件,加载ARMll单板相关外设的驱动程序;
[0103]所述外围硬件包括:内存,flash,网口,串口等设备。
[0104]步骤605:兼容ARMV6和ARMV4两种体系结构编码,使运行共存;
[0105]步骤606:检测文件系统类型,即:检测flash上的文件系统类型,初始化文件系统;
[0106]步骤607:判断flash上的用户态版本文件是否完整有效,主要是检查主程序的掩码,大小,校验和等,如果是完整有效版本,则执行步骤608 ;否则,跳转到步骤609 ;
[0107]步骤608:启动用户态版本;
[0108]步骤609:返回内核she 11命令行,提示无有效用户态版本。
[0109]进一步地,本发明还包括内核程序的升级方法,分为=Boot命令行下的升级,以及带内升级,即版本启动后,通过网管进行远程升级。
[0110]图7为本发明内核程序在Boot命令行下的升级方法流程示意图,如图7所示,实现流程如下:
[0111]步骤701:搭建Boot命令行下升级内核程序的设备环境;
[0112]具体为:把ONU通过网线和串口线连接到PC机,在PC机侧打开TFTP客户端,准备好需要升级的二进制合一内核程序。
[0113]步骤702:上电启动0NU,并配置网络参数;
[0114]具体为:上电启动0NU,在Boot启动的过程中按回车键,进入Boot命令行,输入c命令,配置ONU侧和TFTP服务器侧的IP地址在同一网段。
[0115]步骤703:执行版本升级命令,升级二进制合一内核程序,即升级二进制合一版本程序;
[0116]步骤704:升级成功后,重启ONU设备,运行系统新版本。
[0117]图8为本发明内核程序带内升级方法的流程示意图,如图8所示,实现流程如下:
[0118]步骤801:搭建版本启动后升级内核程序的设备环境;
[0119]具体为:把ONU通过网线连接到PC机,在PC机侧打开WFTP客户端,准备好需要升级的二进制合一内核程序。
[0120]步骤802:0NU上电启动,配置网络参数;
[0121]具体为:0NU上电启动,版本启动后,通过PC机远程登录到控制芯片,控制芯片远程配置ONU的IP地址和vlan参数。
[0122]步骤803:执行版本升级命令,升级二进制合一内核程序,即升级二进制合一版本程序;[0123]步骤804:升级成功后,重启ONU设备,运行系统新版本。
[0124]以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
【权利要求】
1.一种二进制合一 Boot程序及内核程序的设计方法,其特征在于,该方法包括: 对不同控制芯片的配置文件进行统一配置,根据硬件信息标识控制芯片,并修改不同控制芯片的代码流程,以完成Boot程序的二进制合一; 统一不同控制芯片的内核配置,并进行不同控制芯片的编译共存配置和运行共存配置,以实现内核程序的二进制合一。
2.根据权利要求1所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,所述对不同控制芯片的配置文件进行统一配置,为: 将不同控制芯片相冲突的宏分别定义为全局变量,在控制芯片初始化的过程中对所有宏对应的冲突项均进行设计,并对使用冲突项的位置依次进行修改。
3.根据权利要求1所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,所述硬件信息包括:通用输入/输出GPIO接口信息或处理器类型信息。
4.根据权利要求1所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,所述编译共存配置为:使用同一套配置,将一个或者多个控制芯片的板级支持包BSP代码整合到其中一个控制芯片的BSP中。
5.根据权利要求1至4任一项所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,该方法还包括二进制合一 Boot程序的启动方法,包括: 系统上电,Boot程序开始启动,获取控制芯片类型; 判断控制芯片类型,如果是ARM9核控制芯片,则初始化ARM9核控制芯片控制器的寄存器,初始化系统外围硬件;如果是ARMll核控制芯片,则初始化ARMl I核控制芯片控制器的寄存器,初始化系统外围硬件; 检测文件系统类型,并初始化文件系统; 判断flash上的版本文件是否完整有效,如果是完整有效版本,则启动系统主版本;否贝U,返回Boot命令行,提示无有效版本。
6.根据权利要求1至4任一项所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,该方法还包括:二进制合一 Boot程序的升级方法,分为:Boot命令行下的升级,以及带内升级,即版本启动后,通过网管进行的远程升级。
7.根据权利要求6所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,所述Boot程序在Boot命令行下的升级方法包括: 搭建Boot命令行下升级Boot程序的设备环境;上电启动0NU,并配置网络参数;执行更新命令,升级二进制合一 Boot程序;升级成功后,重启ONU设备,运行系统新版本。
8.根据权利要求6所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,所述Boot程序带内升级方法包括: 搭建版本启动后升级Boot程序的设备环境;0NU上电启动,配置网络参数;执行Boot程序升级命令,升级二进制合一 Boot程序;升级成功后,重启ONU设备,运行系统新版本。
9.根据权利要求1至4任一项所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,该方法还包括二进制合一内核程序的启动方法,包括: 系统上电,内核程序开始启动,获取控制芯片类型; 判断控制芯片类型,如果是ARM9核控制芯片,则初始化ARM9核控制芯片控制器的寄存器,初始化系统外围硬件,加载ARM9单板相关外设的驱动程序;如果是ARMll核控制芯片,则初始化ARMll核控制芯片控制器的寄存器,初始化系统外围硬件,加载ARMll单板相关外设的驱动程序; 兼容ARMV6和ARMV4两种体系结构编码,使运行共存; 检测文件系统类型,初始化文件系统; 判断flash上的用户态版本文件是否完整有效,如果是,则启动用户态版本;否则,返回内核shell命令行,提示无有效用户态版本。
10.根据权利要求1至4任一项所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,该方法还包括:二进制合一内核程序的升级方法,分为=Boot命令行下的升级,以及带内升级。
11.根据权利要求10所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,所述内核程序在Boot命令行下的升级方法包括: 搭建Boot命令行下升级内核程序的设备环境;上电启动0NU,并配置网络参数;执行版本升级命令,升级二进制合一内核程序;升级成功后,重启ONU设备,运行系统新版本。
12.根据权利要求10所述的二进制合一Boot程序及内核程序的设计方法,其特征在于,所述内核程序带内升级方法包括: 搭建版本启动后升级内核程序的设备环境;0NU上电启动,配置网络参数;执行版本升级命令,升级二进制合一内·核程序;升级成功后,重启ONU设备,运行系统新版本。
【文档编号】G06F9/445GK103823664SQ201210468412
【公开日】2014年5月28日 申请日期:2012年11月19日 优先权日:2012年11月19日
【发明者】张耀东, 徐严涛, 丁忠林 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1