发明内容
本发明的主要目的在于提供一种带可靠性检测功能的多外设boot实现方法、设备及系统,旨在为多外设嵌入式产品的boot引导程序提供可靠性检测,提高系统使用性能。
本发明提出一种带可靠性检测功能的多外设boot实现方法,包括:
外部设备通过外设接口与服务器连接前,选择相应的boot启动模式;
当外部设备与服务器连接后,根据选择的boot启动模式进行初始化操作,并注册相应的数据收、发函数;
根据约定的命令传输协议与服务器进行boot命令交互,实现对boot下载过程的检测。
优选地,所述命令传输协议包括:服务器发送命令的命令描述信息、命令数据包信息以及外部设备的命令应答信息;所述命令描述信息包含命令标识符、数据包长度、命令类型以及命令内容;所述命令数据包信息包含所述命令类型确定的命令数据;所述命令应答信息包含应答标识符、应答类型、应答内容以及命令执行状态。
优选地,所述命令类型包括代码下载、测试、断点续传和/或设置发送固定数据。
优选地,所述根据约定的命令传输协议与服务器进行boot命令交互,实现对boot下载过程的检测的步骤包括:
接收服务器发送的命令;
当所述命令为下载代码命令时,下载代码程序,并向服务器返回命令应答信息;
当所述命令为代码下载完毕命令时,运行下载代码,并向服务器返回命令应答信息;
当所述命令为测试功能命令时,根据测试功能类型对所述测试功能命令进行相应处理并向服务器返回命令应答信息。
优选地,所述外部设备通过外设接口与服务器连接前,选择相应的boot启动模式的步骤之前还包括:
根据外设接口制定服务器与外部设备之间的所述命令传输协议。
本发明还提出一种带可靠性检测功能的多外设boot实现设备,包括:
boot模式选择模块,用于通过外设接口与服务器连接前,选择相应的boot启动模式;
初始化模块,用于当外部设备与服务器连接后,根据选择的boot启动模式进行初始化操作,并注册相应的数据收、发函数;
boot检测模块,根据约定的命令传输协议与服务器进行boot命令交互,实现对boot下载过程的检测。
优选地,所述boot检测模块包括:
命令接收单元,用于接收服务器发送的命令;
命令应答单元,用于当所述命令为下载代码命令时,下载代码程序,并向服务器返回命令应答信息;当所述命令为代码下载完毕命令时,运行下载代码,并向服务器返回命令应答信息;以及当所述命令为测试功能命令时,根据测试功能类型对所述测试功能命令进行相应处理并向服务器返回命令应答信息。
优选地,所述设备还包括传输协议制定模块,用于根据外设接口制定服务器与外部设备之间的所述命令传输协议。
本发明还提出一种带可靠性检测功能的多外设boot实现系统,包括:外部设备以及与所述外部设备通过外设接口连接的服务器,其中:
所述外部设备,用于与服务器连接前,选择相应的boot启动模式;当外部设备与服务器连接后,根据选择的boot启动模式进行初始化操作,并注册相应的数据收、发函数;根据约定的命令传输协议与服务器进行boot命令交互,实现对boot下载过程的检测;
所述服务器,用于根据约定的命令传输协议与外部设备进行boot命令交互,实现对boot下载过程的检测。
优选地,所述服务器,还用于向所述外部设备发送命令;以及接收外部设备根据所述命令返回的命令应答信息;
所述外部设备,还用于接收服务器发送的命令,当所述命令为下载代码命令时,下载代码程序,并向服务器返回命令应答信息;当所述命令为代码下载完毕时,运行下载代码,并向服务器返回命令应答信息;以及当所述命令为测试功能命令时,根据测试功能类型对所述测试功能命令进行相应处理并向服务器返回命令应答信息。
本发明提出的一种带可靠性检测功能的多外设boot实现方法、设备及系统,通过根据多外设接口的特点制定相应的命令传输协议,根据用户选择的外设接口类型选择相应的boot启动模式,并按照制定的命令传输协议在外部设备与主机服务器之间进行命令数据的交互,实现对boot下载过程的检测,从而确保在出现不确定因素的情况下,保证系统引导程序的正确运行,该实现方法简单、可靠。
具体实施方式
本发明实施例解决方案主要是根据多外设接口的特点制定相应的命令传输协议,根据用户选择的外设接口类型选择相应的boot启动模式,并按照制定的命令传输协议在外部设备与主机服务器之间进行命令数据的交互,实现对boot下载过程的检测。
如图1所示,本发明一实施例提出一种带可靠性检测功能的多外设boot实现方法,包括:
步骤S101,外部设备通过外设接口与服务器连接前,选择相应的boot启动模式;
在本实施例中,外设接口可以为SPI(Serial Peripheral Interface,串行外设接口)、USB(Universal Serial BUS,通用串行总线)接口以及SDIO(SecureDigital Input and Output Card,安全数字输入输出卡)接口等。
服务器可以为嵌入式系统中设置有多个外设接口的主机,比如PC机、笔记本等,外部设备可以带有多种外设接口,并可以根据服务器的外设接口来选择确定自己的外设接口,与服务器进行连接。
在嵌入式系统中,在用户应用程序运行之前,需要运行系统引导程序(boot),以初始化外部设备,建立内存空间的映射图,为最终下载用户应用程序准备好正确的运行环境。
为了保证boot下载的成功运行,本实施例通过服务器与外部设备之间预定的命令传输协议进行服务器与外部设备之间的命令交互,从而达到对boot下载过程进行检测的目的。
首先,在外部设备通过外设接口与服务器连接前,需要选择相应的boot启动模式,boot启动模式根据用户选择的外设接口而定,用户可以根据自身的需求,通过外部装置设置boot启动模式,包括使用何种外设接口、主/从模式、时钟等。通过外部装置的设置,用户可以根据实际需要选择相应的服务器进行代码下载,从而选择相应的boot启动模式,以便后续过程中系统上电后,根据相应的外设接口对外部设备进行初始化操作。
步骤S102,当外部设备与服务器连接后,根据选择的boot启动模式进行初始化操作,并注册相应的数据收、发函数;
系统上电之后,外部设备便进入等待接收命令状态。
步骤S103,根据约定的命令传输协议与服务器进行boot命令交互,实现对boot下载过程的检测。
在本实施例中,服务器与外部设备之间有约定的命令传输协议,由于在boot阶段,对数据传输的正确性的要求远大于传输速度的要求,而且在boot阶段,外设驱动要求精简,因此可使用普通传输模式。该命令传输协议可以分为命令描述、命令数据包、命令应答三个阶段。
命令传输协议具体包括:服务器发送命令的命令描述信息、命令数据包信息以及外部设备的命令应答信息。
其中,命令描述信息包含命令标识符、数据包长度、命令类型以及命令内容等,其中,命令内容比如命令描述校验和、下载代码地址等。
命令数据包信息包含命令类型确定的命令数据;命令类型包括代码下载、测试、断点续传和/或设置发送固定数据等。
命令应答信息包含应答标识符、应答类型、应答内容以及命令执行状态等。其中,对于代码下载命令而言,应答内容为反馈所有下载数据的校验和。
由于命令描述信息可以指定数据包长度,因此,在服务器发送数据包阶段,可以一次性传输数据包长度字段指定长度的数据,在外部设备命令应答阶段时,再读取数据包阶段数据的校验和,如果校验结果正确,则服务器传送下一阶段数据包,反之,则重传此数据包。
为了实现对boot下载过程的检测,外部设备与服务器根据约定的命令传输协议进行boot命令交互,根据用户的选择,服务器向外部设备发送命令,外部设备接收到服务器发送的命令,根据命令进行相应的处理。如果接收的命令为下载代码命令时,则下载代码程序,并向服务器返回命令应答信息,其中代码程序的下载可以分段下载;若接收的命令为代码下载完毕命令时,运行下载代码,并向服务器返回命令应答信息;若命令为测试功能命令时,根据测试功能类型对测试功能命令进行相应处理并返回命令应答信息。
服务器可以根据外部设备返回的命令应答信息中的命令执行状态得知,其所发的命令的执行成功与失败情况,从而将执行结果反馈给用户。
如图2所示,步骤S103包括:
步骤S1031,接收服务器发送的命令;
步骤S1032,当命令为下载代码命令时,下载代码程序,并向服务器返回命令应答信息;
其中,代码程序的下载可以分段下载。
步骤S1033,当命令为代码下载完毕命令时,运行下载代码,并向服务器返回命令应答信息;步骤S1034,当命令为测试功能命令时,根据测试功能类型对测试功能命令进行相应处理并向服务器返回命令应答信息。
测试功能命令比如可以为读写寄存器等。
本实施例通过根据多外设接口的特点制定相应的命令传输协议,根据用户选择的外设接口类型选择相应的boot启动模式,并按照制定的命令传输协议在外部设备与主机服务器之间进行命令数据的交互,实现对boot下载过程的检测,从而确保在出现不确定因素的情况下,保证系统引导程序的正确运行,该实现方法简单、可靠。
如图3所示,本发明另一实施例提出一种带可靠性检测功能的多外设boot实现方法,包括:
步骤S300,根据外设接口制定服务器与外部设备之间的命令传输协议;
步骤S301,外部设备通过外设接口与服务器连接前,选择相应的boot启动模式;
步骤S302,当外部设备与服务器连接后,根据选择的boot启动模式进行初始化操作,并注册相应的数据收、发函数;
步骤S303,根据约定的命令传输协议与服务器进行boot命令交互,实现对boot下载过程的检测。
本实施例与上述实施例的区别在于,服务器与外部设备之间的命令传输协议由外部设备所制定。在制定命令传输协议时,需要考虑各个外部设备的特点,包括各种外部设备的FIFO(First In First Out,先进先出)的深度、命令传输正确性的保证等。
其他与上述实施例相同,在此不再赘述。同理,服务器与外部设备之间的命令传输协议还可由服务器制定。
如图4所示,本发明一实施例提出一种带可靠性检测功能的多外设boot实现设备,包括:boot模式选择模块401、初始化模块402以及boot检测模块403,其中:
boot模式选择模块401,用于通过外设接口与服务器连接前,选择相应的boot启动模式;
在本实施例中,外设接口可以为SPI、USB接口以及SDIO接口等。
服务器可以为嵌入式系统中设置有多个外设接口的主机,比如PC机、笔记本等,外部设备可以带有多种外设接口,并可以根据服务器的外设接口来选择确定自己的外设接口,与服务器进行连接。
在嵌入式系统中,在用户应用程序运行之前,需要运行系统引导程序(boot),以初始化外部设备,建立内存空间的映射图,为最终下载用户应用程序准备好正确的运行环境。
为了保证boot下载的成功运行,本实施例通过服务器与外部设备之间预定的命令传输协议进行服务器与外部设备之间的命令交互,从而达到对boot下载过程进行检测的目的。
首先,在外部设备通过外设接口与服务器连接前,由boot模式选择模块401选择相应的boot启动模式,boot启动模式根据用户选择的外设接口而定,用户可以根据自身的需求,通过外部装置设置boot启动模式,包括使用何种外设接口、主/从模式、时钟等。通过外部装置的设置,用户可以根据实际需要选择相应的服务器进行代码下载,从而选择相应的boot启动模式,以便后续过程中系统上电后,根据相应的外设接口对外部设备进行初始化操作。
初始化模块402,当外部设备与服务器连接后,用于根据选择的boot启动模式进行初始化操作,并注册相应的数据收、发函数;
boot检测模块403,根据约定的命令传输协议与服务器进行boot命令交互,实现对boot下载过程的检测。
在本实施例中,服务器与外部设备之间有约定的命令传输协议,由于在boot阶段,对数据传输的正确性的要求远大于传输速度的要求,而且在boot阶段,外设驱动要求精简,因此可使用普通传输模式。该命令传输协议可以分为命令描述、命令数据包、命令应答三个阶段。
命令传输协议具体包括:服务器发送命令的命令描述信息、命令数据包信息以及外部设备的命令应答信息。
其中,命令描述信息包含命令标识符、数据包长度、命令类型以及命令内容等,其中,命令内容比如命令描述校验和、下载代码地址等。
命令数据包信息包含命令类型确定的命令数据;命令类型包括代码下载、测试、断点续传和/或设置发送固定数据等。
命令应答信息包含应答标识符、应答类型、应答内容以及命令执行状态等。其中,对于代码下载命令而言,应答内容为反馈所有下载数据的校验和。
由于命令描述信息可以指定数据包长度,因此,在服务器发送数据包阶段,可以一次性传输数据包长度字段指定长度的数据,在外部设备命令应答阶段时,再读取数据包阶段数据的校验和,如果校验结果正确,则服务器传送下一阶段数据包,反之,则重传此数据包。
为了实现对boot下载过程的检测,外部设备与服务器根据约定的命令传输协议进行boot命令交互,根据用户的选择,服务器向外部设备发送命令,外部设备接收到服务器发送的命令,根据命令进行相应的处理。如果接收的命令为下载代码命令时,则下载代码程序,并向服务器返回命令应答信息,其中代码程序的下载可以分段下载;若接收的命令为代码下载完毕命令时,运行下载代码,并向服务器返回命令应答信息;若命令为测试功能命令时,根据测试功能类型对测试功能命令进行相应处理并返回命令应答信息。
服务器可以根据外部设备返回的命令应答信息中的命令执行状态得知,其所发的命令的执行成功与失败情况,从而将执行结果反馈给用户。
如图5所示,boot检测模块403包括:命令接收单元4031以及命令应答单元4032,其中:
命令接收单元4031,用于接收服务器发送的命令;
命令应答单元4032,用于当命令为下载代码命令时,下载代码程序,并向服务器返回命令应答信息;当命令为代码下载完毕命令时,运行下载代码,并向服务器返回命令应答信息;以及当命令为测试功能命令时,根据测试功能类型对测试功能命令进行相应处理并向服务器返回命令应答信息。
如图6所示,本发明另一实施例提出一种带可靠性检测功能的多外设boot实现设备,包括:传输协议制定模块600、boot模式选择模块601、初始化模块602以及boot检测模块603,其中:
传输协议制定模块600,用于根据外设接口制定服务器与外部设备之间的所述命令传输协议;
boot模式选择模块601,用于通过外设接口与服务器连接前,选择相应的boot启动模式;
初始化模块602,用于当外部设备与服务器连接后,根据选择的boot启动模式进行初始化操作,并注册相应的数据收、发函数;
boot检测模块603,根据约定的命令传输协议与服务器进行boot命令交互,实现对boot下载过程的检测。
在本实施例中,boot模式选择模块601、初始化模块602以及boot检测模块603与上述实施例中boot模式选择模块401、初始化模块402以及boot检测模块403功能结构对应相同,在此不再赘述。
在本实施例中,由外部设备中传输协议制定模块600制定服务器与外部设备之间的命令传输协议,在制定命令传输协议时,需要考虑各个外部设备的特点,包括各种外部设备的FIFO的深度、命令传输正确性的保证等。
如图7所示,本发明一实施例提出一种带可靠性检测功能的多外设boot实现系统,包括:外部设备701以及与外部设备701通过外设接口连接的服务器702,其中:
外部设备701,用于与服务器702连接前,选择相应的boot启动模式;当外部设备与服务器连接后,根据选择的boot启动模式进行初始化操作,并注册相应的数据收、发函数;根据约定的命令传输协议与服务器702进行boot命令交互,实现对boot下载过程的检测;
服务器702,用于根据约定的命令传输协议与外部设备701进行boot命令交互,实现对boot下载过程的检测。
进一步的,服务器702还用于向外部设备701发送命令;以及接收外部设备701根据命令返回的命令应答信息;
外部设备701还用于接收服务器702发送的命令,当命令为下载代码命令时,下载代码程序,并向服务器702返回命令应答信息;当所述命令为代码下载完毕时,运行下载代码,并向服务器返回命令应答信息;以及当命令为测试功能命令时,对测试功能命令进行相应处理并向服务器返回命令应答信息。
在本实施例中,外设接口可以为SPI、USB接口以及SDIO接口等。
本发明实施例提出的一种带可靠性检测功能的多外设boot实现方法、设备及系统,通过根据多外设接口的特点制定相应的命令传输协议,根据用户选择的外设接口类型选择相应的boot启动模式,并按照制定的命令传输协议在外部设备与主机服务器之间进行命令数据的交互,实现对boot下载过程的检测,从而确保在出现不确定因素的情况下,保证系统引导程序的正确运行,该实现方法简单、可靠。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。