APP下载

DSP的自启动程序设计

2018-01-22翟丽杰

科技视界 2017年30期

翟丽杰

【摘 要】介绍了TMS320C6000系列BOOTLOAD的程序功能、特点及设计思路,该思路下编写的BOOTLOAD程序已在SAR数据存储系统上应用,运行良好。

【关键词】DSP;TMS320C6000;BOOTLOAD

0 引言

数字信号处理器,DSP( Digital Signal Processor),是随数字信号处理理论发展而专门设计的可编程处理器,是现代电子技术、计算机技术和信号处理技术相结合的产物[1]。由于目前越来越多的嵌入式设备研发中采用了的操作系统支持[3],那么必然要根据目标板设计引导程序,实现整个系统脱机工作,即系统一开机运行就将程序自动加载到DSP的内部RAM中,脱机运行,完成系统的功能。

BOOTLOAD又称为内核引导程序[4],是嵌入式系统在加电后执行的第一段代码,它主要负责向内存装载操作系统映像,然后跳转到操作系统所在的空间,启动操作系统运行。具体来讲即初始化硬件设备、建立内存空间的映射图,最终调用用户程序。

1 TMS320C6000 DSP特有的二次启动过程

TMS320C6000系列DSP在复位时其片内ROM中固化了BOOTLOAD代码,这段代码采用DMA方式从CE1指向的外部存储空间复制1K的代码到地址0处,然后跳转到地址0处执行。但是实际情况1K的代码对本文设计的系统是远远不够,因此需要进行二次BOOTLOAD。编写的二次BOOTLOAD代码应该包含在被搬移的1K代码中,实现从FLASH存储器中搬移指定长度的程序代码以及初始化的数据到DSP片内RAM中。

二次BOOTLOAD引导程序主要是将加载地址位于FLASH的数据拷贝到RAM中相应的运行地址。因为在系统最初启动时,C语言环境没有初始化,因此这段程序需要用汇编语言编写。

编写完后在CCS中compile、build,生成可执行文件.out;在汇编优化后产生.obj文件。该格式文件包含汇编时汇编器所生成的各个段,然后命令文件将指导连接器分配各段到相应的存储器中。此时要注意,加载地址和运行地址的不同。加载地址决定二进制代码的存储位置和程序引导地址。

2 二次BOOTLOAD固化过程

与BIOS/OS Load类似,BOOTLOAD通常需要固化在目标板中,每次启动目标板时首先运行自动加载程序,在他完成CPU及相关硬件的初始化后,才在规定的地址启动操作系统。BOOTLOAD是严重依赖硬件而实现的[5],每一种不同体系结构的处理器都有不同的BOOTLOAD,甚至同一种处理器的外围硬件配置不同,其BOOTLOAD也有差别。

由于FLASH存储器具有电信号删除功能,且删除速度快,集成度高,成为嵌入式系统自动加载模块的外部存储程序的首选存储器[6]。TMS320C6000系列DSP采用了多种引导配置方式,以决定芯片在复位后采取何种方式执行的初始化操作。

本节设计的自动加载模块采用EMIF引导,即BOOTMODE[4:0]=10。在这种引导启动模式下,芯片复位后,CPU处于“停转”的状态,DMA模块采用默认的ROM读写时序从CE1空间起始地址(此时挂载的是FLASH)上拷贝代码到地址0处,拷贝结束,CPU进入“运行”状态,从地址0处开始执行程序。

将程序编译、验证后,进行二次BOOTLOAD代码的固化。上面所写BOOTLOAD加载代码及工程实际代码都需要固化在FLASH中。Hex6*.exe是CCS開发环境自带的工具[8],将*.out文件转化为hex格式文件,然后进行烧写。.hex文件格式只含待烧写的数据,将数据读入到缓冲区buff中,然后编写命令进行在线编程,完成烧写。

通过编写自动加载代码,编译成功后固化在系统FLASH中,就实现了整个系统的脱机加载模块。

3 自动加载模块BOOTLOAD测试与分析

整个测试分为以下几步:首先是移植代码编译测试,即软件仿真;其次是固化烧写,测试程序是否烧写在FLASH预先设定的位置;最后测试系统开机是否可以自动加载,脱机独立运行。

测试软件环境为:CCS 3.1 集成开发环境;硬件为:SAR数据存储系统

(1)软件仿真测试

打开CCS,新建自动加载模块工程—Bootloader.pjt,运行该工程进行编译。整个自动加载模块代码没有错误也没有警告运行正常,代码编译正确,没有语法和逻辑错误。

(2)烧写固化过程测试

将已经测试过的编译正确的自动加载模块代码烧写固化在系统中FLASH中,这里采用了擦除命令。

通过擦除烧写命令,程序依次烧写至FLASH中预定的地址,程序烧写正确。随后在整个SAR数据存储系统中测试,系统从上电开始,自动加载,接收数据,在DSP内将数据处理后存入存储设备,说明自动加载模块BOOTLOAD,运行良好。

4 总结

随着DSP越来越广泛应用到各种电子信息产品中,对产品灵活方便的引导启动方式提出了更高的要求,而通过FLASH存储器来引导DSP系统自动加载已成为常用的方法,这是脱机运行DSP系统的较关键技术。本文详细介绍了基于TI TMS320C6000系列DSP的自动加载程序BOOTLOAD的设计思路及在硬件上应用,本方案在不同的工程中做简单修改就可以在不同系统中稳定的启动装载。

【参考文献】

[1]彭启琮,李玉柏,管庆.DSP技术的发展与应用[M].北京:高等教育出版社,2002:340-345.

[2]Tetsuya OSHIKATA,Hirofumi MATSUO. Analysis of Dynamic Characteristics For The Partially Resonant Active Filter With The Dsp. IEICE Transactions on Communications.

[3]李永超,马金岭.TMS320C6000系列带中断向量表的二次的Bootloader的设计与实现.电子工程师.第33卷第3期.2007:45-49.

[4]刘向宇.DSP嵌入式常用模块与综合系统设计实例精讲.北京:电子工业出版社2008:93.

[5]马学文,朱名日,程小辉.嵌入式系统中Bootloader的设计与实现.计算机工程.第31卷第7期.2005.4.

[6]张谦,李世杰,李红波.TMS320C6000系列DSP可选择引导加载方式的设计与实现.电子测量技术.第32卷第7期.2009.7.

[7]王璐.基于DSP的嵌入式实时操作系统的研究.广东工业大学学位论文2005:13-17.

[8]纪震,钟锦春,强乐.DSP系统入门与实践.北京:电子工业出版社.2006:1-10.endprint