DAB接收机USB固件升级的实现
【摘要】本文在自主开发的DAB接收机的基础上,提出一种通过USB接口实现接收机设备固件升级(DFU)的方法。当产品投入市场后可能会存在不足之处,通过DFU能达到对产品软件进行优化和修补的目的,也可为产品增加更多更新的功能,让用户获得更好的使用体验。经测试表明,本文提出的方法能可靠的对接收机产品进行固件升级。
【关键词】数字音频广播;DAB接收机;设备固件升级
1.引言
固件(Firmware)我们通常理解为软件,由于集成电路的发展,目前的固件多以FLASH为载体,它与我们通常所说的程序的区别已经越来越小。固件升级实际上就是用新的固件程序重写FLASH的过程,升级固件变得越来越简单。
在用户使用过程中,一旦系统提供产品固件更高的版本,就要求产品能够通过固件升级程序对原有固件进行升级,而设备固件升级(Device Firmware Upgrade,DFU)正是能够完成这种任务的一种机制。随着USB技术的发展,USB设备的更新速度越来越快,通过USB接口来升级产品的固件是一种实用高效的方法[1]。本文的主要研究内容就是在自主开发的DAB接收机的基础上[2],通过USB接口实现接收机的DFU。
2.固件升级
随着科技的不断进步,生产厂商很难满足用户多元化的需求,更多的厂商把升级固件以提供更多更新的功能作为附加值来提供给用户。
在产品上市后,生产厂商对产品程序做了进一步的优化和改进,这时候需要升级产品的固件以提升产品的性能。对于已经开发出的软件,有可能存在一些BUG,生产厂商也可以通过固件升级来修正以前版本中存在的错误。
3.DFU实现流程
第一阶段为枚举阶段,接收机正常运行过程包括两套不同的描述符:DFU模式描述符和正常运行描述符。接收机正常运行时,列举出DFU模式描述符并向主机表明其具备可实现DFU的能力。
第二阶段为重配置阶段,接收机和主机达成一致发起固件升级。主机给接收机发送一个USB重置请求,接收机接收到后,切换到固件升级模式,屏蔽正常工作模式,并为下一阶段做好准备。
第三阶段为传输阶段,主机通过特定的软件将固件升级的文件传送给接收机,在功能描述符中定义的参数可以正确的保证块的大小以及在内存中重新编译的时间。
4.接收机USB固件升级
4.1 接收机DFU实现
接收机DFU的设计方案是通过USB接口的数据传输功能接收来自PC机的固件升级文件,利用MCU的在应用编程(In Applica-tion Programming,IAP)功能来实现接收机的固件升级。
IAP就是MCU通过对外接口(如USART,USB,以太网,无线信道等)接收升级固件,并在程序运行过程中重新对内部FLASH进行编程的技术。如图3所示为接收机IAP功能实现的示意图。
IAP的实现需要两部分程序:引导程序、用户程序。引导程序需要通过仿真器或通过在系统中编程(In System Progra-mming,ISP)的方式烧写。用户程序可以和引导程序一起烧写,也可通过引导程序的IAP功能烧写。
实现IAP功能的核心是引导程序,这部分程序主要负责与PC机同步,通过USB接收升级固件,并写入MCU指定的内存地址,MCU复位后程序指针跳转并执行新用户程序,从而完成接收机的固件升级。
4.2 DFU模式进入机制
接收机有两种工作模式:DFU升级模式和正常工作模式。两种工作模式不能同时运行,由于接收机在DFU升级模式下,就不再是能收听DAB节目的接收机,而是相当于EEPROM(电可擦可编程只读存储器)存在,所以接收机从正常工作模式进入到DFU升级模式,需要外部提供一个中断信号。
4.3 接收机IAP程序设计
执行IAP功能操作时,MCU首先对USB接口进行初始化,然后接收来自PC机的升级固件,并从内部FLASH的0x8004000地址处开始写入。
接收机再次上电,工作在正常运行模式下,MCU的程序指针会直接跳转至FLASH的0x8004000地址处即新用户程序的main函数处,执行新写入的用户程序。
4.4 程序存储空间分配
接收机是以STM32系列微控制器作为核心处理器,采用ARM公司专为要求高性能、低成本、低功耗的嵌入式应用设计的Cortex-M3内核。STM32系列存储器在Cortex-M3内核的基础上加入了FLASH、SRAM等,使其成为可以工作的处理芯片。
引导程序和用户程序都存放在第一块Flash区域内,引导程序存放在0x8000000-0x8003FFF区域,用户程序存放在0x800 4000-0x801FFFF区域[5]。为了使FLASH区域内存放的引导程序和用户程序代码之间不发生冲突,新用户程序的中断向量表需要做重映射。
5.接收机DFU测试
PC端升级软件使用ST意法半导体公司官方提供的软件,在ST官方网站上可下载到该软件,安装后执行。
6.结论
本文提出的设计方法实现了便携式DAB接收机的DFU,经多次测试表明,该方法能够可靠的对接收机进行固件升级。
用户需要对便携式DAB接收机进行固件升级时,只需在说明书内指定的网址下载升级软件和固件,就可将产品的固件升级至最新版本。DFU的实现,给用户升级产品带来很大方便,具有一定的现实意义和应用价值。
参考文献
[1]Compaq,Intel,Microsoft,NEC.Universal Serial Bus Specification,Revision 1.1,September 23,1998.
[2]陆明莹,张贤斌,王国裕,等.基于ID200的便携式DAB接收机的设计和实现[J].电声技术,2010(12):81-83.
[3]施文灶,王平,黄晞,陈伟.基于USB的便携式设备固件升级程序的设计[J].电子设计工程,2009(11):4-6.
[4]Universal Serial Bus Device Class Specification for Device Firmware Upgrade.Version 1.1 Aug 5,2004 http:///cn/mcu/product/164486.jsp.
作者简介:
王国裕(1954—),男,博士,教授,博士生导师,研究方向:SOC设计以及DAB/DMB系统开发和核心芯片设计。
李子东(1984—),男,研究生,研究方向:数字音频广播(DAB)接收机的开发。
张红升(1980——),男,博士,讲师,研究方向:数字集成电路设计。
推荐访问: 接收机 固件升级 DAB USB