一种基于嵌入式Web的控制器固件升级方法与流程

文档序号:18008926发布日期:2019-06-25 23:44阅读:726来源:国知局
一种基于嵌入式Web的控制器固件升级方法与流程

本发明涉及计算机技术领域,更具体的是涉及一种基于嵌入式web的控制器固件升级方法。



背景技术:

现有的嵌入式产品实现web功能,大多是通过嵌套web服务器的方式来实现的,比如boa、goahead等,然后再通过cgi规范实现固件升级功能;另一种常见的在线升级方式是在电脑端安装特定的升级工具,再通过网络协议把固件发送给嵌入式设备进行升级。

上述两种常见的固件升级方案,第一种需要在嵌入式设备移植web服务器,其占用的空间至少需要30kb,对于低端的嵌入式产品而言,显然消耗了太多的资源;第二种虽然不需要在嵌入式设备中嵌入web服务器,但是却需要在每一台需要升级固件的电脑上安装运行升级工具,较为繁琐。



技术实现要素:

本发明的目的在于:为了解决现有的固件升级方法消耗过多资源、操作较为繁琐的问题,本发明提供一种基于嵌入式web的控制器固件升级方法。

本发明为了实现上述目的具体采用以下技术方案:

一种基于嵌入式web的控制器固件升级方法,包括如下步骤:

s1:在控制器端编写html文件,实现web升级界面的制定;

s2:控制器在bootloader模式下创建tcp/ip服务端a,若规定时间内接收到电脑端请求,则在bootloader模式下通过web方式对控制器进行固件升级,否则执行s3;

s3:由bootloader模式切换到用户程序运行模式,在用户程序运行模式下创建tcp/ip服务端b,若接收到电脑端请求,则在用户程序运行模式下通过web方式对控制器进行固件升级,否则保持监听;

s4:控制器固件升级完成后,向电脑端发送升级成功标识,否则发送升级失败标识。

进一步的,所述s2和s3中通过web方式对控制器进行固件升级,包括如下步骤:

步骤一:在电脑端浏览器地址栏输入控制器ip地址和端口号,向控制器发起连接请求;

步骤二:控制器接收到电脑端连接请求后,将s1中编写好的html文件转换为一维数组发送到电脑端;

步骤三:电脑端接收到一维数组后将其还原为html格式,在浏览器还原出web升级界面;

步骤四:通过浏览器web升级界面对预先写入电脑端的固件升级包进行选择,加载固件升级包,发送给控制器;

步骤五:控制器接收固件升级包,根据固件升级包的数据长度,在堆栈中申请用于接收固件升级包数据的空间,并将固件升级包数据写入预先设定的应用程序地址空间中。

进一步的,所述控制器在bootloader模式下创建tcp/ip服务端a和在用户程序运行模式下创建tcp/ip服务端b的过程是相同的,即:通过socket创建服务端通信,监听客户端(电脑端)的连接请求。

进一步的,所述步骤一中,在bootloader模式下输入的控制器ip地址为控制器出厂默认ip地址。

进一步的,所述步骤二中利用c语言将html文件转换为一维数组,具体为:c语言通过读html文件的方式,获取html文件的内容,按照ascii码的方式,以字节为分割,将html文件内容以一维数组的格式输出。

进一步的,所述s1中html文件的编写包括对web升级界面的升级按钮、升级文件查找、显示栏和重启按钮等的制定。

进一步的,控制器固件升级成功后,重启控制器,升级后的固件运行生效,若用户程序运行模式下固件升级完成后,新的用户程序无法运行,则将用户程序运行模式切换到bootloader模式重新进行升级。

进一步的,重新在bootloader模式下升级时,将电脑端ip地址修改为与控制器出厂默认ip地址处于同一个局域网,然后通过访问bootloader模式下的控制器web升级界面对控制器固件进行升级。

本发明的有益效果如下:

1、本发明将web升级界面的html文件通过c语言转换为一维数组,存储空间不大于10kbytes,占用空间小,且只有固件升级时才需要申请此空间,固件升级完成后此空间立即释放,节约资源。

2、本发明将一维数组通过tcp/ip协议进行传输,只需要打开与控制器在同一局域网的电脑端浏览器,然后在浏览器地址栏输入嵌入式设备的ip地址,就能访问到控制器固件的web升级界面,具有灵活的可操作性。

3、本发明在bootloader模式下进行控制器固件升级时,ip地址为控制器出厂设定的默认ip,防止篡改,保证了在bootloader模式下通过web方式进行控制器固件升级的可行性。

附图说明

图1是本发明的通信模型示意图。

图2是本发明的方法流程示意图。

具体实施方式

为了本技术领域的人员更好的理解本发明,下面结合附图和以下实施例对本发明作进一步详细描述。

实施例1

如图1和图2所示,本实施例提供一种基于嵌入式web的控制器固件升级方法,包括如下步骤:

s1:在控制器端编写html文件,实现web升级界面的制定,包括对web升级界面的升级按钮、升级文件查找、显示栏和重启按钮等的制定;

s2:控制器在bootloader模式下创建tcp/ip服务端a,若规定时间内接收到电脑端请求,本实施例中规定时间设定为5s,则在bootloader模式下通过web方式对控制器进行固件升级,否则执行s3;

bootloader模式下进行固件升级步骤为:

步骤一:在电脑端浏览器地址栏输入控制器出厂默认ip地址和端口号,本实施例中端口号默认为80,向控制器发起连接请求;

步骤二:控制器接收到电脑端连接请求后,将s1中编写好的html文件通过c语言转换为一维数组发送到电脑端;

步骤三:电脑端接收到一维数组后将其还原为html格式,在浏览器还原出web升级界面,显示升级按钮、升级文件查找和显示栏、重启按钮等;

步骤四:通过浏览器web升级界面对预先写入电脑端的固件升级包进行选择,本实施例中的固件升级包一般以bin结尾,加载固件升级包,发送给控制器;

步骤五:控制器接收固件升级包,根据固件升级包的数据长度,在堆栈中申请用于接收固件升级包数据的空间,并将固件升级包数据写入预先设定的应用程序地址空间中,升级完成,向电脑端发送升级成功标识,否则发送升级失败标识;

s3:由bootloader模式切换到用户程序运行模式,在用户程序运行模式下创建tcp/ip服务端b,若接收到电脑端请求,则在用户程序运行模式下通过web方式对控制器进行固件升级,否则保持监听;

用户程序运行模式下进行固件升级步骤为:

步骤一:在电脑端浏览器地址栏输入控制器ip地址和端口号,本实施例中端口号默认为80,向控制器发起连接请求;

步骤二:控制器接收到电脑端连接请求后,将s1中编写好的html文件通过c语言转换为一维数组发送到电脑端,具体为:c语言通过读html文件的方式,获取html文件的内容,按照ascii码的方式,以字节为分割,将html文件内容以一维数组的格式输出;

步骤三:电脑端接收到一维数组后将其还原为html格式,在浏览器还原出web升级界面,显示升级按钮、升级文件查找和显示栏、重启按钮等;

步骤四:通过浏览器web升级界面对预先写入电脑端的固件升级包进行选择,本实施例中的固件升级包一般以bin结尾,加载固件升级包,发送给控制器;

步骤五:控制器接收固件升级包,根据固件升级包的数据长度,在堆栈中申请用于接收固件升级包数据的空间,并将固件升级包数据写入预先设定的应用程序地址空间中,升级完成,向电脑端发送升级成功标识,否则发送升级失败标识;

本实施例中控制器在bootloader模式下创建tcp/ip服务端a和在用户程序运行模式下创建tcp/ip服务端b的过程是相同的,即:分别通过socket创建服务端a和服务端b的通信,监听客户端(电脑端)的连接请求。

控制器固件升级成功后,重启控制器,升级后的固件运行生效,若用户程序运行模式下固件升级完成后,新的用户程序无法运行,则将用户程序运行模式切换到bootloader模式重新进行升级:重新在bootloader模式下升级时,将电脑端ip地址修改为与控制器出厂默认ip地址处于同一个局域网,然后通过访问bootloader模式下的控制器web升级界面对控制器固件进行升级。

以上所述,仅为本发明的较佳实施例,并不用以限制本发明,本发明的专利保护范围以权利要求书为准,凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1