新闻中心

EEPW首页>嵌入式系统>设计应用> DAB接收机USB固件升级的实现

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

作者: 时间:2013-07-31 来源:网络 收藏

  4.接收机

  4.1 接收机DFU实现

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

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

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

  实现IAP功能的核心是引导程序,这部分程序主要负责与PC机同步,通过接收升级固件,并写入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内部硬件工作机制决定的。



评论


相关推荐

技术专区

关闭