微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于闪存TMS320VC5409DSP并行引导装载方法

基于闪存TMS320VC5409DSP并行引导装载方法

时间:07-05 来源:嵌入式公社 点击:

为用户自举表的入口地址。这时片内引导程序就开始执行FLASH中的用户自举表若自举表的第一个字是0x10AAh,则表示是16位并行引导模式。

  4 FLASH中自举表(Boottable)的存储格式

  为了实现DSP加电自举,FLASH中的数据必须按照自举表的格式"烧写"。自举表的作用是:DSP运行此表时,首先根据自举表中前部分用户起始地址把后面的用户程序代码加载到DSP片内程序空间中相应的用户地址区域(由于FLASH与DSP时间不匹配,要设置好SWWR和BSCR寄存器),然后根据自举表中的程序入口地址,在程序空间相应的地址开始运行程序。表2为16位并行自举的代码结构(自举表在空间允许的情况下可以放几个程序代码段,为便于说明,在此只说明一个程序代码段的情况)。

表2 并行自举表的代码结构

  下面结合一个实例,说明利用hex500命令生成二进制数据自举表的方法。

  (1)所编写的一个用户程序名为myblink.C,在编译链接成功后生成的输出文件名为myblink.out;程序空间的开始地址为0x1400h,程序执行的入口地址为0x144Fh。利用hex500工具,生成文件名为myblink.hex的二进制数据,hex500命令后添加如下条件:

  (2)生成的二进制数据文件myblink.hex的数据为:

  (3)编写一个数据转换程序,把二进制数据文件myblink.hex 转换为数组头文件myblink.h。在CCS环境下,FLASH的"烧写"主程序包含此头文件,编译链接后通过仿真器下载到DSP中,运行DSP,用户程序就被"烧入"FLASH中了。

  实际应用是:在数据空间地址0xFFFFh(也就是FLASH的空间0xFFFFh )中"烧写"数据0x9000h(FLASH中存放的自举表起始地址),在FLASH的地址0x9000h开始"烧入" 用户自举表数据即myblink.h中的数组数据。

  DSP运行情况是:依据第3节所述的引导装载过程,经过一系列的设置,使DSP寻址到数据空间地址0xFFFFh,得到自举表的起始地址0x9000h,PC指针指向0x9000h,执行自举表的数据,根据自举表写入信息,把后面的程序装载入程序空间起始地址0x1400h(XPC=0)(这时通过仿真器查看程序空间0x1400h开始的数据,与仿真器下载的myblink.out文件数据是一致的)。然后,DSP的PC指针指向程序入口地址0x144Fh(XPC=0)开始执行用户程序,从而完成了DSP利用FLASH实现16位并行引导装载的过程。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top