基于C语言和GEL语言的Flash编程新方法
引言
在DSP应用系统开发的后期,一般需要将用户程序写进Flash等非易失性存储器,以便采用并行引导的方法实现用户程序的自举加载。这一步骤称为“烧写”;针对Flash的烧写又称为Flash编程。以往的编程方法大多采用汇编语言编写程序,可读性较差,并将引导表的制作也放在程序中实现;用户程序一变,烧写程序就得重新编写,不具有通用性。参考文献[1]采用C语言完成Flash读写,较清晰地体现了Flash编程的思想,但是它采用指针访问Flash空间,不能对高端Flash(64 K字存储空间以外)进行访问,且将引导表作成数组的方法仍显机械。
这里提出的Flash编程方法完全采用C语言编写烧写程序,运用函数地址访问高端Flash,借助数据文件将引导表加载到数据空间。GEL(General Extension Language,通用扩展语言)作为一种程序扩展语言,被广泛用于调试及程序运行环境的定制。这里将GEL语言运用于Flash编程,可以控制C程序在数据加载完成后执行烧写过程,从而实现大引导表的烧写。
1 DSP开发板及Flash存储器
笔者使用的DSP开发板上有1片TMS320VC5402通用DSP芯片、1片SST39VF400A存储芯片(Flash)、键盘和液晶显示器等。其中Flash容量为256 K字(1字=16位),组织为128个扇区或8个块。为充分发挥Flash容量大的特点,本系统在硬件上将Flash空间的映射设计为:在上电自举过程中,Flash空间的0x04000~0x0FFFF映射到数据空间的0x4000~0xFFFF;上电自举完成后,整个Flash空间0x00000~0x3FFFF映射到程序空间的0x80000~0xBFFFF,即映射到了TMS320VC5402的扩展程序空间,处于高地址,因此称为“高端Flash”。由此可知,对系统进行应用开发时,Flash总是表现为高端Flash。
图1 Flash编程流程
2 Flash编程流程
用户程序一般以可执行COFF(公共目标文件格式)文件格式存在(后缀名为.out),Flash编程所要完成的就是将此可执行文件转换成特定的ASCII码引导表的格式,并按此格式顺序写进Flash。Flash编程流程如图1所示。下面仅以一个动画显示程序qq.out为例,介绍如何将其烧写进Flash。
2.1 生成引导表
通过Hex转换工具,将用户程序qq.out文件转换成十六进制形式的ASCII码流文件(ASCIIHex格式文件[2])qq.asc。首先编写一个convert.cmd命令文件。部分内容如下:
qq.out/*用户程序*/
-a/*转换成ASCIIHex格式文件*/
-map qq.mxp/*包含引导表的长度等信息*/
-o qq.asc/*转换成qq.asc*/
执行命令行“hex500 convert.cmd”将产生qq.mxp和qq.asc文件。其中qq.mxp文件有这样的信息:“CONTENTS: 00000000…0000433b”。表示qq.asc中的引导表长度为0x433C字,内容大致为:“10 AA 7F FF 00 02 00 00…”。
相关文章
- 2024-02-07连续累计自动衡器(皮带秤)耐久性试验的讨论
- 2024-05-17DAW30-100弯板式称重系统在高速公路计重收费中的应用
- 2024-07-03基于VXI总线的水声基阵信号采集与分析
- 2024-10-23海洋渔业科学与技术专业工程力学课程教与学的探讨
- 2023-10-19磁光调制锁相椭偏仪与多层磁光薄膜测试系统
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。