一种基于Linux系统的驱动模块升级方法及装置的制造方法_2

文档序号:9524029阅读:来源:国知局
标驱动t旲块的升级版本以及依赖t旲块的载入。
[0034]具体实施中,在步骤S102中获取到目标驱动模块与依赖模块之间存在的依赖关系后,机顶盒就可以根据依赖关系,有顺序地卸载目标驱动模块的原始版本以及依赖模块。也就是说,目标驱动模块依赖于依赖模块,机顶盒则可以先卸载目标驱动模块的原始版本后,再卸载依赖模块。
[0035]当目标驱动模块存在多个依赖模块时,如果依赖模块与目标驱动模块之间的依赖关系是平行的,即都是处于目标驱动模块的依赖关系树中同一级节点的依赖模块,且依赖模块互相之间也并无依赖关系,则机顶盒可以根据任意顺序卸载所有依赖模块。
[0036]例如,如图3所示的依赖关系树,B、C、D都处于依赖关系树的同一级节点,则机顶盒卸载完A后,可以从B开始卸载,然后依次卸载C和D,也可以以C、D、B的顺序依次卸载,还可以以D、C、B的顺序依次卸载等等。
[0037]进一步地,当目标驱动模块的依赖模块也有与之存在依赖关系的模块时,机顶盒可以根据获取到的依赖关系树,按照依赖关系树中最高级节点向最低级节点卸载的顺序,依次卸载目标驱动模块的原始版本以及依赖模块。
[0038]例如,如图4所不的依赖关系树,A处于依赖关系树中最尚级节点,G处于依赖关系树中最低级节点,则机顶盒可以从A开始卸载,然后卸载B、C、D,再卸载E和F,最后卸载G。
[0039]步骤S104,根据所述依赖关系,载入所述目标驱动模块的升级版本以及所述依赖模块。
[0040]具体的,由于目标驱动模块依赖于依赖模块才能运行或启动,因此,在载入目标驱动模块的升级版本时,也要将目标驱动模块的依赖模块一起载入。
[0041]具体实施中,载入顺序可以根据步骤S102中获取到目标驱动模块与依赖模块之间存在的依赖关系,有顺序地载入目标驱动模块的原始版本以及依赖模块。也就是说,目标驱动模块依赖于依赖模块,机顶盒则可以先载入依赖模块后,再载入目标驱动模块的升级版本。
[0042]当目标驱动模块存在多个依赖模块时,如果依赖模块与目标驱动模块之间的依赖关系是平行的,即都是处于目标驱动模块的依赖关系树中同一级节点的依赖模块,且依赖模块互相之间也并无依赖关系,则机顶盒可以根据任意顺序载入所有依赖模块,最后载入目标驱动模块的升级版本。
[0043]例如,如图3所示的依赖关系树,B、C、D都处于依赖关系树的同一级节点,则机顶盒可以从B开始载入,然后依次载入C和D,也可以以C、D、B的顺序依次载入,还可以以D、C、B的顺序依次载入等,将B、C、D都载入完毕后,再载入A。
[0044]进一步地,当目标驱动模块的依赖模块也有与之存在依赖关系的模块时,机顶盒可以根据获取到的依赖关系树,按照依赖关系树中最低级节点向最高级节点载入的顺序,最后载入目标驱动模块的升级版本。
[0045]例如,如图4所示的依赖关系树,G处于依赖关系树中最低级节点,则机顶盒可以从G开始载入,然后载入E和F,再载入B、C、D,最后载入A。
[0046]在可选实施例中,当检测到所述目标驱动模块的升级版本载入错误时,根据所述依赖关系重新载入所述目标驱动模块的原始版本以及所述依赖模块。
[0047]具体的,当步骤S104出现载入错误时,目标驱动模块就无法正常运行。此时,机顶盒可以根据所述依赖关系重新载入目标驱动模块的原始版本以及依赖模块。需要说明的是,这里目标驱动模块的原始版本可以是机顶盒卸载但并未将其文件删除的情况下存储的,也可以是机顶盒预先存储的备份文件,这里不作具体限定。
[0048]具体实施中,其载入方法与步骤S104中的载入方法基本一致,即根据步骤S102中获取的依赖关系,按照先载入依赖模块后载入目标驱动模块的顺序,依次重新载入目标驱动模块的原始版本以及依赖模块。
[0049]在另一可选实施例中,步骤S101还包括:接收所述驱动模块升级指令对应的所述目标驱动模块的升级文件,所述升级文件中包含校验信息,对所述升级文件的校验信息进行校验,若校验通过,则将所述升级文件作为所述目标驱动模块的升级版本。
[0050]具体的,当用户输入驱动模块升级指令之后,机顶盒可以向与机顶盒有连接关系的服务器或者其他终端设备请求获取目标驱动模块的升级文件。目标驱动模块的升级文件可以设置为二进制文件,其中可以携带循环冗余校验码(CRC)、数字签名、内核版本、设备序列号和软件版本号等校验信息。当机顶盒接收到目标驱动模块的升级文件后,可以对升级文件进行CRC校验以及数字签名、内核版本、设备序列号和软件版本号的比对核准,若校验通过,则说明升级文件无误,即机顶盒接收到的升级文件与服务器或者其他终端设备发送的升级文件是一致的,则机顶盒可以将升级文件确定为目标驱动模块的升级版本。
[0051]例如,与机顶盒有连接关系的服务器或者其他终端设备,根据要传送的升级文件的k位二进制信息码,以预设的规则产生一个r位CRC码附在k位二进制信息码后边,构成一个新的具有共k+r位的二进制信息码的升级文件发送给机顶盒。机顶盒接收到升级文件后,可以根据二进制信息码和CRC码之间所遵循的预设规则进行检验,以确定传送中是否出错。
[0052]又例如,机顶盒将接收到的数字签名、内核版本、设备序列号和软件版本号与对应的预存在机顶盒中的数字签名、内核版本、设备序列号和软件版本号进行比对,若比对之后,对应的校验信息全部一致,则确定传送无误,否则,说明该升级文件不符合该机顶盒要求的升级文件校验属性。
[0053]在另一可选实施例中,步骤S101还包括:检测所述目标驱动模块的原始版本是否存在,若否,载入所述目标驱动模块的升级版本;若是,执行步骤S102。
[0054]具体的,在机顶盒获取到目标驱动模块对应的原始版本之前,可以先检测目标驱动模块的原始版本是否存在。
[0055]若检测后发现目标驱动模块的原始版本不存在,则可以直接将目标驱动模块的升级版本载入机顶盒中,而不需要再对目标驱动模块的原始版本进行卸载后再载入的步骤。进一步地,若目标驱动模块的升级版本中与目标驱动模块存在依赖关系的依赖模块,可以先将依赖模块载入,再将目标驱动模块的升级版本载入机顶盒中。
[0056]若检测到目标驱动模块的原始版本存在,则执行步骤S102。
[0057]在另一可选实施例中,步骤S102还包括:检测所述目标驱动模块的依赖模块是否存在,若否,卸载所述目标驱动模块的原始版本,载入所述目标驱动模块的升级版本,若是,执行步骤S103。
[0058]具体的,在机顶盒获取目标驱动模块的依赖模块以及目标驱动模块与依赖模块之间存在的依赖关系之前,可以先检测目标驱动模块的依赖模块是否存在。
[0059]若检测后发现目标驱动模块的依赖模块不存在,也即目标驱动模块并不用依赖其他模块进行启动或运行,则可以直接卸载目标驱动模块的原始版本,载入目标驱动模块的升级版本,而不需要再根据目标驱动模块与依赖模块的依赖关系去卸载目标驱动模块的原始版本或载入目标驱动模块的升级版本。
[0060]若检测到目标驱动模块的依赖模块存在,则执行步骤S103。
[0061]本发明实施例根据获取到的目标驱动模块的依赖模块以及目标驱动模块与依赖模块之间存在的依赖关系,有顺序地卸载目标驱动模块的原始版本以及依赖模块,并且根据依赖关系,有顺序地载入目标驱动模块的升级版本以及依赖模块,从而完成目标驱动模块的升级,可以优化linux系统中的驱动模块升级问题,进而提升系统的稳定性以及可靠性。进一步地,本发明还增加了接收升级文件后的CRC校验、数字签名、内核版本对比、设备序列号对比和软件版本号检查,优化了 modprobe命令升级驱动模块时只做简单的版本校验的校验机制,另外,还增加了升级出现错误时的还原机制,从而进一步提升了
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1