自引导汇编程序主要是配置基本的寄存器,并将保存在外部FLASH中的二进制程序拷贝到DSP内部的RAM中再执行。汇编程序如下:

2.2.3 主程序main.c

主程序是DSP要实现具体功能的主体,其定义的主函数main()经编译后在函数_c_int00中调用,因此在上面的引导程序结束时,将跳转到函数_c_int00,即主函数main执行。另外在主程序中,还要包含把ADSP218x的应用程序从FLASH传送到ADSP218x内部存储区的子程序。

2.2.4 链接命令程序link.cmd

链接命令程序用于定义DSP系统各存储区的开始地址及大小,并分配编译后各段到相应的存储空间,link.cmd内容如下:

2.3 TMS320C62X通过IDMA接口把ADSP218x程序拷贝到内部存储器的方法

从TMS320C62x来看,IDMA接口只有三个寄存器,分别是IDMA控制寄存器IDMA_IAL,IDMA读数据寄存器IDMA_IRD和IDMA写数据寄存器ID-MA_IWR。

该三个寄存器的定义如下:

访问ADSP218x的内存单元一般需要三个步骤:

第一步:向IDMA控制寄存器写该数据单元所在的页面。编程只需要向IDMA_IAL控制寄存器写入恰当控制字即可。例如要向APSP218x的PM区的第5页写数据,则应该有下面的命令:

IDMA_IAL=0x8050;

第二步:向IDMA控制寄存器写该数据的地址。

如果是PM区,则该数据的地址为当前地址,如果是DM区,必须将当前地址加0x4000。例如要向PM区的0x0809区写数据,则应该有下面的命令:

IDMA_IAL=0x0809;

如果向DM区写数据,则有命令:

IDMA_IAL=0x0809+0x4000;

第三步:读写数据。如果是读数据,例如要将数据读入到unsigned short XX单元,则应该用下面的命令:

XX=(unsigned short)IDMA_IRD;

如果是写数据,例如要将数据unsigned short YY写入某地址单元,则应该用下面的命令IDMA_IWR=YY;

注意以后每读取或写数据,IDMA接口的地址指针自动加1。

TMS320C62x通过IDMA口,在启动后把AD-SP218x的应用程序拷贝到ADSP218x的内部存储器中。ADSP218x的应用程序作为一个asm文件供TMS320C62x应用软件调用,具体格式为: