DSP外挂Flash在系统编程及并行引导装载方法
介绍引导表的形成和装载过程(设用户程序为测试指示灯的程序,源文件为main.asm和vectors.asm?源代码省略)。
3.2链接配置文件编写
(文件名为TestLedLink.cmd)
MEMORY{
PAGE0:
VEC:org=0100h,len=0080h?;中断向量的首地址和块长度
CODE:org=0180h,len=0F80h?;程序块的首地址和块长度
PAGE1:
STACKS:org=1100h,len=0100h?;堆栈区的首地址和块长度
DATA:org=1200h,len=1000h?;数据块的首地址和块长度
}
SECTIONS{
.vectors:>VECPAGE0?;将中断向量放入程序页的VEC区
.text?>CODEPAGE0?;将程序代码放入程序页的CODE区
.stack?>STACKSPAGE1?;将堆栈放入数据页的STACKS区
.bss?>DATAPAGE1?;将未初始化变量放入数据页的DATA区
.data?>DATAPAGE1?;将初始化数据放入数据页的DATA区
}
链接配置文件写好后,通过DSP仿真软件CCS编译链接即可生成TestLed.out文件。在汇编时要注意,不论是DOS下的ASM500还是WINDOWS下的CCS都必须加上-v548开关量,否则不能生成正确的引导表。
3.3HEX转换配置文件编写
(文件名为TestLedHex.cmd)
TestLed.out;转换的文件名,即编译链接后的.out文件
-a?;ASCII-HEX格式
-mapTestLed.mxp?;生成的映射文件名,可不生成该文件
-oTestLed.hex?;转换后的HEX文件名
-memwidth16?;系统存储器宽度为16位
-romwidth16?;ROM器件宽度为16位
-boot?;将COFF文件中各段转换为引导表的格式(替代SECTIONS伪指令)
-bootorg0x8000;引导表放在FLASH的8000H开始的单元
-e0x0100?;装入引导表后程序运行的起始地址
HEX转换配置文件写好后,使用CCS提供的转换工具HEX500将生成的COFF目标文件TestLed.out转化为标准的ASCII—HEX格式的文件TestLed.hex。注意在转换时一定要把TestLedHex.cmd文件的扩展名cmd加上。
3.4构造引导表并写入FLASH
经过HEX转换生成的TestLed.hex文件内容。
文件开始为ASCIISTX字符,结束为ASCIIETX字符,$A8000表示引导表存放的首地址,接下来的数据就是从8000H单元存放的引导表的内容,转换后的TestLed.hex文件可直接由编程器烧写进FLASH,也可通过在系统编程的方法由上述的DSP烧写程序写进FLASH。执行烧写程序前需要编写一个简单的程序将.HEX文件中起始符、首地址、结束符等与引导表无关的信息去掉,并转换为DSP能识别的文件格式(如.Dat),采用.copy或.include命令将该文件作为数据段嵌入烧写进程序中?同时注意在FLASH的0FFFFH单元写入引导表起始地址8000H。烧写FLASH后数据存放格式。
引导表烧写进FLASH后,将MP/Mc引脚置低,上电复位后引导程序就会自动将FLASH中的用户程序搬进片内RAM,搬运完毕后即跳转到程序入口地址,高速运行用户程序。
此方法适用于程序代码小于16K的情况,将用户程序全部导入C5402片内RAM中即可;当用户程序较大而超过16K时,需要外扩程序存储器,此时在引导表中需用到扩展的程序计数器(XPC),来寻址扩展的程序存储空间。
《DSP外挂Flash在系统编程及并行引导装载方法(第2页)》
本文链接地址:http://www.oyaya.net/fanwen/view/173104.html
3.2链接配置文件编写
(文件名为TestLedLink.cmd)
MEMORY{
PAGE0:
VEC:org=0100h,len=0080h?;中断向量的首地址和块长度
CODE:org=0180h,len=0F80h?;程序块的首地址和块长度
PAGE1:
STACKS:org=1100h,len=0100h?;堆栈区的首地址和块长度
DATA:org=1200h,len=1000h?;数据块的首地址和块长度
}
SECTIONS{
.vectors:>VECPAGE0?;将中断向量放入程序页的VEC区
.text?>CODEPAGE0?;将程序代码放入程序页的CODE区
.stack?>STACKSPAGE1?;将堆栈放入数据页的STACKS区
.bss?>DATAPAGE1?;将未初始化变量放入数据页的DATA区
.data?>DATAPAGE1?;将初始化数据放入数据页的DATA区
}
链接配置文件写好后,通过DSP仿真软件CCS编译链接即可生成TestLed.out文件。在汇编时要注意,不论是DOS下的ASM500还是WINDOWS下的CCS都必须加上-v548开关量,否则不能生成正确的引导表。
3.3HEX转换配置文件编写
(文件名为TestLedHex.cmd)
TestLed.out;转换的文件名,即编译链接后的.out文件
-a?;ASCII-HEX格式
-mapTestLed.mxp?;生成的映射文件名,可不生成该文件
-oTestLed.hex?;转换后的HEX文件名
-memwidth16?;系统存储器宽度为16位
-romwidth16?;ROM器件宽度为16位
-boot?;将COFF文件中各段转换为引导表的格式(替代SECTIONS伪指令)
-bootorg0x8000;引导表放在FLASH的8000H开始的单元
-e0x0100?;装入引导表后程序运行的起始地址
HEX转换配置文件写好后,使用CCS提供的转换工具HEX500将生成的COFF目标文件TestLed.out转化为标准的ASCII—HEX格式的文件TestLed.hex。注意在转换时一定要把TestLedHex.cmd文件的扩展名cmd加上。
3.4构造引导表并写入FLASH
经过HEX转换生成的TestLed.hex文件内容。
文件开始为ASCIISTX字符,结束为ASCIIETX字符,$A8000表示引导表存放的首地址,接下来的数据就是从8000H单元存放的引导表的内容,转换后的TestLed.hex文件可直接由编程器烧写进FLASH,也可通过在系统编程的方法由上述的DSP烧写程序写进FLASH。执行烧写程序前需要编写一个简单的程序将.HEX文件中起始符、首地址、结束符等与引导表无关的信息去掉,并转换为DSP能识别的文件格式(如.Dat),采用.copy或.include命令将该文件作为数据段嵌入烧写进程序中?同时注意在FLASH的0FFFFH单元写入引导表起始地址8000H。烧写FLASH后数据存放格式。
引导表烧写进FLASH后,将MP/Mc引脚置低,上电复位后引导程序就会自动将FLASH中的用户程序搬进片内RAM,搬运完毕后即跳转到程序入口地址,高速运行用户程序。
此方法适用于程序代码小于16K的情况,将用户程序全部导入C5402片内RAM中即可;当用户程序较大而超过16K时,需要外扩程序存储器,此时在引导表中需用到扩展的程序计数器(XPC),来寻址扩展的程序存储空间。
《DSP外挂Flash在系统编程及并行引导装载方法(第2页)》