ADSP-218X的IDMA接口自举设计
c:EXAMPLE1.DXE DSP.OUT -idma
其中的开关-idma表示要将EXAMPLE1.DXE转换为IDMA下载格式,输出文件为DSP.OUT。下面简单地表示一下DSP.OUT文件格式。
0040
4000
FFFF
FFFE
…
可以看出它不是C语言格式,因此要将DSP.OUT改写成DSP.H。它内含C语言格式的常量数组,供主机下载程序代码到218X使其自举。
下面对DSP.H文件内容进行编写,并分析其结构。
注:在←及以后的内容DSP.H文件中是没有的,只是帮助说明。
#define MAX_CODE_LEN 257
unsigned short DSP_ROM_CODE[MAX_CODE_LEN]={←32位机使用short,而16位机要将short改为int 0x0040, ←当前一段要下载的代码长度为0x40,不包含IDMA控制字
0x4000, ←IDMA控制字。先初始化数据空间,地址为数据空间的0x0000,其中4表示访问的是DM数据空间
0xFFFF, ←第一个数据字
0xFFFE, ←第二个数据字
…………
0x001F,←第0x40个数据字
0x00B8,←当前一段要下载的代码长度
0x0001,←IDMA控制字。下面下载程序代码至PM程序空间,起始地址为0x0001
0x0000,←第1个程序代码的高16位一个程序代码由24位的字组成,因此要下载两个字
0x0000,←第1个程序代码的低8位
…………
0x000F,←最后一个程序代码的低8位,相当于下载的第0xB8个程序字
0x0002,←当前段长度为2,218X的IDMA口程序下载最后是对程序空间地址0写代码。
0x0000, ←IDMA控制字。下载程序代码至PM程序空间,起始地址为0x0000,一写完,218X就开始运行程序
0x1803,
0x000F,
0xffff};←0xffff表示下面没有数据要主机下载了
从上面描述可以看出,主机下载218X程序时,要多个段。如果218X程序在数据空间定义了常量数组,就要先下载数据段,然后下载程序段最后再对程序空间地址0x0000写代码。如果218X工作在IDMA接口自举模式下,在系统复位后,218X并不执行程序。一旦主机对程序空间地址0x0000写了代码,218X才开始运行程序。
(凹丫丫范文网fanwen.oyaya.net收集整理)
4 主机下载218X程序
在主机的C程序中,将DSP.H作为头文件,DSP_ROM_CODE是填充218X程序的常量数组,数组长度由MAX_CODE_LEN宏定义。由主机将DSP_ROM_CODE中的数据按其格式下载
《ADSP-218X的IDMA接口自举设计(第2页)》