发明内容
本发明的主要目的在于提供一种软件升级方法、装置及电视机、电视机机顶盒,以解决对电视机或电视机机顶盒的软件升级方法复杂、局限性大且效率低的问题。
为了实现上述目的,根据本发明的一方面,提供了一种软件升级方法。
根据本发明的软件升级方法包括:检测客户端的工作状态,工作状态包括:进入读擦写操作和未进入读擦写操作;根据工作状态控制客户端的操作命令,其中,当客户端处于进入读擦写状态时,客户端的串口接收发送端的升级包;当客户端处于未进入读擦写状态时,客户端的串口等待接收升级包。
进一步地,客户端是电视机或电视机机顶盒。
进一步地,检测客户端的工作状态,并根据工作状态控制客户端的操作命令包括:判断客户端的flash存储器的工作状态,其中,当工作状态是未进入读擦写操作的状态时,设置客户端的控制命令,设置控制命令包括设置以下命令之一:写命令、擦命令、读命令或结束命令;当工作状态为进入读擦写操作的状态时,客户端根据接收升级包的情况启动以下一种命令或者任意几个命令的组合:发送响应命令、等待串口接收命令以及控制命令。
进一步地,客户端根据接收升级包的情况启动以下一种命令或者任意几个命令的组合:发送响应命令、等待串口接收命令以及控制命令的步骤包括:判断串口是否接收升级包,其中,在没有接收升级包的情况下,客户端启动发送响应命令和擦命令,以确认开始接收升级包,并对flash存储器执行擦命令的操作;在串口已经接收部分升级包的情况下,客户端在启动发送响应命令的同时启动等待串口接受命令和写命令的操作,以确认开始接收剩下的升级包,并将剩下的升级包写入flash存储器;在串口接收完全部升级包的情况下,客户端启动读命令,以确认flash存储器的存储状态及存储内容是否正确。
进一步地,在检测客户端的工作状态之前,方法还包括:初始化客户端的存储器和数据,并设置升级包的存放地址。
进一步地,在客户端的串口接收发送端的升级包之后,方法还包括:客户端安装升级包,升级成功后生成握手信号;将握手信号返回服务器,握手信号表示客户端升级成功。
为了实现上述目的,根据本发明的另一个方面,提供了一种软件升级装置。
根据本发明的软件升级装置包括:检测模块,用于检测客户端的工作状态,工作状态包括:进入读擦写操作和未进入读擦写操作;升级模块,用于根据工作状态控制客户端的操作命令,其中,当客户端处于进入读擦写状态时,客户端的串口接收发送端的升级包;当客户端处于未进入读擦写状态时,客户端的串口等待接收升级包。
进一步地,装置还包括:判断模块,用于判断串口是否接收升级包,其中,在没有接收升级包的情况下,客户端启动发送响应命令和擦命令,以确认开始接收升级包,并对flash存储器执行擦命令的操作;在串口已经接收部分升级包的情况下,客户端在启动发送响应命令的同时启动等待串口接受命令和写命令的操作,以确认开始接收剩下的升级包,并将剩下的升级包写入flash存储器;在串口接收完全部升级包的情况下,客户端启动读命令,以确认flash存储器的存储状态及存储内容是否正确。
为了实现上述目的,根据本发明的再一方面,提供了一种电视机。该电视机运行上述任意一项的软件升级方法。
为了实现上述目的,根据本发明的再一方面,提供了一种电视机机顶盒。该电视机机顶盒运行上述任意一项的软件升级方法。
通过本发明,采用检测客户端的工作状态,工作状态包括:进入读擦写操作和未进入读擦写操作;根据工作状态控制客户端的操作命令,其中,当客户端处于进入读擦写状态时,客户端的串口接收发送端的升级包;当客户端处于未进入读擦写状态时,客户端的串口等待接收升级包,解决了对电视机或电视机机顶盒的软件升级方法复杂、局限性大且效率低的问题,进而达到了方便快捷的对电视机或电视机机顶盒进行软件升级,提高了工作效率,节省了研发成本的效果。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
本发明提供了一种软件升级系统和装置。图1是根据本发明实施例的软件升级系统的结构示意图。
如图1所示,该软件升级系统包括转换电路,以及连接在转换电路上的串口(RS232)、升级接口、并口、I2C接口以及其他附加接口,其中转换电路和其上的串口、升级接口构成了软件在线升级单元(串口升级单元),转换电路和其上的并口和I2C接口构成了在线调试单元(并口调试单元),该工具电路上同时设计软件在线升级单元和在线调试单元是为了扩大工具的使用范围、功能和方便性,并且将二者融合在一起,节约了成本,简化了设计,提高了可行性。
上述实施例中,具体的在串口升级单元中,包括了串口、连接待升级的电路板的软件升级接口以及连接在串口何升级接口间的软件升级电路;在并口调试单元中包括了并口、与带调试芯片连接的I2C总线接口以及连接在它们之间的调试电路。
如图1所示的实施例还可以增加VGA接口等端口用于软件的升级等功能,来实现扩大该工具的使用范围和使用上的广泛性,也可以根据具体的需要而对这些端口进行添加或更换,转换电路中都有预留,这样就可以使该工具的使用更加灵活方便,同时将软件升级和调试合二为一可以解决资源的浪费和使用上的不便性的问题,具有较强的实用性和方便性。
本发明的软件在线升级方法可以结合调试方法,该方法集合了升级用的串口、调试用的并口以及为了其它功能而预留的像VGA等的其他端口,将多种功能集合到一个电路工具板当中,实现了电路的复用,不仅节约了成本,而且增加了工具的功能、拓展了它的使用范围,给使用者带来了方便,节省了时间,为争取产品的快速上市从而争取市场提供了可能性。并且,该工具从原理上来说是可行的,实现方法比较简单。经实验,用该方法实现的工具,升级速度比较快、调试准确率高,是方便可行的。
本发明升级系统中的软件在线调试是通过I2C总线来实现的,在I2C调试单元中设置有并口和I2C总线接口。在实施中,从并口中选择两对输入输出端口分别作为I2C的SDA和SCL,并将这两条线与产品的待调试芯片的I2C管脚的SDA和SCL相连。要对产品进行调试时,将调试板的一端与产品相连,另一端的并口与开发者的PC机的并口相连,这样,我们就将工具的SCL和SDA与产品的待调试芯片的SCL和SDA管脚连接起来,从而可以进行一些功能及实现效果的在线实时调试,并且可以提前于软件进行。该调试通信方式可以完全按照I2C的协议进行。
图2是根据本发明实施例的软件升级装置的结构示意图。如图2所示的软件升级装置,该装置包括:检测模块201和升级模块203。
其中,检测模块201,用于检测客户端的工作状态,工作状态包括:进入读擦写操作和未进入读擦写操作;升级模块203,用于根据工作状态控制客户端的操作命令,其中,当客户端处于进入读擦写状态时,客户端的串口接收发送端的升级包;当客户端处于未进入读擦写状态时,客户端的串口等待接收升级包。
本发明的上述装置实施例在客户端根据不同的工作状态执行不同升级操作,升级操作的各个操作命令对应客户端存储升级包的存储器(flash存储器)的不同状态来执行,这种方法灵活快捷,根据检测到的存储器的状态来进行升级操作,不会因为误操作或者系统的异常中断而影响软件的升级,同时该升级装置支持断点升级。
优选的,本发明的该装置还可以包括:判断模块205,用于判断串口是否接收升级包,其中,在没有接收升级包的情况下,客户端启动发送响应命令和擦命令,以确认开始接收升级包,并对flash存储器执行擦命令的操作;在串口已经接收部分升级包的情况下,客户端在启动发送响应命令的同时启动等待串口接受命令和写命令的操作,以确认开始接收剩下的升级包,并将剩下的升级包写入flash存储器;在串口接收完全部升级包的情况下,客户端启动读命令,以确认flash存储器的存储状态。该判断模块205根据串口接收升级包的不同阶段执行不同的控制命令,该方案灵活简洁,提高了工作效率。
本发明提供了一种软件升级方法。图3是根据本发明实施例的软件升级方法的流程示意图。如图3所示,该方法包括如下步骤:
步骤S302,通过图2中的检测模块201来检测客户端的工作状态,工作状态包括:进入读擦写操作和未进入读擦写操作。
步骤S304,通过图2中的升级模块203来根据工作状态控制客户端的操作命令,其中,当客户端处于进入读擦写状态时,客户端的串口接收发送端的升级包;当客户端处于未进入读擦写状态时,客户端的串口等待接收升级包。
本发明上述实施例实现在电视机、机顶盒等产品需要升级时,可以根据电视机或电视机机顶盒里的升级存储器的状态灵活控制升级命令,将升级过程分成不同的状态,在不同状态下对存储器执行不同的升级操作。该方法实施例提高了升级效率,尤其应用在终端研发过程中可以节省研发成本,操作简便、易用性高。其中,实施例中的客户端可以是电视机或电视机机顶盒。
运行上述软件升级方法的设备一端与需升级的产品相连,一端与开发人员的PC的串口相连。连接成功后,会将PC中的程序在产品的CPU的控制下下载到Flash中,以实现软件的升级和串口打印功能。
升级前,需要做好一定的准备工作,过程如图1所示,包括保存当前波特率、初始化寄存器和数据、搬移Flash操作函数到特定RAM空间并设置函数指针到此地址,从而进入升级状态判断。升级过程分为四种状态:等待串口数据状态、数据分析状态、发送响应、发送数据,通过一直询问程序所处的状态进行运行控制。
上述实施例中,在检测客户端的工作状态,并根据工作状态控制客户端的操作命令的步骤可以包括:判断客户端的flash存储器的工作状态,其中,当工作状态是未进入读擦写操作的状态时,设置客户端的控制命令,设置控制命令包括设置以下一种命令或任意几个命令的组合:写命令、擦命令、读命令以及结束命令;当工作状态为进入读擦写操作的状态时,客户端根据接收升级包的情况启动以下一种命令或者任意几个命令的组合:发送响应命令、等待串口接收命令以及控制命令。
在上述步骤中的客户端根据接收升级包的情况启动以下一种命令或者任意几个命令的组合:发送响应命令、等待串口接收命令以及控制命令的步骤可以包括:判断串口是否接收升级包,其中,在没有接收升级包的情况下,客户端启动发送响应命令和擦命令,以确认开始接收升级包,并对flash存储器执行擦命令的操作;在串口已经接收部分升级包的情况下,客户端在启动发送响应命令的同时启动等待串口接受命令和写命令的操作,以确认开始接收剩下的升级包,并将剩下的升级包写入flash存储器;在串口接收完全部升级包的情况下,客户端启动读命令,以确认flash存储器的存储状态,并对读取到的升级包的数据是否正确进行校验,例如,使用该读命令读取存储器的存储状态,如果存储器已被写满,系统则执行后续的擦操作或停止写操作,或者且通过读命令读取并校验存储器中的升级包的数据是否正确,如果正确的则保留原来的内容,否则擦除该升级包的数据再重新进行升级操作。
本发明实施例中的状态步骤是相互穿插执行的,即在升级的过程中,通过实时检测存储升级包的存储器的状态来启动不同的命令,例如,在flash存储器已经存满的情况下,先执行擦命令的操作,再执行写命令的操作;或者,在写命令执行的过程中实时检测是否还可以继续写入升级包,如果可以继续在存储器中写入升级包,则设置当前的状态除了是写命令操作状态,还包括等待串口接受命令,用来表示还可以继续写数据,直到存储写满或者升级包全部发送完成。
优选的,在检测客户端的工作状态之前,方法还包括:初始化客户端的存储器和数据,并设置升级包的存放地址。具体的实施例为在软件升级之前,需要做好一定的准备工作,包括保存当前波特率、初始化寄存器和数据、搬移Flash操作函数到特定RAM空间并设置函数指针到此地址,从而进入升级状态判断。升级过程可以分为四种状态:等待串口数据状态、数据分析状态、发送响应、发送数据,通过一直询问程序所处的状态进行运行控制。
另外的,上述实施例中在客户端的串口接收发送端的升级包之后,方法还可以包括:客户端安装升级包,升级成功后生成握手信号;将握手信号返回服务器,握手信号表示客户端升级成功。
图4是根据图3所示的软件升级方法中进入读擦写状态时的工作流程示意图;图5是根据图3所示的软件升级方法中未进入读擦写状态时的工作流程示意图。
如图4和图5所示,在本发明实施例的软件升级方法中,检测客户端的工作状态即检测客户端的存储器(flash)的数据分析状态,该工作状态可以分成未进入读擦写操作和进入读擦写操作。
如图4所示,客户端在未进入读擦写操作的状态下包括如下步骤:
步骤S41,判断客户端是否正处在读擦写状态,如果未进入读擦写操作,则进入以下任意一个步骤或以下几个步骤的组合:步骤S421、步骤S422、步骤S423以及步骤S424,否则转入步骤S43。
该步骤实现如果未进入读擦写操作过程时,则在当前保存控制命令的RAM设置当前的控制命令,该设置的控制命令可以包括以下任意一个命令或者几个命令的组合:写命令、读命令、擦命令以及结束命令。
步骤S421,如果是写命令,则先执行擦命令来擦除需要升级的flash,再在当前的RAM中设置升级状态为为写状态。
步骤S422,如果是擦除命令,则将当前状态设置为正在擦除。
步骤S423,如果是读命令,在设置为正在读。
步骤S424,如果是结束命令,那么就设置到升级前的波特率并将其它寄存器还原后返回。
步骤S43,执行读擦写操作控制过程。
步骤S44,在执行在以下任意一个步骤或以下几个步骤的组合:步骤S421、步骤S422、步骤S423以及步骤S424之后,客户端设置为发送响应。
该步骤实现在写命令、读命令和读命令中任意一个设置完成后,客户端进入发送响应状态,即通知串口已经做好准备,通常会发送一个“ACK”说明已做好了发送数据的准备,即客户端在向服务器发送“ACK”后,设置客户端的串口等待接收升级包的状态。
如图5所示,客户端在进入读擦写操作的状态下包括如下步骤:
步骤S501,判断正在接收的数据包(升级包)的情况,该步骤中是已进入读擦写flash控制过程后,执行判断一下是否已接收数据包。如果还没有接收,那么进入步骤S502,否则转入步骤S503。
步骤S502,客户端获取数据包数,并设置当前状态为发送响应。
步骤S503,如果是已接收数据包,则根据此时接收数据包的情况来执行步骤S504或步骤505。
步骤S504,此时如果步骤503的结果是数据包还没有接收完,那么就要设置为等待串口接收状态(此处数据是分成若干包来进行传送和接收的,每接收完一包,都要进行一轮的判断,直到最后一包接收完毕)。
步骤S505,此时如果步骤S503的结果是数据包接收完成,那么就根据当前的命令是写操作、擦操作还是读操作跳转到RAM中分别执行相应的命令。
该步骤具体过程如图5所示。在数据包(升级包)接收完后,那么就根据当前的命令是写操作、擦操作还是读操作跳转到RAM中分别执行相应的命令。如果是写操作,则跳转到RAM执行写操作;如果是擦操作则跳转到RAM中执行擦操作,写操作一般在擦操作之后执行,如果存储升级包的存储器还有剩余空间则执行写操作,否则先执行擦操作。擦操作或者写操作之后系统设置状态为发送响应状态。
当前命令是读操作时,客户端设置读操作控制变量,从flash读取数据,并将状态设置为发送数据状态。
本发明中在步骤S505中,客户端使用标志位来作出响应什么时候执行读、擦还是写操作,这些都是由设计的时候软硬件人员做好的约定,不同的人可以做不同的约定。(例如,在程序中开辟一个空间g_bReceivedDataBuffer,用与存放可能要用到的数据来约定不同的操作命令,其最低的一个字节如果存放的数据为0x20,我就认为是要进行擦除操作;为0x01,就认为是写数据,0x02就认为是读等等)。
本发明实施例中的读操作通常应用在以下场景中,当服务器要往客户端的flash中写数据(升级),客户端先会去读flash里面的信息,例如flash是不是已经被写满了等等,如果flash已经被写满,就不能再进行余下的写操作了;而且,读操作也可以进行一个验证,即从flash中读出写入的数据,将该数据跟需要升级的数据进行比较,判断该升级包是否要写入flash,可以作为一个验证升级有没有出错的过程。只有做到一个交互(既能读又能写),才能保证升级过程的正确进行。
本发明上述实施例中的升级过程的读擦写操作是有个顺序,即先擦、再写、后读,但实际运行过程中它们之间又是并列的队flash的操作过程,可以看做是几个并列的过程。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明在升级之间,将串口设置在升级的初始状态。其中,客户端在准备工作做好之后,进入等待串口接收数据状态;或者在客户端写入升级包的过程中,在没有完全写完的时候,客户端也设置为等待串口接收状态。如果接受完,则设置数据的分析状态。接收数据应该满足所用的串口相应的电平协议,如RS232等。
本发明所有实施例中的串口发送响应状态是串口做好了各种准备后,发送一个“ACK”说明已做好了发送数据的准备;而发送数据状态是指当串口接收到可以发送数据的响应后,会进行数据的发送,并且每当数据发送完一包后,会进入发送响应的状态,等待下一个数据包的发送。在从串口的升级准备工作到所有数据发送完毕的整个过程结束。
为了实现上述目的,本发明还提供了一种电视机或电视机机顶盒。该电视机或电视机机顶盒可以是上述软件升级装置所升级的客户端。即本发明所提及的电视机或电视机机顶盒上可以运行上述实施例中的软件升级方法,该升级方法通过外部升级设备与电视机或电视机机顶盒建立的有线通信通道对终端的应用程序进行升级,由于在升级包到达终端(即电视机或电视机机顶盒)之前检测了终端内部存储器的工作状态,实现了终端灵活控制升级命令,即根据电视机或电视机机顶盒内部存储设备的存储状态,实现灵活对该存储器进行读擦写的操作,该升级方法提高了升级效率,尤其应用在研发过程中,可以节省研发成本。
从另一个角度可知,本发明上述实施例中的电视机或电视机机顶盒可以运行上述实施例中的任意一种软件升级方法。电视机或电视机机顶盒通过检测内部升级设备(保存并运行升级包的存储器)的工作状态来灵活控制接收和运行该升级包,实现灵活快速的对终端上的应用软件进行自动升级操作,使用该升级方法的终端执行升级操作快速、简便,在产品开发及后期维护中有着显著意义,尤其在电器产品开发过程中使用该升级方法有着操作简便,易用性高的效果。
本发明涉及到的软件升级方法还可以应用在其他多媒体软件终端,使用范围广泛,兼容性好。
从以上的实施例描述中,可以看出,本发明实现了如下技术效果:本发明提出的方法更加方便实用快捷,加快了研发速度,为争取产品的尽快上市缩短时间,为企业赢得市场提供了保证。该发明方法简单,技术可行,有实用意义。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成多个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。