基于C8051F34x单片机的USB Bootloader设计
2011-07-28刘云龙张伟霞
刘云龙 ,张伟霞
(1.广州海格通信集团股份有限公司,广东 广州 510663;2.广州广电运通金融电子股份有限公司,广东 广州 510663)
Bootloader(以下简称BL)是一段引导程序,在单片机上电或复位后在应用程序(以下简称APP)之前先运行,来判断当前是否需要进入升级状态。如果不需要升级,就直接跳转到APP运行;如果需要升级,首先擦除旧的APP,然后通过某种通信接收APP固件程序,同时写入Flash中。
BL固件程序能以多种方式获取数据,包括串口、并口、I2C、SPI、USB等,但是从实际使用和成熟度来看,使用串口无疑是最方便的。如今,USB总线凭借其方便、快速、灵活、稳定、应用范围广等优点被广泛地应用、发展和普及,使用USB进行数据传输是一种趋势。本文设计的BL主要基于USB通信,同时考虑到模块兼容,保留了串口通信。
一般来说,一个BL应该能够完成以下功能:(1)通过某种通信收发数据;(2)擦除并升级APP应用固件程序;(3)判断APP固件的完整性;(4)APP与BL的中断跳转问题。而基于USB通信的BL,除了要完成一般BL的功能,还需要考虑BL与APP共用除USB中断外的USB一般处理函数等问题。下面对BL固件程序设计、APP固件程序设计以及上层软件设计进行详细介绍。
1 USB Bootloader设计
1.1 硬件平台
本文设计的USB BL是基于SiliconLabs公司C8051F34x系列单片机实现的;C8051F34x器件是完全集成的混合信号片上系统型MCU,具有片内上电复位、VDD监视器、电压调整器、看门狗定时器、时钟丢失检测器、时钟振荡器、USB、SMBus/I2C、UART、SPI、定时器、I/O、多达4 352 B片内RAM和64 KB的片内Flash存储器,Flash存储器还具有在系统重新编程的能力,可用于非易失性数据存储,并允许现场更新8051固件。……
