DAB接收机USB固件升级的实现

出处:电子技术网 发布于:2013-05-30 10:18:08

  1.引言

  固件(Firmware)我们通常理解为软件,由于集成电路的发展,目前的固件多以FLASH为载体,它与我们通常所说的程序的区别已经越来越小。固件升级实际上就是用新的固件程序重写FLASH的过程,升级固件变得越来越简单。

  在用户使用过程中,一旦系统提供产品固件更高的版本,就要求产品能够通过固件升级程序对原有固件进行升级,而设备固件升级(Device Firmware Upgrade,DFU)正是能够完成这种任务的一种机制。随着USB技术的发展,USB设备的更新速度越来越快,通过USB接口来升级产品的固件是一种实用高效的方法。本文的主要研究内容就是在自主开发的DAB接收机的基础上,通过USB接口实现接收机的DFU.

  2.固件升级

  本文提出的固件升级方法利用PC机通过USB接口与DAB接收机进行通信,并在此基础上完成DFU的各种操作,基本结构如图1所示。

  随着科技的不断进步,生产厂商很难满足用户多元化的需求,更多的厂商把升级固件以提供更多更新的功能作为附加值来提供给用户。

  在产品上市后,生产厂商对产品程序做了进一步的优化和改进,这时候需要升级产品的固件以提升产品的性能。对于已经开发出的软件,有可能存在一些BUG,生产厂商也可以通过固件升级来修正以前版本中存在的错误。

  3.DFU实现流程

  接收机DFU的实现参照USB固件升级的标准流程,接收机通过USB线缆与PC机相连,在PC机上执行固件更新的相关操作,完成接收机的固件升级,整个过程遵循枚举,重配置,传输,显示四个阶段,具体的实现过程如图2所示。

  阶段为枚举阶段,接收机正常运行过程包括两套不同的描述符:DFU模式描述符和正常运行描述符。接收机正常运行时,列举出DFU模式描述符并向主机表明其具备可实现DFU的能力。

  第二阶段为重配置阶段,接收机和主机达成一致发起固件升级。主机给接收机发送一个USB重置请求,接收机接收到后,切换到固件升级模式,屏蔽正常工作模式,并为下一阶段做好准备。

  第三阶段为传输阶段,主机通过特定的软件将固件升级的文件传送给接收机,在功能描述符中定义的参数可以正确的保证块的大小以及在内存中重新编译的时间。

  第四阶段为显示阶段,接收机通知主机已完成重新编译,主机发送一个USB复位请求给接收机,接收机重启后,重新执行枚举阶段,并执行已经更新的固件程序。

  4.接收机USB固件升级

  4.1 接收机DFU实现

  接收机DFU的设计方案是通过USB接口的数据传输功能接收来自PC机的固件升级文件,利用MCU的在应用编程(In ApplicationProgramming,IAP)功能来实现接收机的固件升级。

  IAP就是MCU通过对外接口(如USART,U S B,以太网,无线信道等)接收升级固件,并在程序运行过程中重新对内部FLASH进行编程的技术。如图3所示为接收机IAP功能实现的示意图。

  I A P的实现需要两部分程序:引导程序、用户程序。引导程序需要通过仿真器或通过在系统中编程(In System Programming,ISP)的方式烧写。用户程序可以和引导程序一起烧写,也可通过引导程序的IAP功能烧写。

  实现IAP功能的是引导程序,这部分程序主要负责与PC机同步,通过USB接收升级固件,并写入MCU指定的内存地址,MCU复位后程序指针跳转并执行新用户程序,从而完成接收机的固件升级。

  4.2 DFU模式进入机制

  接收机有两种工作模式:DFU升级模式和正常工作模式。两种工作模式不能同时运行,由于接收机在DFU升级模式下,就不再是能收听DAB节目的接收机,而是相当于EEPROM(电可擦可编程只读存储器)存在,所以接收机从正常工作模式进入到DFU升级模式,需要外部提供一个中断信号。

  在本文设计方案中,采用MCU的PC8端口对应的按键作为同步按键,接收机进行固件升级时,MCU通过识别同步按键产生的中断信号与PC机进行同步,从而使接收机进入DFU升级模式。

  4.3 接收机IAP程序设计

  接收机上电复位,MCU首先从地址0×8000004处取出复位中断向量地址,程序指针跳转执行复位中断服务程序。正常情况下,程序指针跳转至用户程序的main函数处执行用户程序,但接收机处于DFU升级模式下,程序指针将跳转至引导程序的main函数处执行IAP功能相关操作。如图4所示为接收机实现DFU的程序流程图。

  执行IAP功能操作时,MCU首先对USB接口进行初始化,然后接收来自PC机的升级固件,并从内部FLASH的0×8004000地址处开始写入。

  写入过程完毕,MCU执行复位操作,随后接收机工作在正常运行模式下,程序指针将跳转至新写入用户程序的复位中断向量表处,取出复位中断向量地址,执行复位中断响应操作,并跳转至新用户程序的main函数 处开始执行。

  接收机再次上电,工作在正常运行模式下,MCU的程序指针会直接跳转至FLASH的0×8004000地址处即新用户程序的main函数处,执行新写入的用户程序。

  4.4 程序存储空间分配

  接收机是以STM32系列微控制器作为处理器,采用A R M公司专为要求高性能、低成本、低功耗的嵌入式应用设计的C o r t e x – M 3内核。S T M 3 2系列存储器在Cortex-M3内核的基础上加入了FLASH、SRAM等,使其成为可以工作的处理芯片。

  STM32的存储器地址空间总共划分为8块区域,每块区域大小为512M.如图5所示为STM32系列MCU存储器块区域的结构示意图。

  引导程序和用户程序都存放在块Flash区域内,引导程序存放在0×8000000-0 x 8 0 0 3 F F F区域,用户程序存放在0 x 8 0 04000-0x801FFFF区域。为了使FLASH区域内存放的引导程序和用户程序代码之间不发生冲突,新用户程序的中断向量表需要做重映射。

  固件升级完成后,在新用户程序执行过程中,FLASH区域的不同地址处存在两个中断向量表。当有中断请求来临时,程序指针仍然会跳转至引导程序的中断向量表处,而不是新用户程序的中断向量表处,这是由MCU内部硬件工作机制决定的。

  5.接收机DFU测试

  PC端升级软件使用ST意法半导体公司提供的软件,在ST网站上可到该软件,安装后执行。

  接收机上电,首先按住同步按键,并将接收机通过USB线缆与PC机相连,然后松 开按键。当程序左上角识别出STM Device时,说明接收机与PC机已成功建立连接,点击Choose…选择本地的升级固件,然后点击Upgrade执行升级操作。

  如图6所示为接收机固件升级成功的程序界面。

  6.结论

  本文提出的设计方法实现了便携式DAB接收机的DFU,经多次测试表明,该方法能够可靠的对接收机进行固件升级。

  用户需要对便携式DAB接收机进行固件升级时,只需在说明书内指定的网址升级软件和固件,就可将产品的固件升级至版本。DFU的实现,给用户升级产品带来很大方便,具有一定的现实意义和应用价值。

关键词:USB

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

广告
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!