CN107315607B - 一种驱动自适应加载系统 - Google Patents

一种驱动自适应加载系统 Download PDF

Info

Publication number
CN107315607B
CN107315607B CN201710476306.8A CN201710476306A CN107315607B CN 107315607 B CN107315607 B CN 107315607B CN 201710476306 A CN201710476306 A CN 201710476306A CN 107315607 B CN107315607 B CN 107315607B
Authority
CN
China
Prior art keywords
drive
memory
driver
mcu
mcu mainboard
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
CN201710476306.8A
Other languages
English (en)
Other versions
CN107315607A (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.)
Nanjing Yihui Information Technology Co ltd
Original Assignee
Nanjing Yihui Information Technology 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 Nanjing Yihui Information Technology Co ltd filed Critical Nanjing Yihui Information Technology Co ltd
Priority to CN201710476306.8A priority Critical patent/CN107315607B/zh
Publication of CN107315607A publication Critical patent/CN107315607A/zh
Application granted granted Critical
Publication of CN107315607B publication Critical patent/CN107315607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4081Live connection to bus, e.g. hot-plugging

Abstract

本发明提出了一种驱动自适应加载系统,包括:MCU主板、多个子模块、设备仲裁器、译码器,且每个子模块都包括存储器和功能器件;所述MCU主板通过数据线与每个子模块内的存储器和功能器件连接,所述MCU主板还分别连接设备仲裁器、译码器,所述设备仲裁器通过预设总线分别连接每个子模块,所述译码器通过本地总线分别连接每个子模块的存储器和功能器件,其中存储器内部至少存放当前器件的驱动程序、设备识别码、版本码、设备类型;其中,MCU主板内部设有可支持热插拔的总线系统。本发明支持热插拔,用户增加或者更换接口设备不需要重启,另外让设备驱动脱离了总线的绑定,用户开发标准的设备流程,总线信息作为参数来动态的控制设备驱动的读写。

Description

一种驱动自适应加载系统
技术领域
本发明涉及驱动技术领域,特别涉及一种驱动自适应加载系统。
背景技术
目前,公知的驱动加载有以下两种:1、静态加载,即把驱动程序直接编译进内核。2、动态加载,即把驱动和内核独立开来,在需要的时候手动加载驱动到内核中去。但是,目前这两种方法都有各自的缺陷和不足。
静态加载的方法有以下几点不足:1)调试不便,每次进行驱动修改都需要重新编译和下载内核,效率低下。2)若静态加载的驱动较多,会导致内核容量很大,浪费存储空间。3)仅支持已知器件,对未知的新型器件不支持,老设备无法对新开发的器件做到支持。
动态加载虽然克服了静态加载的以上几点的不足,但本身也有缺陷,具体有如下几点: 1)对于批量化生产,增加了操作步骤,易增加出错率,需要工程师现场维护。2)若器件型号较多,驱动版本与操作系统版本维护困难。3)嵌入式领域接口子卡和工作总线绑定紧密,外设驱动都是和固定总线编码绑定,无法跨厂家编写。4)仅对现有设备提供支持,对将来发展的新器件不能形成支持。驱动的获取和上传不便利,嵌入式领域很多时候没有多余的通讯接口,即使编写了对应得外设驱动,也很难向系统上传。5)现在的嵌入式单板普遍存在设备不支持热插拔,即跟换对应的外设类型后,需要重启嵌入式单板,那么对一些不能重启的关键设备来说,是没有办法进行单板接口的扩展和更换。
发明内容
本发明的目的旨在至少解决所述技术缺陷之一。
为此,本发明的目的在于提出一种驱动自适应加载系统,不仅减少了驱动手动加载的步骤,而且能够支持新型器件驱动的动态加载,且支持热插拔和驱动自适应,解决设备驱动和总线强相关的问题。
为了实现上述目的,本发明提供一种驱动自适应加载系统,包括:MCU主板、多个子模块、设备仲裁器、译码器,且每个子模块都包括存储器和功能器件;
所述MCU主板通过数据线与每个子模块内的存储器和功能器件连接,所述MCU主板还分别连接设备仲裁器、译码器,所述设备仲裁器通过预设总线分别连接每个子模块,所述译码器通过本地总线分别连接每个子模块的存储器和功能器件,其中存储器内部至少存放当前器件的驱动程序、设备识别码、版本码、设备类型;其中,MCU主板内部设有可支持热插拔的总线系统;
当子模块插入预设总线的时候,设备仲裁器以中断方式通知MCU主板,MCU主板通过设备仲裁器读取到新插入子模块的地址然后运算得到该子模块的存储器地址,然后MCU主板通过译码器,选中新插入子模块的存储器地址,按照该存储器地址MCU主板通过数据线读取存储器的内容,接着判断所读取的内容里是否存在驱动,如果不存在,则继续读取后续存储器的驱动内容,直到读取到驱动为止,MCU主板读取驱动完成后,使用读取驱动的总线作为参数加载新插入子模块携带的驱动,完成设备的启动。
进一步的,所述MCU主板支持热插的步骤如下:
步骤S11,MCU主板在内核态下有一专门检测总线管脚变化的线程;
步骤S12,当检测到变化后,MCU主板读取总线设备类型;
步骤S13,读取到设备类型后,在MCU主板的内核态调用系统对应的驱动程序,在系统上创建当前的设备;
步骤S14,完成设备驱动,内核热插拔线程会发送模块插入信号给关注的应用进程;
步骤S15,应用进程收到子模块插入信号后,即可使用新插入的子模块,从而完成设备的热插接入。
进一步的,所述MCU主板支持热拔的步骤如下:
步骤S21,MCU主板使用驱动的应用程序,上电的时候会注册一个该驱动的插拔事件;
步骤S22,当子模块被拔掉的时候,内核热插拔线程通过检测总线管脚会感知到;
步骤S23,当感知到模块被拔走后,内核热插拔线程会发送模块拔出事件信号给注册的应用线程;
步骤S24,应用线程收到模块拔走信号,然后关闭对子模块的使用,从而完成设备的热拔隔离。
进一步的,所述MCU主板是通过子模块的存储使能端与功能使能端来决定当前MCU主板是和哪个器件进行通信的;
MCU主板通过存储使能端能够行使设备功能码的读取和驱动的读取功能,当设备识别完成,MCU主板能够通过功能使能端与功能器件进行通信,并在驱动程序的工作下完成器件的功能。
进一步的,所述MCU主板读取子模块的存储器内存储的驱动内容的步骤如下:
步骤S31,MCU主板读取应用脚本编号和应用脚本长度;
步骤S32,然后从存储器中读取应用执行脚本内容;
步骤S33,将应用脚本编号和系统码结合保存为应用脚本文件;
步骤S34,然后根据存储字节头信息获取应用程序编号和应用程序长度;
步骤S35,使用应用程序编号和系统码结合保存为应用程序文件;
步骤S36,然后根据生成的应用程序名称,修改应用执行脚本里面的执行程序名称;
步骤S37,然后执行应用执行脚本,完成应用程序启动;
步骤S38,应用程序启动,实现自动驱动加载。
进一步的,所述存储器内至少存储应用程序、应用脚本、驱动内容、保留内容、应用程序编号、应用程序长度、应用脚本编号、应用脚本长度、存储器存储驱动的内容长度、驱动版本码、子设备类型、设备类型。
进一步的,所述MCU主板读取子模块存储器内存储的驱动内容时,MCU主板还包括掉电自动恢复程序,掉电自动恢复程序包括以下步骤:
判断首次获取驱动是否成功,如果不成功,则不登记驱动完整码,如果成功则在操作系统登记完整码;
上电发现驱动不需要更新后,检查登记码是否完整,如果完整则继续工作,如果不完整则启动驱动重新下载流程,如果获取驱动成功则在操作系统登记完整码,如果获取驱动不成功则不登记驱动完整码。
进一步的,所述存储器内还存储系统安全密钥,MCU主板在读取驱动前会读取系统安全密钥,然后由MCU主板解析该系统安全密钥,如果发现系统安全密钥不合法,则不继续下载驱动及其后续程序,如果发现系统安全密钥合法,则继续下载驱动及其后续程序。
本发明解决了驱动动态加载问题、驱动自适应问题、设备和总线绑定问题。工作时,当外部接口设备通过本地总线和MCU主板进行连接后MCU主板通过扫描或者等待中断的方法获取通知,MCU主板首先会发送命令获取外部器件存储器中的功能码,如果对应功能码的驱动已存在于系统中,选择当前读取功能码的总线信息作为参数,运行该功能码的驱动来驱动该器件,若没有匹配到对应的驱动,则从该器件的存储器中读取驱动程序,并加载到系统内核中,从而驱动该器件。通过这种驱动加载方案可省去动态加载中的手动加载这一步骤,并且提供了对新型未知设备驱动的动态加载支持,而且支持热插拔,用户增加或者更换接口设备不需要重启,另外让设备驱动脱离了总线的绑定,用户开发标准的设备流程,总线信息作为参数来动态的控制设备驱动的读写。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明的结构连接框图;
图2为本发明的驱动自适应加载流程图;
图3为本发明的MCU主板支持热插的工作流程图;
图4为本发明的MCU主板支持热拔的工作流程图;
图5为本发明的MCU主板读取子模块的存储器内存储的驱动内容工作流程图;
图6为本发明的存储器内存储的数据示意图;
图7为本发明的掉电安全保护工作流程图;
图8为本发明的驱动安全认证实现工作流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
本发明提供一种驱动自适应加载系统,参考附图1-8所示,包括:MCU主板1、多个子模块4、设备仲裁器2、译码器3,且每个子模块4都包括存储器41和功能器件42。
如图1所示,MCU主板1通过数据线与每个子模块4内的存储器41和功能器件42连接,MCU主板1还分别连接设备仲裁器2、译码器3,设备仲裁器1通过预设总线分别连接每个子模块4,译码器3通过本地总线分别连接每个子模块4的存储器41和功能器件42,其中存储器41内部至少存放当前器件的驱动程序、设备识别码、版本码、设备类型;其中, MCU主板内部设有可支持热插拔的总线系统。
如图2所示为驱动自适应加载流程图,当子模块4插入预设总线的时候,设备仲裁器2以中断方式通知MCU主板1,MCU主板1通过设备仲裁器2读取到新插入子模块的地址然后运算得到该子模块4的存储器地址,然后MCU主板1通过译码器3,选中新插入子模块的存储器地址,按照该存储器地址MCU主板1通过数据线读取存储器的内容,接着判断所读取的内容里是否存在驱动,如果不存在,则继续读取后续存储器的驱动内容,直到读取到驱动为止,MCU主板1读取驱动完成后,使用读取驱动的总线作为参数加载新插入子模块携带的驱动,然后判断系统存在的版本是否是最新的,如果是则监测是否有相关驱动程序运行,如果没有则加载驱动程序,如果有则监测运行相关驱动版本是否是最新的,如果不是则停止老的驱动程序,启动新的驱动程序,最后完成设备的启动,如图2所示。
MCU主板不绑定总线的实现驱动加载的具体方法如下:
在一般的嵌入式大型操作系统里面,动态驱动加载编写程序分成2个部分,一:总线驱动的安装,二:总线上的设备创建,这两部分代码都是直接使用编码直接耦合实现的。
本发明的不绑定总线的实现驱动加载是基于SylixOS的设备驱动模型来实现的,在 SylixOS操作系统中,动态驱动加载编写程序分成4个部分:一:总线驱动的编写,二:总线设备的创建,三:总线上的设备驱动编写,四:总线上的设备创建。
比如spi抽象为总线设备为“/bus/spi/0”,总线上的挂载的设备,它的驱动里面有参数可以填写是基于那个总线设备(比如“/bus/spi/0”,表示当前设备是挂载在spi0总线上的)。
在该方案里面当前总线作为读取驱动的总线,总线设备名称是确定的。在编写子模块的驱动时候,总线名称可以以变量形式传入进去,在执行内核模块加载的时候带入总线名称即可实现总线设备和指定总线解除绑定。
在以往的系统中编写驱动程序总线和设备是绑定编写(原因既有别的操作系统总线没有抽象成设备,动态加载的时候无法拿到参数传入,也有使用习惯的问题,习惯设备与总线一起编写),所以编写出来的设备驱动只能使用在指定的MCU主板上面。
其中,SylixOS是一款由中国人自主设计开发的大型嵌入式硬实时操作系统(RTOS),支持SMP多核,具有丰富的文件系统、网络系统以及众多设备驱动支持,并提供完善的集成开发环境。
MCU主板支持热插拔也是基于SylixOS实现的,因为在现有的其他嵌入式系统中,内核中没有一个内核线程用于检测工业总线的接口的变化,而驱动部分代码必须运行在内核线程下面。
如图3所示,MCU主板支持热插的步骤如下:
步骤S11,MCU主板在内核态下有一专门检测总线管脚变化的线程;
步骤S12,当检测到变化后,MCU主板读取总线设备类型;
步骤S13,读取到设备类型后,在MCU主板的内核态调用系统对应的驱动程序,在系统上创建当前的设备;
步骤S14,完成设备驱动,内核热插拔线程会发送模块插入信号给关注的应用进程;
步骤S15,应用进程收到子模块插入信号后,即可使用新插入的子模块,从而完成设备的热插接入。
如图4所示,MCU主板支持热拔的步骤如下:
步骤S21,MCU主板使用驱动的应用程序,上电的时候会注册一个该驱动的插拔事件;
步骤S22,当子模块被拔掉的时候,内核热插拔线程通过检测总线管脚会感知到;
步骤S23,当感知到模块被拔走后,内核热插拔线程会发送模块拔出事件信号给注册的应用线程;
步骤S24,应用线程收到模块拔走信号,然后关闭对子模块的使用,从而完成设备的热拔隔离。
传统的总线是只和功能器件通信,所有驱动的上传都是通过另外的通信口进行上传,在该方案中,驱动存储器件和功能器件在同一个子模块板子上,而本发明中MCU主板通过驱动通信接口的复用实现驱动上传,实现总线复用。
具体为,MCU主板是通过子模块的存储使能端与功能使能端来决定当前MCU主板是和哪个器件进行通信的。
MCU主板通过存储使能端能够行使设备功能码的读取和驱动的读取功能,当设备识别完成,MCU主板能够通过功能使能端与功能器件进行通信,并在驱动程序的工作下完成器件的功能。
如图5所示,MCU主板读取子模块的存储器内存储的驱动内容的步骤如下:
步骤S31,MCU主板读取应用脚本编号和应用脚本长度;
步骤S32,然后从存储器中读取应用执行脚本内容;
步骤S33,将应用脚本编号和系统码结合保存为应用脚本文件;
步骤S34,然后根据存储字节头信息获取应用程序编号和应用程序长度;
步骤S35,使用应用程序编号和系统码结合保存为应用程序文件;
步骤S36,然后根据生成的应用程序名称,修改应用执行脚本里面的执行程序名称;
步骤S37,然后执行应用执行脚本,完成应用程序启动;
步骤S38,应用程序启动,实现自动驱动加载。
如图6所示,存储器内至少存储应用程序、应用脚本、驱动内容、保留内容、应用程序编号、应用程序长度、应用脚本编号、应用脚本长度、存储器存储驱动的内容长度、驱动版本码、子设备类型、设备类型。
在从子模块上获取驱动的时候,需要一个时间过程,如果在这个过程中出现掉电异常,在常规嵌入式系统中存储驱动文件过程中,会导致损坏文件系统,导致系统崩溃。而本发明的驱动自适应加载系统在获取驱动,存储驱动的过程中,如果出现掉电情况,只会丢失或者损坏当前的驱动文件,不会损坏其他文件或者文件系统,从而保证系统的安全性。
具体为,如图7所示,MCU主板读取子模块存储器内存储的驱动内容时,MCU主板还包括掉电自动恢复程序,掉电自动恢复程序包括以下步骤:
判断首次获取驱动是否成功,如果不成功,则不登记驱动完整码,如果成功则在操作系统登记完整码;
上电发现驱动不需要更新后,检查登记码是否完整,如果完整则继续工作,如果不完整则启动驱动重新下载流程,如果获取驱动成功则在操作系统登记完整码,如果获取驱动不成功则不登记驱动完整码。
如图8所示,存储器内还存储系统安全密钥,MCU主板在读取驱动前会读取系统安全密钥,然后由MCU主板解析该系统安全密钥,如果发现系统安全密钥不合法,则不继续下载驱动及其后续程序,如果发现系统安全密钥合法,则继续下载驱动及其后续程序,从而保证系统程序的安全性,防止终端被非法注入非法程序,对系统的安全性造成影响。
本发明解决了驱动动态加载问题、驱动自适应问题、设备和总线绑定问题。工作时,当外部接口设备通过本地总线和MCU主板进行连接后MCU主板通过扫描或者等待中断的方法获取通知,MCU主板首先会发送命令获取外部器件存储器中的功能码,如果对应功能码的驱动已存在于系统中,选择当前读取功能码的总线信息作为参数,运行该功能码的驱动来驱动该器件,若没有匹配到对应的驱动,则从该器件的存储器中读取驱动程序,并加载到系统内核中,从而驱动该器件。通过这种驱动加载方案可省去动态加载中的手动加载这一步骤,并且提供了对新型未知设备驱动的动态加载支持,而且支持热插拔,用户增加或者更换接口设备不需要重启,另外让设备驱动脱离了总线的绑定,用户开发标准的设备流程,总线信息作为参数来动态的控制设备驱动的读写。
本发明的有益效果如下:
1、自动获取新器件的驱动,简化MCU主板和接口设备的版本维护关系。
2、MCU主板可以支持未来开发的接口设备,提高MCU主板的利用率,降低因接口不支持导致的MCU主板更新换代的成本。
3、驱动自动获取支持热插拔,更换、升级、增加接口设备,不需要重启系统,增加系统的可靠性。
4、剥离总线和设备的关系,使驱动复用成为可能,且能增加各个厂家的协作。
5、省去手动加载方式,降低因人为错误导致的系统异常。
6、器件能自动适配自己的驱动,省去了为了升级驱动而特地留的调试通信接口,节约器件成本。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。本发明的范围由所附权利要求极其等同限定。

Claims (8)

1.一种驱动自适应加载系统,其特征在于,包括:MCU主板、多个子模块、设备仲裁器、译码器,且每个子模块都包括存储器和功能器件;
所述MCU主板通过数据线与每个子模块内的存储器和功能器件连接,所述MCU主板还分别连接设备仲裁器、译码器,所述设备仲裁器通过预设总线分别连接每个子模块,所述译码器通过本地总线分别连接每个子模块的存储器和功能器件,其中存储器内部至少存放当前器件的驱动程序、设备识别码、版本码、设备类型;其中,MCU主板内部设有可支持热插拔的总线系统;
当子模块插入预设总线的时候,设备仲裁器以中断方式通知MCU主板,MCU主板通过设备仲裁器读取到新插入子模块的地址然后运算得到该子模块的存储器地址,然后MCU主板通过译码器,选中新插入子模块的存储器地址,按照该存储器地址MCU主板通过数据线读取存储器的内容,接着判断所读取的内容里是否存在驱动,如果不存在,则继续读取后续存储器的驱动内容,直到读取到驱动为止,MCU主板读取驱动完成后,使用读取驱动的总线作为参数加载新插入子模块携带的驱动,完成设备的启动。
2.如权利要求1所述的驱动自适应加载系统,其特征在于:所述MCU主板支持热插的步骤如下:
步骤S11,MCU主板在内核态下有一专门检测总线管脚变化的线程;
步骤S12,当检测到变化后,MCU主板读取总线设备类型;
步骤S13,读取到设备类型后,在MCU主板的内核态调用系统对应的驱动程序,在系统上创建当前的设备;
步骤S14,完成设备驱动,内核热插拔线程会发送模块插入信号给关注的应用进程;
步骤S15,应用进程收到子模块插入信号后,即可使用新插入的子模块,从而完成设备的热插接入。
3.如权利要求1所述的驱动自适应加载系统,其特征在于:所述MCU主板支持热拔的步骤如下:
步骤S21,MCU主板使用驱动的应用程序,上电的时候会注册一个该驱动的插拔事件;
步骤S22,当子模块被拔掉的时候,内核热插拔线程通过检测总线管脚会感知到;
步骤S23,当感知到模块被拔走后,内核热插拔线程会发送模块拔出事件信号给注册的应用线程;
步骤S24,应用线程收到模块拔走信号,然后关闭对子模块的使用,从而完成设备的热拔隔离。
4.如权利要求1所述的驱动自适应加载系统,其特征在于:所述MCU主板是通过子模块的存储使能端与功能使能端来决定当前MCU主板是和哪个器件进行通信的;
MCU主板通过存储使能端能够行使设备功能码的读取和驱动的读取功能,当设备识别完成,MCU主板能够通过功能使能端与功能器件进行通信,并在驱动程序的工作下完成器件的功能。
5.如权利要求1所述的驱动自适应加载系统,其特征在于:所述MCU主板读取子模块的存储器内存储的驱动内容的步骤如下:
步骤S31,MCU主板读取应用脚本编号和应用脚本长度;
步骤S32,然后从存储器中读取应用执行脚本内容;
步骤S33,将应用脚本编号和系统码结合保存为应用脚本文件;
步骤S34,然后根据存储字节头信息获取应用程序编号和应用程序长度;
步骤S35,使用应用程序编号和系统码结合保存为应用程序文件;
步骤S36,然后根据生成的应用程序名称,修改应用执行脚本里面的执行程序名称;
步骤S37,然后执行应用执行脚本,完成应用程序启动;
步骤S38,应用程序启动,实现自动驱动加载。
6.如权利要求1所述的驱动自适应加载系统,其特征在于:所述存储器内至少存储应用程序、应用脚本、驱动内容、保留内容、应用程序编号、应用程序长度、应用脚本编号、应用脚本长度、存储器存储驱动的内容长度、驱动版本码、子设备类型、设备类型。
7.如权利要求1所述的驱动自适应加载系统,其特征在于:所述MCU主板读取子模块存储器内存储的驱动内容时,MCU主板还包括掉电自动恢复程序,掉电自动恢复程序包括以下步骤:
判断首次获取驱动是否成功,如果不成功,则不登记驱动完整码,如果成功则在操作系统登记完整码;
上电发现驱动不需要更新后,检查登记码是否完整,如果完整则继续工作,如果不完整则启动驱动重新下载流程,如果获取驱动成功则在操作系统登记完整码,如果获取驱动不成功则不登记驱动完整码。
8.如权利要求1所述的驱动自适应加载系统,其特征在于:所述存储器内还存储系统安全密钥,MCU主板在读取驱动前会读取系统安全密钥,然后由MCU主板解析该系统安全密钥,如果发现系统安全密钥不合法,则不继续下载驱动及其后续程序,如果发现系统安全密钥合法,则继续下载驱动及其后续程序。
CN201710476306.8A 2017-06-21 2017-06-21 一种驱动自适应加载系统 Active CN107315607B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710476306.8A CN107315607B (zh) 2017-06-21 2017-06-21 一种驱动自适应加载系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710476306.8A CN107315607B (zh) 2017-06-21 2017-06-21 一种驱动自适应加载系统

Publications (2)

Publication Number Publication Date
CN107315607A CN107315607A (zh) 2017-11-03
CN107315607B true CN107315607B (zh) 2020-05-05

Family

ID=60183372

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710476306.8A Active CN107315607B (zh) 2017-06-21 2017-06-21 一种驱动自适应加载系统

Country Status (1)

Country Link
CN (1) CN107315607B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10572246B2 (en) * 2018-04-27 2020-02-25 Ati Technologies Ulc Live update of a kernel device module
CN110018525B (zh) * 2019-04-18 2020-06-30 长春精仪光电技术有限公司 一种电子识别式滤光片模块装置及其应用方法
CN115981696B (zh) * 2023-03-17 2023-06-06 杭州康晟健康管理咨询有限公司 一种生理传感器通信驱动更新方法、医疗芯片和系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530124A (zh) * 2013-10-18 2014-01-22 中安消技术有限公司 一种在Linux系统下共享热插拔设备的方法与装置
CN103744687A (zh) * 2013-11-15 2014-04-23 曙光信息产业(北京)有限公司 输入/输出端口的访问方法和装置
CN105373393A (zh) * 2014-08-20 2016-03-02 西安慧泽知识产权运营管理有限公司 一种在非事件驱动方式的os中实现对设备的热插拔的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530124A (zh) * 2013-10-18 2014-01-22 中安消技术有限公司 一种在Linux系统下共享热插拔设备的方法与装置
CN103744687A (zh) * 2013-11-15 2014-04-23 曙光信息产业(北京)有限公司 输入/输出端口的访问方法和装置
CN105373393A (zh) * 2014-08-20 2016-03-02 西安慧泽知识产权运营管理有限公司 一种在非事件驱动方式的os中实现对设备的热插拔的方法

Also Published As

Publication number Publication date
CN107315607A (zh) 2017-11-03

Similar Documents

Publication Publication Date Title
CN105354070B (zh) 一种通过i2c升级设备固件的方法
US6463550B1 (en) Computer system implementing fault detection and isolation using unique identification codes stored in non-volatile memory
CN101807152B (zh) 自我验证选择只读存储器的基本输出入系统及其验证方法
CN107315607B (zh) 一种驱动自适应加载系统
CN102945173A (zh) 用户程序在线升级系统和升级方法
CN101295255B (zh) 固件更新系统及方法
CN105677398A (zh) 一种通用的嵌入式计算机软件在线升级方法
CN112947978A (zh) 基于芯片usbhid升级固件的方法、终端设备及计算机可读存储介质
CN105760191A (zh) 嵌入式系统设备程序烧写量产方法
CN108345464A (zh) 一种安卓系统的启动方法及安卓车机
CN114816491A (zh) 用于多系统移动终端的系统升级方法、装置及终端
KR100605031B1 (ko) Usb 메모리 장치를 이용한 임베디드 시스템의 장애복구 및 업그레이드 방법
US9058264B2 (en) Method for repairing communication abnormality between data card and host and data card
CN103136010A (zh) 韧体更新方法及可供该方法使用的韧体更新装置
CN106444730B (zh) 一种防软件僵死的电子控制单元的诊断方法
CN101727333A (zh) 微处理器中固件更新的方法及固件更新系统
CN110737483B (zh) 一种基于Windows USB MassStorage类的信令、数据传输方法
CN211427090U (zh) 微控制单元设备
CN113900693A (zh) 一种固件升级方法、装置、系统、电子设备及存储介质
CN102023906B (zh) 便携式终端的微处理器、便携式终端及其修复方法
CN117492800B (zh) 一种通过usb升级固件的方法
CN115437674B (zh) 一种固件升级方法、装置、介质及电子设备
CN115129350A (zh) 一种uefi环境下bmc固件更新系统和方法
CN106843926B (zh) 高效可靠的adi-dsp固件启动、升级与还原的方法
CN113791854A (zh) 一种远程协助的装置和系统

Legal Events

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