CN106406967A - 一种基于stm32的usb在线升级方法及系统 - Google Patents
一种基于stm32的usb在线升级方法及系统 Download PDFInfo
- Publication number
- CN106406967A CN106406967A CN201611004812.9A CN201611004812A CN106406967A CN 106406967 A CN106406967 A CN 106406967A CN 201611004812 A CN201611004812 A CN 201611004812A CN 106406967 A CN106406967 A CN 106406967A
- Authority
- CN
- China
- Prior art keywords
- usb
- app
- information
- usb host
- descriptor
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明提供一种STM32的USB在线升级方法,使用预烧工具将HID的boot程序烧写到芯片的程序加载区中;boot程序将USB设备初始化为HID高速设备;将USB设备与USB主机连接,USB主机枚举USB设备;USB设备从USB主机接收APP程序数据包,并将APP程序数据包存储到USB设备的数据备份区中;重启USB设备,将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序。本发明优点:通过该方法可以实现利用集成电路本身带有的USB接口进行程序更新和维护,能够提高STM32的生产效率、降低生产成本以及提高升级成功率。
Description
技术领域
本发明涉及通信领域,特别涉及一种STM32的USB在线升级方法及系统。
背景技术
目前,STM32F103RCT6只能支持ICP(在电路编程)下载(jtag方式下载)和ISP(在系统编程)下载方式(串口ISP下载模式),这在大批量生产和维护的情况下及其不方便,生产效率也不高。同时,由于ICP下载程序需要使用到JTAG(联合测试)工具,这对售后或用户更新程序相当的不方便;而ISP下载程序需要使用到串口,由于现在新的个人计算机有很多都没有配置串口功能,因此更新程序也相当的不方便。
发明内容
本发明要解决的技术问题之一,在于提供一种STM32的USB在线升级方法,该方法可以实现利用集成电路本身带有的USB接口进行程序更新和维护。
本发明是这样实现技术问题之一的:一种STM32的USB在线升级方法,所述方法包括如下步骤:
步骤1、使用预烧工具将HID的boot程序烧写到芯片的程序加载区中;
步骤2、系统启动后,boot程序将USB设备初始化为HID高速设备;
步骤3、将USB设备与USB主机连接,USB主机枚举USB设备;
步骤4、枚举成功后,USB设备从USB主机接收APP程序数据包,并将APP程序数据包存储到USB设备的数据备份区中;
步骤5、重启USB设备,将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序。
进一步地,所述步骤2具体为:
启动系统,运行boot程序,初始化时钟,判断是否进入更新程序模式,若是,则将USB设备初始化为HID高速设备,并进入步骤3;
若否,则判断APP数据区中有无APP程序,若无,则将USB设备初始化为HID高速设备,并进入步骤3;
若有,则校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP数据区,并重启USB设备运行APP程序。
进一步地,在所述步骤3中,所述“将USB设备与USB主机连接”具体为:
将USB设备与USB主机连接,并在USB设备的数据线上接一1.5K的上拉电阻,使USB设备与USB主机之间产生3V电压;USB主机的集线器在检测到3V电压后,告知USB主机有USB设备接入,USB主机检测并连接USB设备。
进一步地,在所述步骤3中,所述“USB主机枚举USB设备”具体为:
USB主机对USB设备进行复位,复位后USB设备用端点0来传输数据;USB主机向USB设备发送获取设备描述符指令,USB设备收到指令后,通过端点0将设备描述符信息返回给USB主机,且若端点0中包含完整的18字节设备描述符信息,则将完整的设备描述符信息返回给USB主机;而若端点0中包含的设备描述符信息小于18字节,则将已包含的设备描述符信息返回给USB主机;其中,完整的设备描述符信息包括USB协议版本信息、厂家VID信息、数据包大小信息以及PID信息;
USB主机对USB设备进行再复位,并分配一唯一地址给USB设备作为新地址;USB主机再次向USB设备发送获取设备描述符指令,USB设备收到指令后,若端点0中包含完整的18字节设备描述符信息,则通过新地址将完整的18字节设备描述符信息返回给USB主机;若端点0中包含的设备描述符信息小于18字节,则通过新地址将已包含的设备描述符信息返回给USB主机,并继续向USB设备发送获取设备描述符指令,直至将完整的18字节设备描述符信息均返回给USB主机;
获取完设备描述符信息后,USB主机向USB设备发送获取配置描述符指令,USB设备收到指令后,通过新地址将配置描述符信息返回给USB主机;其中,配置描述符信息包括设备类型信息、总线供电方式信息、数据包大小信息、端点传输及接收数据的信息;
获取完配置描述符信息后,USB主机向USB设备发送获取报告描述符指令,USB设备收到指令后,通过新地址将报告描述符返回给USB主机,获取的报告描述符的数据信息包括设备类型信息、报告ID信息、数据位数信息、数据长度信息、逻辑最大值信息以及逻辑最小值信息。
进一步地,在所述步骤5中,所述“将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序”具体为:
将APP程序数据包从数据备份区拷贝到APP数据区,并校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP应用区,并重启USB设备运行APP程序。
本发明要解决的技术问题之二,在于提供一种STM32的USB在线升级系统,该系统可以实现利用集成电路本身带有的USB接口进行程序更新和维护。
本发明是这样实现技术问题之二的:一种STM32的USB在线升级系统,所述系统包括预烧模块、初始化模块、设备枚举模块、数据包接收模块以及运行模块;
所述预烧模块,用于使用预烧工具将HID的boot程序烧写到芯片的程序加载区中;
所述初始化模块,用于系统启动后,boot程序将USB设备初始化为HID高速设备;
所述设备枚举模块,用于将USB设备与USB主机连接,USB主机枚举USB设备;
所述数据包接收模块,用于枚举成功后,USB设备从USB主机接收APP程序数据包,并将APP程序数据包存储到USB设备的数据备份区中;
所述运行模块,用于重启USB设备,将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序。
进一步地,所述初始化模块具体为:
启动系统,运行boot程序,初始化时钟,判断是否进入更新程序模式,若是,则将USB设备初始化为HID高速设备,并进入所述设备枚举模块;
若否,则判断APP数据区中有无APP程序,若无,则将USB设备初始化为HID高速设备,并进入所述设备枚举模块;
若有,则校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP数据区,并重启USB设备运行APP程序。
进一步地,在所述设备枚举模块中,所述“将USB设备与USB主机连接”具体为:
将USB设备与USB主机连接,并在USB设备的数据线上接一1.5K的上拉电阻,使USB设备与USB主机之间产生3V电压;USB主机的集线器在检测到3V电压后,告知USB主机有USB设备接入,USB主机检测并连接USB设备。
进一步地,在所述设备枚举模块中,所述“USB主机枚举USB设备”具体为:
USB主机对USB设备进行复位,复位后USB设备用端点0来传输数据;USB主机向USB设备发送获取设备描述符指令,USB设备收到指令后,通过端点0将设备描述符信息返回给USB主机,且若端点0中包含完整的18字节设备描述符信息,则将完整的设备描述符信息返回给USB主机;而若端点0中包含的设备描述符信息小于18字节,则将已包含的设备描述符信息返回给USB主机;其中,完整的设备描述符信息包括USB协议版本信息、厂家VID信息、数据包大小信息以及PID信息;
USB主机对USB设备进行再复位,并分配一唯一地址给USB设备作为新地址;USB主机再次向USB设备发送获取设备描述符指令,USB设备收到指令后,若端点0中包含完整的18字节设备描述符信息,则通过新地址将完整的18字节设备描述符信息返回给USB主机;若端点0中包含的设备描述符信息小于18字节,则通过新地址将已包含的设备描述符信息返回给USB主机,并继续向USB设备发送获取设备描述符指令,直至将完整的18字节设备描述符信息均返回给USB主机;
获取完设备描述符信息后,USB主机向USB设备发送获取配置描述符指令,USB设备收到指令后,通过新地址将配置描述符信息返回给USB主机;其中,配置描述符信息包括设备类型信息、总线供电方式信息、数据包大小信息、端点传输及接收数据的信息;
获取完配置描述符信息后,USB主机向USB设备发送获取报告描述符指令,USB设备收到指令后,通过新地址将报告描述符返回给USB主机,获取的报告描述符的数据信息包括设备类型信息、报告ID信息、数据位数信息、数据长度信息、逻辑最大值信息以及逻辑最小值信息。
进一步地,在所述运行模块中,所述“将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序”具体为:
将APP程序数据包从数据备份区拷贝到APP数据区,并校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP应用区,并重启USB设备运行APP程序。
本发明具有如下优点:1、由于USB接口的传输速度比串口快,电路易于实现,有助于实现电路的简化,可以大大提高STM32的生产效率;2、由于USB设备的集成电路本身就带有USB接口,不需要在外部设置USB芯片转换,可以降低生产成本;3、在实施时,由于将程序数据包先存储至数据备份区,当要运行时再拷贝至APP数据区,并对APP程序进行校验后才运行程序,可以提高升级成功率;4、售后可以直接通过个人计算机的USB接口进行更新维护,因此售后维护十分方便。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1为本发明一种STM32的USB在线升级方法的一较佳实施例的执行流程图。
图2为本发明一种STM32的USB在线升级系统的一较佳实施例的结构框图。
具体实施方式
请参照图1所示,本发明一种STM32的USB在线升级方法的一较佳实施例,所述方法包括如下步骤:
步骤1、使用预烧工具将HID的boot程序烧写到芯片的程序加载区中;在具体实施时,需要将boot程序烧到STM32F103RCT6的0x08000000区,因为0x08000000区是flash启动时的程序加载区。
步骤2、系统启动后,boot程序将USB设备初始化为HID高速设备;该步骤2具体为:
集成电路上电成功后,启动系统(程序从0x08000000区这个地址开始启动),运行boot程序,初始化时钟,判断是否进入更新程序模式(ISP模式),若是,则将USB设备初始化为HID高速设备,并进入步骤3;
若否,则判断APP数据区中有无APP程序,若无,则将USB设备初始化为HID高速设备,并进入步骤3;
若有,则校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP数据区,并重启USB设备运行APP程序,即如果CRC值错误,则说明程序出现异常,此时就要重新拷贝APP程序数据包。
步骤3、将USB设备与USB主机连接,USB主机枚举USB设备。枚举就是从设备读取各种描述符信息,以知道要加载什么类型的驱动,如何进行通信。USB HID高速设备采用的是中断传输,中断传输是一种保证查询频率的传输,中断端点在端点描述符中要报告它的查询间隔,USB主机可以保证在小于这个时间间隔的周期内安排一次传输,中断传输通常是在数据量不大,但对时间要求严格的地方使用;当然,中断传输也可以用来不断的检测某个状态,当条件满足后使用批量传输,以保证数据的实时,准确性。
在所述步骤3中,所述“将USB设备与USB主机连接”具体为:
将USB设备与USB主机连接,并在USB设备的数据线上接一1.5K的上拉电阻,使USB设备与USB主机之间产生3V电压,由于USB正常有四根线,分别为VCC电源线、D+数据正、D-数据负和GND接地线,在USB主机的集线器上,集线器的D+和D-都通过一个15k的电阻接地,在正常情况下,集线器USB口悬空,D+和D-均为低电平;当在USB设备的数据线上接一1.5K的上拉电阻后(对于全速或者高速设备接在D+上,低速设备接在D-),USB设备与USB主机之间就可以产生3V电压。USB主机的集线器在检测到3V电压后,会判断为高电平,并告知USB主机有USB设备接入,USB主机检测并连接USB设备。
在所述步骤3中,所述“USB主机枚举USB设备”具体为:
USB主机对USB设备进行复位,复位后USB设备用端点0来传输数据;USB主机向USB设备发送获取设备描述符指令(80 06 00 01 00 00 12 00),USB设备收到指令后,通过端点0将设备描述符信息返回给USB主机,且若端点0中包含完整的18字节设备描述符信息,则将完整的设备描述符信息返回给USB主机;而若端点0中包含的设备描述符信息小于18字节,则将已包含的设备描述符信息返回给USB主机;例如,有些USB设备的端点0大小不足18字节(至少8字节),在这种情况下USB主机就只发送一次指令获取,多余的数据将不再发送指令获取,也就是第一次获取设备描述符时,只需返回一次数据,不要再等待USB主机继续获取剩余的数据,最小的设备描述符信息至少包含8字节的数据包大小信息。其中,完整的设备描述符信息包括USB协议版本信息、厂家VID信息、数据包大小信息以及PID信息;USB主机对USB设备进行第一次复位后,就可以知道USB设备的端点0一次可以传输的最长字节数。
USB主机对USB设备进行再复位,并分配一唯一地址给USB设备作为新地址,这样,USB设备有了唯一地址,就可以利用唯一地址跟USB主机进行数据交互了;USB主机再次向USB设备发送获取设备描述符指令,USB设备收到指令后,若端点0中包含完整的18字节设备描述符信息,则通过新地址将完整的18字节设备描述符信息返回给USB主机;若端点0中包含的设备描述符信息小于18字节,则通过新地址将已包含的设备描述符信息返回给USB主机,并继续向USB设备发送获取设备描述符指令,直至将完整的18字节设备描述符信息均返回给USB主机;在USB主机对USB设备进行再次复位后,就可以确定数据传输的唯一地址,并可以知道USB设备的完整描述符信息。
获取完设备描述符信息后,USB主机向USB设备发送获取配置描述符指令,USB设备收到指令后,通过新地址将配置描述符信息返回给USB主机,配置描述符信息的总长度为9字节;其中,配置描述符信息包括设备类型信息、总线供电方式信息、数据包大小信息、端点传输及接收数据的信息;
获取完配置描述符信息后,USB主机向USB设备发送获取报告描述符指令,USB设备收到指令后,通过新地址将报告描述符返回给USB主机,获取的报告描述符的数据信息包括设备类型信息、报告ID信息、数据位数信息(一般为8bit一个字节)、数据长度信息、逻辑最大值信息以及逻辑最小值信息。报告描述符获取完成后,整个枚举过程也就成功了,此时就可以按HID高速设备的传输方式来进行数据通信了。
步骤4、枚举成功后,USB设备从USB主机接收APP程序数据包,并将APP程序数据包存储到USB设备的数据备份区中;USB设备在接收APP程序数据包时,每接收一个数据包,就给USB主机应答一次接收正常,在接收完完整的APP程序数据包后,就应答USB主机接收完成。
步骤5、重启USB设备,将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序;
在所述步骤5中,所述“将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序”具体为:
将APP程序数据包从数据备份区拷贝到APP数据区,并校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP应用区,并重启USB设备运行APP程序,即如果CRC值错误,则说明程序出现异常,此时就要重新拷贝APP程序数据包。
请参照图2所示,本发明一种STM32的USB在线升级系统的一较佳实施例,所述系统包括预烧模块、初始化模块、设备枚举模块、数据包接收模块以及运行模块;
所述预烧模块,用于使用预烧工具将HID的boot程序烧写到芯片的程序加载区中;在具体实施时,需要将boot程序烧到STM32F103RCT6的0x08000000区,因为0x08000000区是flash启动时的程序加载区。
所述初始化模块,用于系统启动后,boot程序将USB设备初始化为HID高速设备;该初始化模块具体为:
集成电路上电成功后,启动系统(程序从0x08000000区这个地址开始启动),运行boot程序,初始化时钟,判断是否进入更新程序模式(ISP模式),若是,则将USB设备初始化为HID高速设备,并进入所述设备枚举模块;
若否,则判断APP数据区中有无APP程序,若无,则将USB设备初始化为HID高速设备,并进入所述设备枚举模块;
若有,则校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP数据区,并重启USB设备运行APP程序,即如果CRC值错误,则说明程序出现异常,此时就要重新拷贝APP程序数据包。
所述设备枚举模块,用于将USB设备与USB主机连接,USB主机枚举USB设备。枚举就是从设备读取各种描述符信息,以知道要加载什么类型的驱动,如何进行通信。USB HID高速设备采用的是中断传输,中断传输是一种保证查询频率的传输,中断端点在端点描述符中要报告它的查询间隔,USB主机可以保证在小于这个时间间隔的周期内安排一次传输,中断传输通常是在数据量不大,但对时间要求严格的地方使用;当然,中断传输也可以用来不断的检测某个状态,当条件满足后使用批量传输,以保证数据的实时,准确性。
在所述设备枚举模块中,所述“将USB设备与USB主机连接”具体为:
将USB设备与USB主机连接,并在USB设备的数据线上接一1.5K的上拉电阻,使USB设备与USB主机之间产生3V电压,由于USB正常有四根线,分别为VCC电源线、D+数据正、D-数据负和GND接地线,在USB主机的集线器上,集线器的D+和D-都通过一个15k的电阻接地,在正常情况下,集线器USB口悬空,D+和D-均为低电平;当在USB设备的数据线上接一1.5K的上拉电阻后(对于全速或者高速设备接在D+上,低速设备接在D-),USB设备与USB主机之间就可以产生3V电压。USB主机的集线器在检测到3V电压后,会判断为高电平,并告知USB主机有USB设备接入,USB主机检测并连接USB设备。
在所述设备枚举模块中,所述“USB主机枚举USB设备”具体为:
USB主机对USB设备进行复位,复位后USB设备用端点0来传输数据;USB主机向USB设备发送获取设备描述符指令(80 06 00 01 00 00 12 00),USB设备收到指令后,通过端点0将设备描述符信息返回给USB主机,且若端点0中包含完整的18字节设备描述符信息,则将完整的设备描述符信息返回给USB主机;而若端点0中包含的设备描述符信息小于18字节,则将已包含的设备描述符信息返回给USB主机;例如,有些USB设备的端点0大小不足18字节(至少8字节),在这种情况下USB主机就只发送一次指令获取,多余的数据将不再发送指令获取,也就是第一次获取设备描述符时,只需返回一次数据,不要再等待USB主机继续获取剩余的数据,最小的设备描述符信息至少包含8字节的数据包大小信息。其中,完整的设备描述符信息包括USB协议版本信息、厂家VID信息、数据包大小信息以及PID信息;USB主机对USB设备进行第一次复位后,就可以知道USB设备的端点0一次可以传输的最长字节数。
USB主机对USB设备进行再复位,并分配一唯一地址给USB设备作为新地址,这样,USB设备有了唯一地址,就可以利用唯一地址跟USB主机进行数据交互了;USB主机再次向USB设备发送获取设备描述符指令,USB设备收到指令后,若端点0中包含完整的18字节设备描述符信息,则通过新地址将完整的18字节设备描述符信息返回给USB主机;若端点0中包含的设备描述符信息小于18字节,则通过新地址将已包含的设备描述符信息返回给USB主机,并继续向USB设备发送获取设备描述符指令,直至将完整的18字节设备描述符信息均返回给USB主机;在USB主机对USB设备进行再次复位后,就可以确定数据传输的唯一地址,并可以知道USB设备的完整描述符信息。
获取完设备描述符信息后,USB主机向USB设备发送获取配置描述符指令,USB设备收到指令后,通过新地址将配置描述符信息返回给USB主机,配置描述符信息的总长度为9字节;其中,配置描述符信息包括设备类型信息、总线供电方式信息、数据包大小信息、端点传输及接收数据的信息;
获取完配置描述符信息后,USB主机向USB设备发送获取报告描述符指令,USB设备收到指令后,通过新地址将报告描述符返回给USB主机,获取的报告描述符的数据信息包括设备类型信息、报告ID信息、数据位数信息(一般为8bit一个字节)、数据长度信息、逻辑最大值信息以及逻辑最小值信息。报告描述符获取完成后,整个枚举过程也就成功了,此时就可以按HID高速设备的传输方式来进行数据通信了。
所述数据包接收模块,用于枚举成功后,USB设备从USB主机接收APP程序数据包,并将APP程序数据包存储到USB设备的数据备份区中;USB设备在接收APP程序数据包时,每接收一个数据包,就给USB主机应答一次接收正常,在接收完完整的APP程序数据包后,就应答USB主机接收完成;
所述运行模块,用于重启USB设备,将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序;
在所述运行模块中,所述“将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序”具体为:
将APP程序数据包从数据备份区拷贝到APP数据区,并校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP应用区,并重启USB设备运行APP程序,即如果CRC值错误,则说明程序出现异常,此时就要重新拷贝APP程序数据包。
本发明具有如下优点:1、由于USB接口的传输速度比串口快,电路易于实现,有助于实现电路的简化,可以大大提高STM32的生产效率;2、由于USB设备的集成电路本身就带有USB接口,不需要在外部设置USB芯片转换,可以降低生产成本;3、在实施时,由于将程序数据包先存储至数据备份区,当要运行时再拷贝至APP数据区,并对APP程序进行校验后才运行程序,可以提高升级成功率;4、售后可以直接通过个人计算机的USB接口进行更新维护,因此售后维护十分方便。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (10)
1.一种STM32的USB在线升级方法,其特征在于:包括如下步骤:
步骤1、使用预烧工具将HID的boot程序烧写到芯片的程序加载区中;
步骤2、系统启动后,boot程序将USB设备初始化为HID高速设备;
步骤3、将USB设备与USB主机连接,USB主机枚举USB设备;
步骤4、枚举成功后,USB设备从USB主机接收APP程序数据包,并将APP程序数据包存储到USB设备的数据备份区中;
步骤5、重启USB设备,将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序。
2.根据权利要求1所述的一种STM32的USB在线升级方法,其特征在于:所述步骤2具体为:
启动系统,运行boot程序,初始化时钟,判断是否进入更新程序模式,若是,则将USB设备初始化为HID高速设备,并进入步骤3;
若否,则判断APP数据区中有无APP程序,若无,则将USB设备初始化为HID高速设备,并进入步骤3;
若有,则校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP数据区,并重启USB设备运行APP程序。
3.根据权利要求1所述的一种STM32的USB在线升级方法,其特征在于:在所述步骤3中,所述“将USB设备与USB主机连接”具体为:
将USB设备与USB主机连接,并在USB设备的数据线上接一1.5K的上拉电阻,使USB设备与USB主机之间产生3V电压;USB主机的集线器在检测到3V电压后,告知USB主机有USB设备接入,USB主机检测并连接USB设备。
4.根据权利要求1所述的一种STM32的USB在线升级方法,其特征在于:在所述步骤3中,所述“USB主机枚举USB设备”具体为:
USB主机对USB设备进行复位,复位后USB设备用端点0来传输数据;USB主机向USB设备发送获取设备描述符指令,USB设备收到指令后,通过端点0将设备描述符信息返回给USB主机,且若端点0中包含完整的18字节设备描述符信息,则将完整的设备描述符信息返回给USB主机;而若端点0中包含的设备描述符信息小于18字节,则将已包含的设备描述符信息返回给USB主机;其中,完整的设备描述符信息包括USB协议版本信息、厂家VID信息、数据包大小信息以及PID信息;
USB主机对USB设备进行再复位,并分配一唯一地址给USB设备作为新地址;USB主机再次向USB设备发送获取设备描述符指令,USB设备收到指令后,若端点0中包含完整的18字节设备描述符信息,则通过新地址将完整的18字节设备描述符信息返回给USB主机;若端点0中包含的设备描述符信息小于18字节,则通过新地址将已包含的设备描述符信息返回给USB主机,并继续向USB设备发送获取设备描述符指令,直至将完整的18字节设备描述符信息均返回给USB主机;
获取完设备描述符信息后,USB主机向USB设备发送获取配置描述符指令,USB设备收到指令后,通过新地址将配置描述符信息返回给USB主机;其中,配置描述符信息包括设备类型信息、总线供电方式信息、数据包大小信息、端点传输及接收数据的信息;
获取完配置描述符信息后,USB主机向USB设备发送获取报告描述符指令,USB设备收到指令后,通过新地址将报告描述符返回给USB主机,获取的报告描述符的数据信息包括设备类型信息、报告ID信息、数据位数信息、数据长度信息、逻辑最大值信息以及逻辑最小值信息。
5.根据权利要求1所述的一种STM32的USB在线升级方法,其特征在于:在所述步骤5中,所述“将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序”具体为:
将APP程序数据包从数据备份区拷贝到APP数据区,并校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP应用区,并重启USB设备运行APP程序。
6.一种STM32的USB在线升级系统,其特征在于:所述系统包括预烧模块、初始化模块、设备枚举模块、数据包接收模块以及运行模块;
所述预烧模块,用于使用预烧工具将HID的boot程序烧写到芯片的程序加载区中;
所述初始化模块,用于系统启动后,boot程序将USB设备初始化为HID高速设备;
所述设备枚举模块,用于将USB设备与USB主机连接,USB主机枚举USB设备;
所述数据包接收模块,用于枚举成功后,USB设备从USB主机接收APP程序数据包,并将APP程序数据包存储到USB设备的数据备份区中;
所述运行模块,用于重启USB设备,将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序。
7.根据权利要求6所述的一种STM32的USB在线升级系统,其特征在于:所述初始化模块具体为:
启动系统,运行boot程序,初始化时钟,判断是否进入更新程序模式,若是,则将USB设备初始化为HID高速设备,并进入所述设备枚举模块;
若否,则判断APP数据区中有无APP程序,若无,则将USB设备初始化为HID高速设备,并进入所述设备枚举模块;
若有,则校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP数据区,并重启USB设备运行APP程序。
8.根据权利要求6所述的一种STM32的USB在线升级系统,其特征在于:在所述设备枚举模块中,所述“将USB设备与USB主机连接”具体为:
将USB设备与USB主机连接,并在USB设备的数据线上接一1.5K的上拉电阻,使USB设备与USB主机之间产生3V电压;USB主机的集线器在检测到3V电压后,告知USB主机有USB设备接入,USB主机检测并连接USB设备。
9.根据权利要求6所述的一种STM32的USB在线升级系统,其特征在于:在所述设备枚举模块中,所述“USB主机枚举USB设备”具体为:
USB主机对USB设备进行复位,复位后USB设备用端点0来传输数据;USB主机向USB设备发送获取设备描述符指令,USB设备收到指令后,通过端点0将设备描述符信息返回给USB主机,且若端点0中包含完整的18字节设备描述符信息,则将完整的设备描述符信息返回给USB主机;而若端点0中包含的设备描述符信息小于18字节,则将已包含的设备描述符信息返回给USB主机;其中,完整的设备描述符信息包括USB协议版本信息、厂家VID信息、数据包大小信息以及PID信息;
USB主机对USB设备进行再复位,并分配一唯一地址给USB设备作为新地址;USB主机再次向USB设备发送获取设备描述符指令,USB设备收到指令后,若端点0中包含完整的18字节设备描述符信息,则通过新地址将完整的18字节设备描述符信息返回给USB主机;若端点0中包含的设备描述符信息小于18字节,则通过新地址将已包含的设备描述符信息返回给USB主机,并继续向USB设备发送获取设备描述符指令,直至将完整的18字节设备描述符信息均返回给USB主机;
获取完设备描述符信息后,USB主机向USB设备发送获取配置描述符指令,USB设备收到指令后,通过新地址将配置描述符信息返回给USB主机;其中,配置描述符信息包括设备类型信息、总线供电方式信息、数据包大小信息、端点传输及接收数据的信息;
获取完配置描述符信息后,USB主机向USB设备发送获取报告描述符指令,USB设备收到指令后,通过新地址将报告描述符返回给USB主机,获取的报告描述符的数据信息包括设备类型信息、报告ID信息、数据位数信息、数据长度信息、逻辑最大值信息以及逻辑最小值信息。
10.根据权利要求6所述的一种STM32的USB在线升级系统,其特征在于:在所述运行模块中,所述“将APP程序数据包从数据备份区拷贝到APP数据区,并跳转至APP应用区运行APP程序”具体为:
将APP程序数据包从数据备份区拷贝到APP数据区,并校验APP程序的CRC值是否正确,若正确,则跳转至APP应用区运行APP程序;若错误,则从数据备份区拷贝存储的APP程序数据包至APP应用区,并重启USB设备运行APP程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611004812.9A CN106406967A (zh) | 2016-11-15 | 2016-11-15 | 一种基于stm32的usb在线升级方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611004812.9A CN106406967A (zh) | 2016-11-15 | 2016-11-15 | 一种基于stm32的usb在线升级方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106406967A true CN106406967A (zh) | 2017-02-15 |
Family
ID=59230813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611004812.9A Pending CN106406967A (zh) | 2016-11-15 | 2016-11-15 | 一种基于stm32的usb在线升级方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106406967A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107479915A (zh) * | 2017-08-03 | 2017-12-15 | 福建新大陆支付技术有限公司 | 一种通过u盘脱机升级pos设备固件补丁包的方法 |
CN109977044A (zh) * | 2019-03-27 | 2019-07-05 | 歌尔科技有限公司 | Usb设备枚举检测方法和系统及固件升级方法和系统 |
CN110830168A (zh) * | 2019-11-11 | 2020-02-21 | 飞天诚信科技股份有限公司 | 一种usb通讯的实现方法及装置 |
CN111580470A (zh) * | 2020-04-30 | 2020-08-25 | 苏州欧立通自动化科技有限公司 | 基于stm32f4的多功能运动控制方法 |
CN112416447A (zh) * | 2020-12-03 | 2021-02-26 | 深圳市国科亿道科技有限公司 | 一个usb端口实现多个复合功能设备的方法及复合设备 |
CN112947978A (zh) * | 2021-04-01 | 2021-06-11 | 深圳市斯尔顿科技有限公司 | 基于芯片usbhid升级固件的方法、终端设备及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251807A (zh) * | 2008-03-14 | 2008-08-27 | 四川长虹电器股份有限公司 | 升级机顶盒前面板可编程单片机的方法 |
CN102043751A (zh) * | 2010-06-29 | 2011-05-04 | 北京飞天诚信科技有限公司 | Usb设备识别主机操作系统的方法 |
CN103761112A (zh) * | 2011-12-30 | 2014-04-30 | 深圳市大富科技股份有限公司 | 一种车载多媒体装置及其控制方法 |
CN105550005A (zh) * | 2016-01-27 | 2016-05-04 | 南京异或科技有限公司 | 一种通过usb口进行调试升级的方法 |
-
2016
- 2016-11-15 CN CN201611004812.9A patent/CN106406967A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251807A (zh) * | 2008-03-14 | 2008-08-27 | 四川长虹电器股份有限公司 | 升级机顶盒前面板可编程单片机的方法 |
CN102043751A (zh) * | 2010-06-29 | 2011-05-04 | 北京飞天诚信科技有限公司 | Usb设备识别主机操作系统的方法 |
CN103761112A (zh) * | 2011-12-30 | 2014-04-30 | 深圳市大富科技股份有限公司 | 一种车载多媒体装置及其控制方法 |
CN105550005A (zh) * | 2016-01-27 | 2016-05-04 | 南京异或科技有限公司 | 一种通过usb口进行调试升级的方法 |
Non-Patent Citations (1)
Title |
---|
张胜鑫: "分布式电源并网中电能质量在线监测装置的开发与应用", 《中国优秀硕士学位论文全文数据库 工程科技II辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107479915A (zh) * | 2017-08-03 | 2017-12-15 | 福建新大陆支付技术有限公司 | 一种通过u盘脱机升级pos设备固件补丁包的方法 |
CN109977044A (zh) * | 2019-03-27 | 2019-07-05 | 歌尔科技有限公司 | Usb设备枚举检测方法和系统及固件升级方法和系统 |
CN110830168A (zh) * | 2019-11-11 | 2020-02-21 | 飞天诚信科技股份有限公司 | 一种usb通讯的实现方法及装置 |
CN110830168B (zh) * | 2019-11-11 | 2021-11-02 | 飞天诚信科技股份有限公司 | 一种usb通讯的实现方法及装置 |
US11663155B2 (en) | 2019-11-11 | 2023-05-30 | Feitian Technologies Co., Ltd. | Method and apparatus for realizing USB communication |
CN111580470A (zh) * | 2020-04-30 | 2020-08-25 | 苏州欧立通自动化科技有限公司 | 基于stm32f4的多功能运动控制方法 |
CN112416447A (zh) * | 2020-12-03 | 2021-02-26 | 深圳市国科亿道科技有限公司 | 一个usb端口实现多个复合功能设备的方法及复合设备 |
CN112947978A (zh) * | 2021-04-01 | 2021-06-11 | 深圳市斯尔顿科技有限公司 | 基于芯片usbhid升级固件的方法、终端设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106406967A (zh) | 一种基于stm32的usb在线升级方法及系统 | |
TWI421670B (zh) | 介面單元、介面連接系統方法及電源管理控制器 | |
KR101043842B1 (ko) | Ulpi phy 인터페이스 표준을 사용하는 usb 2.0 링크 전력 관리 부록의 물리적 장치(phy) 지원 | |
KR100666518B1 (ko) | 공통 시리얼 버스 커넥터를 구비한 휴대 전자 기기 | |
EP0992000B1 (en) | Bus interface system and method | |
US9411990B2 (en) | Working method of a multi-slot card reader based on the standard CCID protocol | |
US8762746B1 (en) | Power management in electronic devices | |
US8898349B1 (en) | IPMI over USB data transfer between host computer and baseboard management controller (BMC) | |
CN102043751B (zh) | Usb设备识别主机操作系统的方法 | |
US20070180181A1 (en) | USB interface provided with host/device function and its control method | |
CN104809014B (zh) | 一种系统远程无线升级方法 | |
WO2009102559A1 (en) | Providing device parameters | |
WO2018018978A1 (zh) | 一种通用串行总线控制器验证方法、系统及设备 | |
CN204331708U (zh) | 一种便携式设备和一种主机系统 | |
CN104731746A (zh) | 设备控制器装置 | |
US10101764B2 (en) | Automatic clock configuration system | |
TW201816658A (zh) | 電子卡及其偵測方法 | |
CN102446141B (zh) | 用于实现写保护控制的装置和方法 | |
US11625084B2 (en) | Method of optimizing device power and efficiency based on host-controlled hints prior to low-power entry for blocks and components on a PCI express device | |
CN101826025A (zh) | 现场可编程逻辑器件固件升级装置及其方法 | |
CN104123154A (zh) | 用于升级启动模式的自动进入装置和方法 | |
CN1890620A (zh) | 具有改进型通讯路径和安全功能的Express Card电源开关装置 | |
CN105224483B (zh) | 数据传输方法、电子设备及通用串行总线设备 | |
CN103678194A (zh) | 用于stm32程序isp下载的装置 | |
CN107526614B (zh) | Fpga开发板的通信方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170622 Address after: 350000, No. 16, building G, zone four, Fuzhou Software Park, 89 software Avenue, Gulou District, Fujian, Fuzhou Applicant after: Hengonda Technology Co., Ltd. Address before: 100000, 1103B building, Dacheng building, No. 127 West Street, Xicheng District, Beijing, Xuanwumen Applicant before: Hongda constant Information Technology Co. Ltd. |
|
TA01 | Transfer of patent application right | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170215 |
|
RJ01 | Rejection of invention patent application after publication |