TMS320C32系统的BOOTLOADER的设计与实现
发布时间:2008/5/27 0:00:00 访问次数:557
现在,数字信号处理器(dsp)正越来越多地应用到各种场合,而flash存储器已成为dsp系统的一个基本配置,主要用来存放用户程序代码。flash具有容量大、单电压供电、可以在线编程的特点,并且可以利用现成的dsp通过软件编程来实现同样的flash的在线烧写。
在脱机运行的dsp系统中,用户代码需要在加电后自动装载运行。dsp系统的引导装载(bootloader)是指在系统加电时,dsp将一段存储在外部的非易失性存储器的代码转移到内部的高速存储器单元中去执行。这样既利用了外部的存储单元扩展dsp本身有限的rom资源,又充分发挥了dsp内部资源的效能。笔者结合自己的实际开发经验,设计并实现了一个引导装载系统的模型,给出一个简单的测试用的实例用来实现对flash的读写操作并有相应的源代码。整个方案有较大的灵活性和实用性,并且在实时数据处理系统中得到了实际应用。
系统描述
本系统由dsp(tms320c32)及外部的flash(am29f400b)和外部高速ram及相关的扩展单元如fpga、双口ram、16位高速da等构成。dsp与flash的连接如图1所示。dsp与flash是主从关系,由dsp的相关输出管脚控制flash的擦除和读写。
flash用于存放引导程序段和用户代码,由dsp软件编程来写入。当系统处于mcbl模式上电复位和带电复位时,dsp首先从外部flash指定的引导程序段的起始位置处开始执行引导装载。
所谓引导装载,就是将原先存储在flash中的用户代码移植到dsp内部的高速ram执行,然后将程序指针pc设置为用户代码的起始地址。这样,接下来就可以利用dsp资源高速执行用户代码了。
dsp对flash的操作
dsp及flash简介
tms320c3x系列芯片是美国ti公司推出的第一代浮点dsp芯片,具有丰富的指令集、较高的运算速度、较大的寻址空间和较高的性价比,在各领域得到了广泛的应用。tms320c32在tms320c30和tms320c31的基础上进行了简化和改进。在结构上的改进主要包括可变宽度的存储器接口、更快速的指令周期时间、可设置优先级的双通道dma处理器、灵活的引导程序装入方式、可重新定位的中断向量表以及可选的边缘/电平触发中断方式等。
am29f00b是amd公司的flash,容量为4mbit,支持8位或16位操作模式。通过特殊的命令字序列可以对flash进行擦除和读写。与以往的flash相比,它由外部单电压供电,即无需额外提供高电压即可实现擦除及写入,因而在系统设计上无需考虑特殊的电平匹配。基于快速存取的考虑,本方案采用16位模式。
地址映射方式
由于用dsp操作flash,必然涉及到flash的实际地址在dsp中的映射方式。在擦除或读写flash之前,必须先执行相应的命令字序列,即在指定的flash地址处写入指定的指令代码。由于c32采用统一编址方式,整个flash地址空间可以和dsp的地址空间一一对应,所以不需要考虑地址的重映射。
根据命令字序列表1,现以对flash写入为例,命令字序列如下。
ldi 0555h,ar0
ldi 0aah,r0
sti r0,*ar0; //1st cycle
nop
nop
ldi 02aah,ar0
ldi 055h,r0
sti r0,*ar0; //2nd cycle
nop
nop
ldi 0555h,ar0
ldi 0a0h,r0
sti r0,*ar0; //program command
nop
nop
ldi ar4,r5; //*ar4 store the data of my program
sti r5,*ar3++; //ar3 store the address of my program
这样,在dsp中就可以对外部flash进行写入操作了。擦除和读操作也类似,不再累述。
flash操作过程
在dsp将数据写入flash之前,先要删除数据所在块,然后才能重新写入。擦除和写操作之前都要执行相应的命令字序列,而读操作则可以直接进行。而且要写入的数据部分应为引导程序段以及用户代码是经过编译、连接后的目标代码,且为flash可识别的hex格式。
引导装载模型设计
引导装载原理
加电前,dsp设置为微处理器模式(mcbl=1),int0=0。加电后,dsp首先根据中断向量表起始处的跳转命令,转向0x45h处的引导程序段并实现代码移植功能。完毕后,再次跳转到移植后的用户程序段的起始地址并执行。
建立引导表的步骤
编写相应的asm文件(wave.asm)和cmd(lnk.cmd)文件,程序经过仿真器仿真无误以后,就要建立引导表,使系统能够脱机运行。下面介绍建立系统引导表的步骤:
1.编译文件。编写完程序代码以后,对源程序进行编译,生成.obj文件。本系统中采用c32 dsp,因此加上-v32选项,汇编asm源文件:d:\asm30 -v32 wave.asm wave.obj生成wave.obj文件。
2.链接文件,将.obj文件生成.out文件。链接目标文件: d:\lnk30 wavelnk.cmd. 生成wave.out和wave.map文件 。
3.使用数制转换工具生成.hex文件或.bin文件
现在,数字信号处理器(dsp)正越来越多地应用到各种场合,而flash存储器已成为dsp系统的一个基本配置,主要用来存放用户程序代码。flash具有容量大、单电压供电、可以在线编程的特点,并且可以利用现成的dsp通过软件编程来实现同样的flash的在线烧写。
在脱机运行的dsp系统中,用户代码需要在加电后自动装载运行。dsp系统的引导装载(bootloader)是指在系统加电时,dsp将一段存储在外部的非易失性存储器的代码转移到内部的高速存储器单元中去执行。这样既利用了外部的存储单元扩展dsp本身有限的rom资源,又充分发挥了dsp内部资源的效能。笔者结合自己的实际开发经验,设计并实现了一个引导装载系统的模型,给出一个简单的测试用的实例用来实现对flash的读写操作并有相应的源代码。整个方案有较大的灵活性和实用性,并且在实时数据处理系统中得到了实际应用。
系统描述
本系统由dsp(tms320c32)及外部的flash(am29f400b)和外部高速ram及相关的扩展单元如fpga、双口ram、16位高速da等构成。dsp与flash的连接如图1所示。dsp与flash是主从关系,由dsp的相关输出管脚控制flash的擦除和读写。
flash用于存放引导程序段和用户代码,由dsp软件编程来写入。当系统处于mcbl模式上电复位和带电复位时,dsp首先从外部flash指定的引导程序段的起始位置处开始执行引导装载。
所谓引导装载,就是将原先存储在flash中的用户代码移植到dsp内部的高速ram执行,然后将程序指针pc设置为用户代码的起始地址。这样,接下来就可以利用dsp资源高速执行用户代码了。
dsp对flash的操作
dsp及flash简介
tms320c3x系列芯片是美国ti公司推出的第一代浮点dsp芯片,具有丰富的指令集、较高的运算速度、较大的寻址空间和较高的性价比,在各领域得到了广泛的应用。tms320c32在tms320c30和tms320c31的基础上进行了简化和改进。在结构上的改进主要包括可变宽度的存储器接口、更快速的指令周期时间、可设置优先级的双通道dma处理器、灵活的引导程序装入方式、可重新定位的中断向量表以及可选的边缘/电平触发中断方式等。
am29f00b是amd公司的flash,容量为4mbit,支持8位或16位操作模式。通过特殊的命令字序列可以对flash进行擦除和读写。与以往的flash相比,它由外部单电压供电,即无需额外提供高电压即可实现擦除及写入,因而在系统设计上无需考虑特殊的电平匹配。基于快速存取的考虑,本方案采用16位模式。
地址映射方式
由于用dsp操作flash,必然涉及到flash的实际地址在dsp中的映射方式。在擦除或读写flash之前,必须先执行相应的命令字序列,即在指定的flash地址处写入指定的指令代码。由于c32采用统一编址方式,整个flash地址空间可以和dsp的地址空间一一对应,所以不需要考虑地址的重映射。
根据命令字序列表1,现以对flash写入为例,命令字序列如下。
ldi 0555h,ar0
ldi 0aah,r0
sti r0,*ar0; //1st cycle
nop
nop
ldi 02aah,ar0
ldi 055h,r0
sti r0,*ar0; //2nd cycle
nop
nop
ldi 0555h,ar0
ldi 0a0h,r0
sti r0,*ar0; //program command
nop
nop
ldi ar4,r5; //*ar4 store the data of my program
sti r5,*ar3++; //ar3 store the address of my program
这样,在dsp中就可以对外部flash进行写入操作了。擦除和读操作也类似,不再累述。
flash操作过程
在dsp将数据写入flash之前,先要删除数据所在块,然后才能重新写入。擦除和写操作之前都要执行相应的命令字序列,而读操作则可以直接进行。而且要写入的数据部分应为引导程序段以及用户代码是经过编译、连接后的目标代码,且为flash可识别的hex格式。
引导装载模型设计
引导装载原理
加电前,dsp设置为微处理器模式(mcbl=1),int0=0。加电后,dsp首先根据中断向量表起始处的跳转命令,转向0x45h处的引导程序段并实现代码移植功能。完毕后,再次跳转到移植后的用户程序段的起始地址并执行。
建立引导表的步骤
编写相应的asm文件(wave.asm)和cmd(lnk.cmd)文件,程序经过仿真器仿真无误以后,就要建立引导表,使系统能够脱机运行。下面介绍建立系统引导表的步骤:
1.编译文件。编写完程序代码以后,对源程序进行编译,生成.obj文件。本系统中采用c32 dsp,因此加上-v32选项,汇编asm源文件:d:\asm30 -v32 wave.asm wave.obj生成wave.obj文件。
2.链接文件,将.obj文件生成.out文件。链接目标文件: d:\lnk30 wavelnk.cmd. 生成wave.out和wave.map文件 。
3.使用数制转换工具生成.hex文件或.bin文件
热门点击
- ObjectVideo和TI合作智能监视设备
- 用于DDS系统相位累加器的加法器设计
- 新型高速无线射频器件nRF24L01及其应用
- 基于16位定点DSP的并行乘法器的设计
- 基于DSP和增量式PI电压环控制的逆变器研究
- 75cm偏馈天线尝试收C波段圆极化信号
- DSP的软件UART实现
- 电子报晓公鸡
- 基于AD9957的双通道高速数字调制信号源设
- 基于LabWindows/CVI的虚拟函数信
推荐技术资料
- 业余条件下PCM2702
- PGM2702采用SSOP28封装,引脚小而密,EP3... [详细]
深圳服务热线:13751165337 13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)

深圳市碧威特网络技术有限公司
付款方式