微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > DAB接收机USB固件升级的实现

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

时间:07-31 来源:互联网 点击:
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函数 处开始执行。

接收机再次上电,工作在正常运行

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top