严建龙
(洛阳栾川钼业集团股份有限公司选矿三公司,河南栾川471500)
随着嵌入式芯片在通信、电子、工业等领域的日益广泛应用,DSP 芯片烧写程序的难易程度和产品后续升级服务变得十分重要。目前TMS320F2811 芯片程序更新方法主要有两种:
1) 通过TI 公司提供的烧写工具,利用JTAG 仿真器进行程序的擦除、烧写等操作;
2) 通过引导加载程序的下载功能,通过上位机软件将经转换后的程序文件经过各种接口烧写至片内 Flash 中[1]。
第一种方式便于跟踪调试,但在实际应用中增加了电路板体积,需将产品机壳打开,操作繁琐,维护性差,用户体验差,在产品量产后严重制约效率,在一些特殊场合JTAG 接口会影响产品工作的可靠性;而后者则大大降低了维护成本,有效提升了升级效率及可靠性,尤其是在产品量产阶段具有十分可观的经济价值[2]。
实现基于串口的TMS320F2811 程序在线升级,主要需完成以下两个方面工作:编写基于串口通信的BootLoader 引导程序;制定上位机与MCU 间通信协议。
着重针对以上两点具体的实现方式进行详细的阐述及讨论。系统工作原理如图1所示。
图1 系统工作原理框图
F2811 软件中包含两个CCS 工程,其中工程A为辅助软件升级程序,必须通过J-Link 进行烧写;工程B 为待进行升级程序,既可通过J-Link 进行烧写,也可通过串口与上位机通信,以在线升级方式进行烧写。工程A、B 均须按照要求分配地址空间。
F2811 的 Flash 大小是 128k×16,分为 10 个Sector,每个Sector 有其各自的大小[3],地址区域划分的详细信息见表1。
将Flash 区域重新划分,具体见表2,可实现根据串口指令进入原始程序,或者新程序,并且在Bootloader 过程中对设备进行更新[4]。
表1 F2811 Flash Sector 地址区域划分
表2 F2811 Flash Sector 地址区域重新划分
软件在运行过程中,若串口收到进行程序升级指令后,BOOT 程序首先检测当前软件所处的有效区标志,其中辅助升级程序在段J 位置设置为A区,待升级程序在J 位置设置为B 区,擦除处于非有效区的Flash 空间,待擦除完毕后,通过对话框形式选择待烧写的hex 文件,之后软件将自动重启,若软件之前处于A 区,则完成软件的在线升级;否则软件处于B 区则重复上述步骤完成软件的在线升级。系统软件主程序设计具体流程如图2所示。
在擦除A 区过程中若出现异常情况,导致A 区应用程序不可用,但由于B 区中的更新程序完好,当系统重新上电运行时,BOOT 程序将通过B 区将辅助升级软件重新下载到A 区,自动重启后从A 区运行,可执行后续的升级操作,提高了整个系统的可靠性。
图2 系统软件主流程图
Boot 中操作函数均通过CCS 开发环境制作成.lib 文件[5],辅助升级程序和待升级程序均可以调用,其中重要的函数如下:
unsigned int Get_Active_Section(void); //检测软件有效区标志,返回值A 或B
void Enter_Update (int Erase_A); //根据所处区域,进行flash 擦除、软件升级操作
存储区实现主要是通过.cmd 文件进行[6],辅助升级程序与待升级程序的设置具体如下[7]:
MCU 更新数据采用 Intel HEX 文件[8],若要实现该HEX 文件,需使用hex2000.exe 工具和批处理文件out2hex.bat。具体内容如下:
此program.cmd 文件的内容如下:
将批处理文件 out2hex.bat、hex2000.exe、program.cmd 和CCS 开发环境中编译生成的first.out文件放在同一路径下,双击out2hex 文件即可。
F2811 与上位机软件之间的命令交互,主要包括进入程序升级操作、擦除操作、发送程序数据操作、升级完成等,各项操作指令有对应帧头、帧尾及校验字节,保证了数据传输和交互过程的准确性及可靠性。
系统上位机软件界面如图3所示,包括操作按钮、程序文件选择对话框、程序运行状态显示框等。
图3 上位机界面
在上位机界面选择相应串口号,配置串口通信的参数为:波特率115200bps,数据位8,起始位1,停止位1,无奇偶校验位。
点击“start”按钮启动更新模式,然后按照提示框一步步完成软件的串口在线升级,软件完成在线升级后,将自动进行软件重启,通过上位机软件可查询升级后的软件版本号,以确定软件是否升级成功。
通过对基于串口TMS320F2811 芯片BOOT 引导程序原理的详细阐述,分析了具体的实现步骤和方法。提出的基于串口的TMS320F2811 程序在线升级方法具有通用性,对于其它嵌入式芯片的实现具有一定的借鉴意义。实际应用结果表明,基于串口的在线升级方法可靠性高,达到了预期的效果,大大提升了实际工作效率。