掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明属于固件升级技术领域,具体涉及一种智能设备安卓系统对密码键盘系统固件升级的方法。

背景技术

智能设备,例如智能POS设备,配置安卓Android系统与密码键盘系统。由于密码键盘系统为单片机平台,因此,当需要对密码键盘系统进行固件升级时,采用以下方式:PC端为android系统平台,密码键盘系统外接串口到PC端,实现PC端与密码键盘系统进行硬件连接,然后,通过PC端对密码键盘系统进行固件升级。

此种固件升级方式存在以下问题:

由于密码键盘系统主要用于密码输入、刷卡等安全管控,因此,对密码键盘系统的安全管控要求比较严格,采用传统的PC端对密码键盘系统进行固件升级的方式,需要密码键盘系统外接串口硬件,对密码键盘系统安全产生一定的风险,无法满足密码键盘系统安全要求。

发明内容

针对现有技术存在的缺陷,本发明提供一种智能设备安卓系统对密码键盘系统固件升级的方法,可有效解决上述问题。

本发明采用的技术方案如下:

本发明提供一种智能设备安卓系统对密码键盘系统固件升级的方法,包括以下步骤:

步骤F1,智能设备包括安卓系统和密码键盘系统;在智能设备内部,使安卓系统和密码键盘系统直接通过串口硬件进行连接;

步骤F2,智能设备的安卓系统,采用内部串口通信方式,对密码键盘系统完成固件升级。

优选的,步骤F2具体包括:

预先定义安卓系统和密码键盘系统进行通信的数据包结构;所述数据包结构包括五个字段,分别为:Direction字段、Step字段、Len字段、Content字段和CRC16字段;

所述Direction字段用于标识传输方向,其中,Host表示由安卓系统发往密码键盘系统;Chip表示由密码键盘系统发往安卓系统;

Step字段表示下载交互步骤编号,共分为五个步骤,顺次进行;

Len字段表示数据包长度;

Content字段用于存放数据包的内容;

CRC16字段为数据包的CRC校验字段;

固件升级过程包括Step1-Step5:

Step1,当安卓系统需要对密码键盘系统进行固件升级时,安卓系统持续向密码键盘系统发送开始进行固件升级的指令;

然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的数据应答包;如果没有,则下载超时,表明密码键盘系统固件升级失败,结束流程;如果有,则执行Step2;

其中,对于密码键盘系统,当接收到来自于安卓系统的固件升级的指令时,密码键盘系统向安卓系统返回的数据应答包携带以下信息:

Direction字段标识从密码键盘系统发往安卓系统;

Step字段为Step1;

Content字段携带有密码键盘系统的芯片序号C-SN、调试阶段的启动等待时间C-Time、调试阶段参数信息C-Info和密码键盘系统当前所处阶段Stage;其中,密码键盘系统当前所处阶段Stage包括调试阶段和产品阶段;

Step2,安卓系统向密码键盘系统发送获取密码键盘系统相关参数的指令;然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的数据应答包;如果没有,则表明升级超时,安卓系统退出下载流程进入启动流程,即:返回Step1;如果有,则执行Step3;

其中,对于密码键盘系统,当接收到来自于安卓系统的获取密码键盘系统相关参数的指令时,密码键盘系统向安卓系统返回的数据应答包携带以下信息:当前所处阶段Stage和设备序号E-SN;其中,如果密码键盘系统当前没有被写入设备序号E-SN,则设备序号E-SN为空;

Step3,安卓系统向密码键盘系统发送芯片参数数据包;然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的数据应答包;如果没有,则表明升级超时,安卓系统退出下载流程进入启动流程,即:返回Step1;如果有,则执行Step4;

其中,安卓系统向密码键盘系统发送的芯片参数数据包,包括:需写入的序列号E–SN、本阶段的启动等待延时E–Time、flash加扰配置和RSA公钥号;其中,需写入的序列号E–SN是指:如果Step2接收到的设备序号E-SN为空,则需写入的序列号E–SN为向密码键盘系统写入的用于对密码键盘系统唯一标识的序列号E–SN;如果Step2接收到的设备序号E-SN不为空,则需写入的序列号E–SN为空;

flash加扰配置为:配置对密码键盘系统的flash是否进行加扰操作;

Step4,安卓系统向密码键盘系统发送固件信息数据包;然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的数据应答包;如果没有,则表明升级超时,安卓系统退出下载流程进入启动流程,即:返回Step1;如果有,则执行Step5;

其中,安卓系统向密码键盘系统发送的固件信息数据包,包括:

Refresh参数,含义为:本次下载是否刷新Flash扰码,即:用于对密码键盘系统的flash进行配置,如果Step3中flash加扰配置为需要对flash进行加扰操作,则Refresh参数代表需要刷新Flash扰码;否则,不需要刷新Flash扰码;

Erase参数,含义为:需要对密码键盘系统的flash擦除的flash区域;

F-Protect参数,含义为:启动密码键盘系统时,flash区域中的只读锁定的区域;

F-Valid参数,含义为:固件数据包文件头结构有效;其中,固件数据包是指Step5中需要发送给密码键盘系统进行固件升级的固件数据包;

sg-Start参数,含义为:固件数据包的起始位置;

sg-Len参数,含义为:固件数据包的长度;

sg-Ver参数,含义为:升级后的程序文件版本;

sg-Opt参数,含义为:使用的HASH选项;

sg-Hash参数,含义为:固件数据包的的HASH校验值;

sg-Crc32参数,含义为:固件数据包的的CRC32校验值;

密码键盘系统接收到来自于安卓系统的固件信息数据包后,根据固件信息数据包的内容,执行相应操作,包括:

如果Refresh参数为需要刷新Flash扰码,则密码键盘系统刷新Flash扰码;

根据Erase参数,密码键盘系统将对应的flash区域擦除;

根据F-Protect参数,密码键盘系统将对应的flash区域只读锁定;

读取F-Valid参数,然后,根据sg-Start参数、sg-Len参数、sg-Hash参数和sg-Crc32参数,密码键盘系统获得固件数据包的起始位置、长度、HASH校验值和CRC32校验值;

Step5,安卓系统向密码键盘系统发送固件数据包;然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的升级成功应答;如果没有,则表明升级超时,安卓系统退出下载流程进入启动流程,即:返回Step1;如果有,则表明密码键盘系统升级成功,结束流程;

其中,安卓系统向密码键盘系统发送的固件数据包,包括:

F-Unlock参数:写入固件数据包时,密码键盘系统的Flash对应的只读寄存器的值,即:操作flash前需解除只读保护;

F-Addr参数:表示固件数据包的起始地址;

F-Data参数:表示固件数据包的具体内容;

其中,在固件数据包超过1K时,安卓系统需分块发送固件数据包,直至分块全部发送完成;

密码键盘系统接收到来自于安卓系统的固件数据包后,根据固件数据包的内容,执行相应操作,包括:

根据F-Unlock参数,密码键盘系统将flash的对应区域解除只读保护;

根据F-Addr参数和F-Data参数,定位到固件数据包的具体内容;然后,根据Step4的sg-Start参数、sg-Len参数、sg-Hash参数和sg-Crc32参数,对固件数据包进行校验,如果校验通过,则将固件数据包写入到Flash对应区域,执行Flash,完成对密码键盘系统的固件升级。

本发明提供的一种智能设备安卓系统对密码键盘系统固件升级的方法具有以下优点:

本发明提供的智能设备安卓系统对密码键盘系统固件升级的方法,智能设备的安卓系统通过内部串口通信方式,对密码键盘系统完成固件升级,解决了传统PC端对密码键盘系统进行固件升级所具有的安全问题,本发明提高了对密码键盘系统固件升级的安全性。

附图说明

图1为本发明提供的一种智能设备安卓系统对密码键盘系统固件升级的方法的流程示意图。

具体实施方式

为了使本发明所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

本发明提供的智能设备安卓系统对密码键盘系统固件升级的方法,智能设备的安卓系统通过内部串口通信方式,对密码键盘系统完成固件升级,解决了传统PC端对密码键盘系统进行固件升级所具有的安全问题,本发明提高了对密码键盘系统固件升级的安全性。

参考图1,本发明提供的一种智能设备安卓系统对密码键盘系统固件升级的方法,包括以下步骤:

步骤F1,智能设备包括安卓系统和密码键盘系统;其中,安卓系统可称为android系统,密码键盘系统可称为Dock系统。在智能设备内部,使安卓系统和密码键盘系统直接通过串口硬件进行连接;

步骤F2,智能设备的安卓系统,采用内部串口通信方式,对密码键盘系统完成固件升级。

步骤F2具体包括:

预先定义安卓系统和密码键盘系统进行通信的数据包结构;所述数据包结构包括五个字段,分别为:Direction字段、Step字段、Len字段、Content字段和CRC16字段;

所述Direction字段用于标识传输方向,其中,Host表示由安卓系统发往密码键盘系统;Chip表示由密码键盘系统发往安卓系统;

Step字段表示下载交互步骤编号,共分为五个步骤,顺次进行;

Len字段表示数据包长度;

Content字段用于存放数据包的内容;

CRC16字段为数据包的CRC校验字段;

固件升级过程包括Step1-Step5,因此,密码键盘系统下载固件数据包流程共分为5步,分别标记为Step1、Step2、Step3、Step4、Step5。其中Step1、2为下载建立连接过程数据包,Step1、2超时,将导致芯片退出下载流程进入启动流程。Step3为芯片参数数据包,需要升级到产品阶段时,需在Step3中携带RSA2048公钥、产品阶段的配置信息。Step4为固件信息数据包,用于向芯片传递固件信息。Step5为固件数据包(固件超过1K时,分块下载),用于传递固件程序数据。

Step1,当安卓系统需要对密码键盘系统进行固件升级时,安卓系统持续向密码键盘系统发送开始进行固件升级的指令;

例如,安卓系统持续发送0x7F,向密码键盘系统表明需要下载固件数据包进行升级。密码键盘系统连续收到10个正确的0x7F后,回复数据应答包。

然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的数据应答包;如果没有,则下载超时,表明密码键盘系统固件升级失败,结束流程;如果有,则执行Step2;

其中,对于密码键盘系统,当接收到来自于安卓系统的固件升级的指令时,密码键盘系统向安卓系统返回的数据应答包携带以下信息:

Direction字段标识从密码键盘系统发往安卓系统;

Step字段为Step1;

Content字段携带有密码键盘系统的芯片序号C-SN、调试阶段的启动等待时间C-Time、调试阶段参数信息C-Info和密码键盘系统当前所处阶段Stage;其中,密码键盘系统当前所处阶段Stage包括调试阶段和产品阶段;

具体的,密码键盘系统的BootLoader将芯片(为密码键盘系统的芯片)生命周期划分为4个阶段,每一阶段只可向相邻下一阶段升级,不可回退(写入OTP,不可擦除和重写)。

1.测试阶段:用于芯片厂商对芯片进行检测。此阶段芯片存储器(OTP、FLASH、RAM)处于初始状态,芯片生产厂商可以下载程序测试芯片及外围接口,此阶段不设保护。芯片通过电路测试和性能测试后,在OTP中打入质检测试标记、注入SN(唯一序号)。芯片进入下一阶段(调试阶段)。

2.调试阶段:用于设备厂商对芯片的软硬件调试。调试阶段设备厂商可能会频繁下载调试固件,同时芯片尚未成为成熟产品,所以对该阶段只提供基本保护(保护芯片身份信息:SN、测试标记)。当开发完成后,设备厂商向芯片注入RSA公钥(用于下载认证和签名),同时可根据OTP中版本区域值,对固件版本进行管理。注入RSA公钥后,芯片进入产品阶段。

3.产品阶段:芯片与其它软硬件结合,以终端产品形式供用户使用。此阶段芯片工作于用实际产品环境中,根据安全配置,设备厂商可对芯片固件程序进行更新升级(需验证签名)。

4.结束:芯片硬件达到使用寿命。

Step2,安卓系统向密码键盘系统发送获取密码键盘系统相关参数的指令;然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的数据应答包;如果没有,则表明升级超时,安卓系统退出下载流程进入启动流程,即:返回Step1;如果有,则执行Step3;

其中,对于密码键盘系统,当接收到来自于安卓系统的获取密码键盘系统相关参数的指令时,密码键盘系统向安卓系统返回的数据应答包携带以下信息:当前所处阶段Stage和设备序号E-SN;其中,如果密码键盘系统当前没有被写入设备序号E-SN,则设备序号E-SN为空;其中,当前所处阶段Stage是指调试阶段或产品阶段。设备序号E-SN为用于唯一标识密码键盘系统的序列号。

Step3,安卓系统向密码键盘系统发送芯片参数数据包;然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的数据应答包;如果没有,则表明升级超时,安卓系统退出下载流程进入启动流程,即:返回Step1;如果有,则执行Step4;

其中,安卓系统向密码键盘系统发送的芯片参数数据包,包括:需写入的序列号E–SN、本阶段的启动等待延时E–Time、flash加扰配置和RSA公钥号;其中,需写入的序列号E–SN是指:如果Step2接收到的设备序号E-SN为空,则需写入的序列号E–SN为向密码键盘系统写入的用于对密码键盘系统唯一标识的序列号E–SN;如果Step2接收到的设备序号E-SN不为空,则需写入的序列号E–SN为空;

flash加扰配置为:配置对密码键盘系统的flash是否进行加扰操作;

RSA公钥号是指:密码键盘系统执行升级后的程序时,首先通过RSA公钥号和自身已有的私钥号进行解密,然后,再运行升级后的程序。

Step4,安卓系统向密码键盘系统发送固件信息数据包;然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的数据应答包;如果没有,则表明升级超时,安卓系统退出下载流程进入启动流程,即:返回Step1;如果有,则执行Step5;

其中,安卓系统向密码键盘系统发送的固件信息数据包,包括:

Refresh参数,含义为:本次下载是否刷新Flash扰码,即:用于对密码键盘系统的flash进行配置,如果Step3中flash加扰配置为需要对flash进行加扰操作,则Refresh参数代表需要刷新Flash扰码;否则,不需要刷新Flash扰码;

Erase参数,含义为:需要对密码键盘系统的flash擦除的flash区域;

F-Protect参数,含义为:启动密码键盘系统时,flash区域中的只读锁定的区域;

F-Valid参数,含义为:固件数据包文件头结构有效;其中,固件数据包是指Step5中需要发送给密码键盘系统进行固件升级的固件数据包;

sg-Start参数,含义为:固件数据包的起始位置;

sg-Len参数,含义为:固件数据包的长度;

sg-Ver参数,含义为:升级后的程序文件版本;

sg-Opt参数,含义为:使用的HASH选项;

sg-Hash参数,含义为:固件数据包的的HASH校验值;

sg-Crc32参数,含义为:固件数据包的的CRC32校验值;

密码键盘系统接收到来自于安卓系统的固件信息数据包后,根据固件信息数据包的内容,执行相应操作,包括:

如果Refresh参数为需要刷新Flash扰码,则密码键盘系统刷新Flash扰码;

根据Erase参数,密码键盘系统将对应的flash区域擦除;

根据F-Protect参数,密码键盘系统将对应的flash区域只读锁定;

读取F-Valid参数,然后,根据sg-Start参数、sg-Len参数、sg-Hash参数和sg-Crc32参数,密码键盘系统获得固件数据包的起始位置、长度、HASH校验值和CRC32校验值;

Step5,安卓系统向密码键盘系统发送固件数据包;然后,安卓系统判断是否在设定时间内接收到来自于密码键盘系统的升级成功应答;如果没有,则表明升级超时,安卓系统退出下载流程进入启动流程,即:返回Step1;如果有,则表明密码键盘系统升级成功,结束流程;

其中,安卓系统向密码键盘系统发送的固件数据包,包括:

F-Unlock参数:写入固件数据包时,密码键盘系统的Flash对应的只读寄存器的值,即:操作flash前需解除只读保护;

F-Addr参数:表示固件数据包的起始地址;

F-Data参数:表示固件数据包的具体内容;

其中,在固件数据包超过1K时,安卓系统需分块发送固件数据包,直至分块全部发送完成;

密码键盘系统接收到来自于安卓系统的固件数据包后,根据固件数据包的内容,执行相应操作,包括:

根据F-Unlock参数,密码键盘系统将flash的对应区域解除只读保护;

根据F-Addr参数和F-Data参数,定位到固件数据包的具体内容;然后,根据Step4的sg-Start参数、sg-Len参数、sg-Hash参数和sg-Crc32参数,对固件数据包进行校验,如果校验通过,则将固件数据包写入到Flash对应区域,执行Flash,完成对密码键盘系统的固件升级。

综上所述,本发明提供的一种智能设备安卓系统对密码键盘系统固件升级的方法具有以下优点:

本发明提供的智能设备安卓系统对密码键盘系统固件升级的方法,智能设备的安卓系统通过内部串口通信方式,对密码键盘系统完成固件升级,解决了传统PC端对密码键盘系统进行固件升级所具有的安全问题,本发明提高了对密码键盘系统固件升级的安全性。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

相关技术
  • 一种智能设备安卓系统对密码键盘系统固件升级的方法
  • 安卓系统下的固件升级方法及系统
技术分类

06120113023377