微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 应用于DM648的FLASH自动加载实现方法

应用于DM648的FLASH自动加载实现方法

时间:09-12 来源:互联网 点击:

保存到变量gEntryPoint中。

5)UBL程序会完成硬件环境的初步配置,包括配置锁相环电路的倍频系数从而修改DM648的工作频率,配置DM648的PSC寄存器关闭不使用的片上外设降低芯片功率,配置引脚复用功能满足应用程序要求等。之后跳转到应用程序的入门地址gEntryPoint运行程序。

3 烧写文件格式转换程序设计

本次设计采用FLASH快速启动方式时,RBL只能解析AIS格式的镜像文件,而UBL和应用程序都在CCS环境中使用C语言实现,二者独立编译链接后会生成格式为COFF(公共目标文件格式)的.out文件。因此需要编写程序实现COFF文件到AIS文件的转换,本次设计中整个转换过程使用C语言在VC6.0环境实现。

3.1 COFF文件格式分析

COFF文件以段的形式将程序中的代码和数据进行组织,默认情况下COFF文件包含3个段:.text为可执行代码段;.data为初始化数据段;.bss为未初始化数据段。一个完整的COFF文件如图2所示,包括以下几部分,依次为文件头、可选文件头、段信息表、段数据、重定位信息、行号入口表、符号表和字符串表。

COFF文件中与下载无关的冗余信息比较多,其中文件头、可选文件头、段信息表、段数据是本次研究的重点,现对本次设计使用到的信息详述如下。

1)文件头保存了COFF文件的基本信息,如段数目、符号表位置等。长度为22字节。文件头的前两个字节为魔幻数,标注COFF文件的版本,适用于TI公司DSP的魔幻数为0x00C2,第16、17字节为可选文件头的长度,该数值为0或28。0表示文件中不包含可选文件头部分。否则长度为28字节。

2)可选文件头从偏移量0x16处廾始,长度可以为0。TI的DSP采用的可选文件头长度为28字节。可选文件头中以字节为单位标注了代码段、已初始化数据段和未初始化数据段的大小和基地址等信息,其中最重要的是第16到第20字节,为可执行程序的入口地址。

3)段信息表位于可选文件头之后。通常编译之后产生的数据段有很多,所以COFF文件的段信息表分成很多部分,每一个部分长度为48字节。前八个字节用来保存段名,系统默认的段名有.text,.data,.bss等。12到15字节是段数据的运行地址,也就是将可执行文件载入内存时,这个地址就是段数据第一个字节的位置。16到19字节以字节为单位标注段数据的长度。20到23字节标注段数据在COFF文件中的偏移量。40到43字节是段的属性标识,与下载相关的标识如表1所示,其余标识符数据不需要下载。

4)数据段保存段信息表所描述的数据,数据以原始数据的形式存放,只有需要下载的数据段才保存在该处。

3.2 AIS格式分析及格式转换程序设计

TI对AIS的定义为Application Image Script,应用镜像脚本,是一种镜像文件格式。AIS脚本以魔幻字0x41504954开始,之后包括命令和数据两部分,表2所示是AIS中命令代码。称之为Opcode。在系统启动的第一个阶段,RBL会对AIS格式的UBL文件中的Opcodes进行解析执行。

上述命令代码中Section Load和Jump_Close是最重要的两个。具体的命令及数据格式如图3所示。

Section Load是数据段复制命令,以命令代码0x58535901开始,之后的数据以32位为长度,分别是复制的目的地址、数据长度和要复制的数据。当所有需要下载的数据段都已复制完成后,需要以Jump_Close命令结束。Jump_Close命令的数据部分提供了一个32位的入口地址,该地址为应用程序的入口地址。程序会跳转到该入口地址运行应用程序。

COFF到AIS文件格式转换的过程首先就是读取COFF文件头数据,获得文件中数据段的数量,然后根据段信息表来判断该数据段是否需要下载、下载的目的地址、数据长度和数据在COFF文件中起始地址。然后将段起始地址、数据长度和数据(ROW DATA格式)填写到Section Load指令的数据部分,每个数据段对应一条Section Load指令。这一过程中只处理需要下载的数据段,因为不需要下载的数据段即未初始化数据段是在程序运行过程中被赋值的。下载的各个数据段按照目的地址由低到高的顺序填写到AIS文件中,直到所有数据段都处理完成,最后以Jump_Close命令结束,便得到了可用于烧写的AIS文件。软件流程如图4所示。

4 一个完整的自动加载实现过程

基于DM648的核心板原理框图如图5所示。核心板上的主要资源包括:TMS320DM648处理器,最高工作频率为1.1 GHZ;256 MB的DDR2存储器,工作频率为533 MHz;32 MB的NOR FLASH,型号为S29GL256N,每个扇区大小为128 KB。

1)准备工作

在CCS环境中使用C语言编写UBL和应用程序,编泽生成.out文件,使用3.2节提到的转换程序将.out文件转换为AIS文件。后缀为.ais。

2)启动模式选择及下载环境创建

配置DM648芯片引脚BOOTMODE[0:

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

网站地图

Top