CN105703945B - 一种onu升级的方法 - Google Patents

一种onu升级的方法 Download PDF

Info

Publication number
CN105703945B
CN105703945B CN201610012269.0A CN201610012269A CN105703945B CN 105703945 B CN105703945 B CN 105703945B CN 201610012269 A CN201610012269 A CN 201610012269A CN 105703945 B CN105703945 B CN 105703945B
Authority
CN
China
Prior art keywords
data packet
upgrading
present node
node
upgrading data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201610012269.0A
Other languages
English (en)
Other versions
CN105703945A (zh
Inventor
肖云鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201610012269.0A priority Critical patent/CN105703945B/zh
Publication of CN105703945A publication Critical patent/CN105703945A/zh
Application granted granted Critical
Publication of CN105703945B publication Critical patent/CN105703945B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/082Configuration setting characterised by the conditions triggering a change of settings the condition being updates or upgrades of network functionality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/0001Selecting arrangements for multiplex systems using optical switching
    • H04Q11/0062Network aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种ONU升级的方法,包括以下步骤:OLT下发升级命令后,初始化全局标识变量;获取ONU当前使用的分区并擦除其备份分区,申请链表的头结点,使用全局指针变量记录链表首地址;创建第一线程,循环执行以节点为单位申请内存存储升级数据包,并进行链表维护,直至OLT下发结束命令后退出第一线程;创建第二线程,循环读取链表并对链表进行处理,处理完成后立即释放对应节点的内存,直至所有升级数据包处理结束。本发明以节点为单位申请内存存放升级数据包,并创建两个线程分别用于接收升级数据包和对升级数据包进行处理,实现了下载升级数据包的同时将升级数据写入flash,既节约了内存空间又缩短了升级时间。

Description

一种ONU升级的方法
技术领域
本发明涉及光通信技术领域,具体涉及一种ONU升级的方法。
背景技术
随着光通信技术的发展,FTTX(Fiber-To-The-X,光纤接入)终端是目前各大运营商采用的主流接入设备,作为电信级的产品,各大运营商对ONU(Optical Network Unit,光网络单元)的功能要求越来越高,除基本功能外,一般还需要涵盖IPTV(交互式网络电视)功能、三层路由功能、语音功能和WIFI功能等,这无疑会导致ONU软件升级文件大幅度增加,但同时各设备生产商在终端设备ONU上竞争异常激烈,降低ONU硬件和软件成本是运营商在ONU开发时需考虑的重要因素之一,具体例如减小内存容量,选用系统级芯片Soc替代CPU及操作系统、由VxWorks切换到开源免费的Linux等。其中,减少内存容量显然与扩展ONU功能导致的升级文件大幅度增加是矛盾的。
传统的ONU升级一般处理流程如下:首先,ONU的协议模块(OAM、OMCI或私有协议)收到OLT(Optical Line Terminal,光线路终端)下发的即将发送升级数据包的命令后,调用升级模块的初始化内存接口函数,分配一段专门用于存放升级数据包的连续的一整块完整内存。然后,ONU的协议模块持续收到OLT下发的升级数据包的分包,并依次复制到之前申请的内存空间。在接收完所有的升级数据包的分包后,OLT的OMCI(ONU Management andControl Interface,光网络单元管理控制接口)模块下发升级数据包传送结束的命令,此时ONU将收到的整个升级数据包的CRC(Cyclic Redundancy Check,循环冗余校验码)校验值算出后,与OLT下发的CRC值进行比较,相同则认为校验通过,否则,认为升级数据包在传输过程中出错。在CRC校验通过后,ONU对升级数据包的头部部分进行分析并获取版本和模块信息后,以flash的分区为单位进行擦写flash升级操作。
由此可见,传统的ONU升级方法需要连续的一整块完整内存用于存放升级数据包,而当ONU在有大量业务运行的情况下升级时,很有可能因为没有足够的内存而导致升级失败,另外,该升级方法要求在接收完所有升级分片后才能进行擦写flash操作,这样会导致ONU的升级时间过长。
发明内容
本发明所要解决的技术问题是解决传统的ONU升级方法需要连续的一整块内存用于存放升级数据而且在接收完所有升级分片后才能进行擦写flash操作,导致因为没有足够的内存而升级失败和ONU升级时间过长的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种ONU升级的方法,包括以下步骤:
S1.ONU检测到OLT下发的即将发送升级数据包命令后,初始化用于升级的全局标识变量;
S2.获取ONU当前使用的分区并擦除其备份分区,申请链表的头结点,并使用全局指针变量记录链表首地址,转S3和S4;
S3.创建第一线程,第一线程循环执行以节点为单位申请内存存储升级数据包,并进行链表维护,直至OLT下发结束命令后退出第一线程,转S5;
S4.创建第二线程,第二线程循环读取链表并对链表进行处理,包括分块累积计算整个升级数据包的CRC并将升级数据包中的数据写入flash,处理完成后释放对应节点的内存,直至所有升级数据包处理结束后退出第二线程,转S5;
S5.判断升级数据是否成功写入flash,如果成功,转S6;否则,转S8;
S6.判断累积计算的整个升级数据包的CRC与OLT下发的CRC值是否相同,如果相同,转S7;否则,转S8;
S7.升级成功,激活备份分区并重启ONU;
S8.升级失败。
在上述技术方案中,S3中第一线程的具体执行步骤包括:
S301.ONU接收完OLT下发的一个升级数据包后,判断该升级数据包的长度加上当前节点中的数据长度是否大于等于当前节点的容量,如果是,转S302;否则,转S307;
S302.判断当前节点中的定长数组是否被填满,如果是,转S304;否则,转S303;
S303.用升级数据包中的数据将当前节点的剩余容量填满,并记录当前节点中的数据长度,转S304;
S304.为当前节点的next节点申请内存,存储升级数据包中的剩余数据;
S305.对next节点地址进行赋值,进行链表维护,然后将当前节点的填充完成标识置1;
S306.将next节点切换为当前节点,将升级数据包中的剩余数据填充当前节点,并记录当前节点中的数据长度,转S308;
S307.将升级数据包中的数据依次填充到当前节点中的定长数组,并记录当前节点中的数据长度;
S308.判断OLT是否结束发送升级数据包,如果是,转S309;否则,转S301;
S309.将当前节点的填充完成标识置1,并将当前节点的next节点地址置null。
在上述技术方案中,S4中第二线程的具体执行步骤包括:
S401.获取当前节点中的升级数据,并判断当前节点的填充完成标志位是否为1,如果是,转S402;否则,转S401;
S402.分块累积计算整个升级数据包的CRC,并计算当前节点中数据部分的CRC;
S403.将当前节点中的数据部分写入flash;
S404.从flash中回读出写入的当前节点的数据,并重新计算CRC;
S405.判断重新计算的CRC与将数据写入flash之前计算的当前节点中数据部分的CRC是否相等,如果相等,转S406;否则,转S410;
S406.获取next节点的首地址并记录;
S407.释放当前节点的内存空间,并将next节点切换为当前节点;
S408.判断当前节点是否为空,如果为空,表明链表中的所有节点均已处理完毕,转S409;否则,转S401;
S409.将整个升级数据包写入flash成功;
S410.将升级数据包写入flash失败。
在上述技术方案中,所述ONU检测到所述OLT下发的即将发送升级数据包命令后,释放之前升级过程中由于异常情况发生而未释放掉的线程和链表。
在上述技术方案中,所述第一线程和所述第二线程并发执行。
本发明,当ONU接收到升级命令后,同时创建两个线程分别用于接收升级数据包和对升级数据包进行处理,其中第一线程循环执行以节点为单位申请内存存放升级数据包,并以链表的形式进行维护,这样无需一次性申请一大块连续内存;第二线程将填充完成的节点中的升级数据写入flash,写入成功后立即释放该节点的内存,实现了下载升级数据包的同时将升级数据写入flash,既节约了内存空间又缩短了升级时间。
附图说明
图1为本发明实施例提供的一种ONU升级的方法流程图;
图2为本发明实施例提供的第一线程的具体执行方法流程图;
图3为本发明实施例提供的第二线程的具体执行方法流程图。
具体实施方式
下面结合说明书附图和具体实施方式对本发明做出详细的说明。
本发明实施例提供了一种ONU升级的方法,如图1所示,所述方法包括以下步骤:
S1、ONU检测到OLT下发的即将发送升级数据包的命令后,释放上次升级过程中由于某种异常情况发生而未释放的线程和链表等资源,同时初始化用于升级的全局标识变量。
需要说明的是,异常情况一般为ONU在接收升级数据包时与OLT的通信中断,导致接收升级数据包的线程及处理升级数据包的线程一直在空转,此时未填充完成的链表节点也未被释放。若上次升级成功,则仅需初始化用于升级的全局标识变量。
S2、获取ONU当前使用的分区并擦除其备份分区,申请链表的头结点,并使用全局指针变量记录链表的首地址,转S3和S4。
其中,由于升级数据包大小的不确定性,为了保证升级的稳定性,必须以分区为单位将整个备份分区一次性擦除。
S3、创建第一线程,第一线程循环执行以节点为单位申请内存存放升级数据包,并进行链表维护,直至OLT下发结束命令时退出线程,转S5。
S4、创建第二线程,第二线程循环读取链表并对链表进行处理,包括分块累积计算整个升级数据包的CRC并将升级数据包中的数据写入flash,处理完成后立即释放对应节点的内存,直至所有升级数据包处理结束后退出第二线程,转S5。
S5、判断升级数据是否成功写入flash,如果成功,转S6;否则,转S8。
S6、判断累积计算的整个升级数据包的CRC与OLT下发的CRC值是否相同,如果相同,转S7;否则,转S8。
S7、升级成功,激活备份分区并重启ONU。
S8、升级失败。
如图2所示,S3中第一线程的具体执行步骤如下:
S301、ONU开始接收OLT下发的升级数据包,在接收完一个升级数据包后,判断该升级数据包的长度加上当前节点中的数据长度是否大于等于当前节点的容量,如果是,转S302;否则,转S307。
需要说明的是,升级数据包的长度根据上层协议的不同一般为几十到一千多字节不等,链表中的一个节点定义为一个结构体,包含的成员变量包括:存取升级数据的定长数组(256K、512K等)、记录节点数据长度的变量、标识该节点是否填充完成的变量以及用于保存next节点首地址的指针变量。
S302、判断当前节点中的定长数组是否被填满,如果是,转S304;否则,转S303。
S303、用升级数据包中的数据将当前节点的剩余容量填满,并记录当前节点中的数据长度,转S304。
S304、为当前节点的next节点申请内存,存储升级数据包中的剩余数据。
S305、对next节点地址进行赋值,进行链表维护,然后将当前节点的填充完成标识置1,表明当前节点中的定长数组已填充完成。
S306、将next节点切换为当前节点,将升级数据包中的剩余数据填充当前节点,并记录当前节点中的数据长度,转S308。
S307、将升级数据包中的数据依次填充到当前节点中的定长数组,并记录当前节点中的数据长度。
S308、判断OLT是否结束发送升级数据包,如果是,转S309;否则,转S301,即开始下一轮的接收OLT下发的升级数据包。
S309、将当前节点的填充完成标识置1,并将当前节点的next节点地址置null。
需要说明的是,当前节点填充完成后,当前节点中的数据长度可能小于定长数组的容量。OLT结束发送升级数据包后,当前节点为整个链表的最后一个节点,所以需要将当前节点的next节点地址置null进行标识。
如图3所示,S4中第二线程的具体执行步骤如下:
S401、获取当前节点中的升级数据,并判断当前节点的填充完成标志位是否为1,如果是,转S402;否则,转S401。
S402、分块累积计算整个升级数据包的CRC,并计算当前节点中数据部分的CRC。
需要说明的是,由于升级数据包在传输的过程中可能会有误码,所以需要对整个升级数据包进行CRC计算,并与OLT在发送升级数据包前的CRC计算值作比较,以判断ONU接收到的升级数据包是否有效。同时,由于数据在写入flash时可能会因为某种异常情况而发生错误,所以有必要对写入flash的数据进行CRC校验。
S403、将当前节点中的数据部分写入flash。
S404、从flash中回读出写入的当前节点的数据,并重新计算CRC。
S405、判断重新计算的CRC与将数据写入flash之前计算的当前节点中数据部分的CRC是否相等,如果相等,转S406;否则,转S410。
S406、获取next节点的首地址并记录。
S407、释放当前节点的内存空间,并将next节点切换为当前节点。
S408、判断当前节点是否为空,如果为空,表明链表中的所有节点均已处理完毕,转S409;否则,转S401。
S409、标识将整个升级数据包写入flash成功。
S410、标识将升级数据包写入flash失败。
本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。

Claims (4)

1.一种ONU升级的方法,其特征在于,包括以下步骤:
S1.ONU检测到OLT下发的即将发送升级数据包命令后,初始化用于升级的全局标识变量;
S2.获取ONU当前使用的分区并擦除其备份分区,申请链表的头结点,并使用全局指针变量记录链表首地址,转S3和S4;
S3.创建第一线程,第一线程循环执行以节点为单位申请内存存储升级数据包,并进行链表维护,直至OLT下发结束命令后退出第一线程,转S5;
S4.创建第二线程,第二线程循环读取链表并对链表进行处理,包括分块累积计算整个升级数据包的CRC并将升级数据包中的数据写入flash,处理完成后立即释放对应节点的内存,直至所有升级数据包处理结束后退出第二线程,转S5;
S5.判断升级数据是否成功写入flash,如果成功,转S6;否则,转S8;
S6.判断累积计算的整个升级数据包的CRC与OLT下发的CRC值是否相同,如果相同,转S7;否则,转S8;
S7.升级成功,激活备份分区并重启ONU;
S8.升级失败;
S4中第二线程的具体执行步骤包括:
S401.获取当前节点中的升级数据,并判断当前节点的填充完成标志位是否为1,如果是,转S402;否则,转S401;
S402.分块累积计算整个升级数据包的CRC,并计算当前节点中数据部分的CRC;
S403.将当前节点中的数据部分写入flash;
S404.从flash中回读出写入的当前节点的数据,并重新计算CRC;
S405.判断重新计算的CRC与将数据写入flash之前计算的当前节点中数据部分的CRC是否相等,如果相等,转S406;否则,转S410;
S406.获取next节点的首地址并记录;
S407.释放当前节点的内存空间,并将next节点切换为当前节点;
S408.判断当前节点是否为空,如果为空,表明链表中的所有节点均已处理完毕,转S409;否则,转S401;
S409.将整个升级数据包写入flash成功;
S410.将升级数据包写入flash失败。
2.如权利要求1所述的一种ONU升级的方法,其特征在于,S3中第一线程的具体执行步骤包括:
S301.ONU接收完OLT下发的一个升级数据包后,判断该升级数据包的长度加上当前节点中的数据长度是否大于等于当前节点的容量,如果是,转S302;否则,转S307;
S302.判断当前节点中的定长数组是否被填满,如果是,转S304;否则,转S303;
S303.用升级数据包中的数据将当前节点的剩余容量填满,并记录当前节点中的数据长度,转S304;
S304.为当前节点的next节点申请内存,存储升级数据包中的剩余数据;
S305.对next节点地址进行赋值,进行链表维护,然后将当前节点的填充完成标识置1;
S306.将next节点切换为当前节点,将升级数据包中的剩余数据填充当前节点,并记录当前节点中的数据长度,转S308;
S307.将升级数据包中的数据依次填充到当前节点中的定长数组,并记录当前节点中的数据长度;
S308.判断OLT是否结束发送升级数据包,如果是,转S309;否则,转S301;
S309.将当前节点的填充完成标识置1,并将当前节点的next节点地址置null。
3.如权利要求1所述的一种ONU升级的方法,其特征在于,所述ONU检测到所述OLT下发的即将发送升级数据包命令后,释放之前升级过程中由于异常情况发生而未释放掉的线程和链表。
4.如权利要求1所述的一种ONU升级的方法,其特征在于,所述第一线程和所述第二线程并发执行。
CN201610012269.0A 2016-01-08 2016-01-08 一种onu升级的方法 Active CN105703945B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610012269.0A CN105703945B (zh) 2016-01-08 2016-01-08 一种onu升级的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610012269.0A CN105703945B (zh) 2016-01-08 2016-01-08 一种onu升级的方法

Publications (2)

Publication Number Publication Date
CN105703945A CN105703945A (zh) 2016-06-22
CN105703945B true CN105703945B (zh) 2019-04-16

Family

ID=56226997

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610012269.0A Active CN105703945B (zh) 2016-01-08 2016-01-08 一种onu升级的方法

Country Status (1)

Country Link
CN (1) CN105703945B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107306364A (zh) * 2017-02-24 2017-10-31 深圳市双翼科技股份有限公司 光线路终端远程管理光网络单元的方法及装置
CN109597639B (zh) * 2018-12-04 2022-07-05 深圳市创维软件有限公司 一种软件升级方法、装置、设备及介质
CN111176693B (zh) * 2019-12-31 2023-02-17 Vidaa(荷兰)国际控股有限公司 一种数字电视系统的升级方法
CN113467698A (zh) * 2020-03-30 2021-10-01 珠海全志科技股份有限公司 基于文件系统的写方法、装置、计算机设备和存储介质
CN113626060B (zh) * 2021-08-06 2023-08-01 天津津航计算技术研究所 vxworks系统下基于分离存储的在线升级方法
CN115314778A (zh) * 2022-07-11 2022-11-08 烽火通信科技股份有限公司 一种批量onu升级方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101930375A (zh) * 2010-08-26 2010-12-29 深圳市共进电子有限公司 单用户光网络单元中内存空间自适应的程序数据升级方法
CN103077057A (zh) * 2012-12-31 2013-05-01 浙江创佳数字技术有限公司 一种基于Android智能机顶盒的Loader方法
CN103384208A (zh) * 2013-05-23 2013-11-06 上海斐讯数据通信技术有限公司 Epon系统中的onu设备的升级系统及升级方法
CN103517141A (zh) * 2013-10-11 2014-01-15 成都三零凯天通信实业有限公司 基于ip机顶盒分段式数据升级方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101930375A (zh) * 2010-08-26 2010-12-29 深圳市共进电子有限公司 单用户光网络单元中内存空间自适应的程序数据升级方法
CN103077057A (zh) * 2012-12-31 2013-05-01 浙江创佳数字技术有限公司 一种基于Android智能机顶盒的Loader方法
CN103384208A (zh) * 2013-05-23 2013-11-06 上海斐讯数据通信技术有限公司 Epon系统中的onu设备的升级系统及升级方法
CN103517141A (zh) * 2013-10-11 2014-01-15 成都三零凯天通信实业有限公司 基于ip机顶盒分段式数据升级方法

Also Published As

Publication number Publication date
CN105703945A (zh) 2016-06-22

Similar Documents

Publication Publication Date Title
CN105703945B (zh) 一种onu升级的方法
US9110843B2 (en) Rack and method thereof for simultaneously updating basic input output systems
CN109460245B (zh) 一种嵌入式系统的远程升级方法
CN107179909A (zh) 软件升级方法、装置及计算机可读存储介质
CN103186404B (zh) 系统固件更新方法与使用该方法的服务器系统
CN109032632A (zh) 一种fota升级方法、无线通信终端及存储介质
CN110442473B (zh) 一种非易失性数据存储方法、装置、电子设备及介质
US20200156422A1 (en) Upgrading method and apparatus for tire pressure monitoring module and tire pressure sensor
US9336022B2 (en) Universal serial bus (USB) device and a USB system including the same
US10274919B2 (en) Method, device and computer program product for programming a plurality of control units
CN109358882A (zh) 一种电视终端进行固件升级的方法及装置
CN110990034A (zh) Ecu升级方法、系统、电子设备及存储介质
CN108848418B (zh) 机顶盒集中升级方法
CN103677902A (zh) 分布式olt系统中保障线卡软件升级安全性与成功性的方法
WO2011088701A1 (zh) 一种跨平台版本在线升级的方法及装置
CN102195798A (zh) 一种升级光网络单元的方法和系统
CN108920168B (zh) 支持多个同类ECU同时升级且具防程序不匹配功能的Bootloader方法
CN109766140A (zh) 一种机顶盒启动异常的定位方法及装置
CN102081526B (zh) 基本输入/输出系统架构
US8595430B2 (en) Managing a virtual tape library domain and providing ownership of scratch erased volumes to VTL nodes
CN101667133B (zh) 固件更新方法和使用该方法更新固件的芯片
US20010044675A1 (en) System for controlling vending machine
CN116991328B (zh) 磁盘阵列的卷格式化控制方法、装置、系统、设备及介质
CN109597639B (zh) 一种软件升级方法、装置、设备及介质
WO2015154578A1 (zh) 单板的boot程序远程升级方法、装置及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant