DSP 5509 CMD文件编写

 

在DSP系统中,存在大量、各式各样的存储器,CMD文件所描述的,就是开发工程师对物理存储器的管理、分配和使用情况。CMD全称链接器配置文件,是存放链接器配置信息的,简称命令文件,有三部分组成分别为:输入/输出定义、memory命令、SECTIONS命令。

  1. 、输入/输出定义:

.obj文件:链接器要链接的目标文件;

.lib文件:链接器要链接的库文件;

.map文件:链接器生成的交叉索引文件;

.out文件:链接器生成的可执行代码;

 

  1. 、MEMORY命令

描述系统实际的硬件资源,无论DSP芯片自带还是用户外扩的,凡是可以使用的、需要用到的存储器和空间,用户都要一一声明出来:有哪些存储器,它们的位置和大小。

伪指令:

PAGE关键词:对独立的存储空间进行标记,页号n的最大值为255。实际应用中一般分为两页:PAGE0程序存储器好PAGE1数据存储器。

name:存储区间的名字,不超过8个字符,不同的PAGE上可以出现相同的名字,一个PAGE内不许有相同的name。

origin:空间的起始地址。

length:空间的数据长度

  1. 、SECTIONS命令

描述段如何定位。

.vectors:中断向量表

.cinit:存放C程序中的变量初值和常量;

.const:存放C程序中的字符常量、浮点常量和用const声明的常量;

.switch:存放C程序中的switch语句的跳帧表;

.text:存放C程序的代码;

.bss:存放C程序中的全局和静态变量保留存储空间;

.far:为C程序用far声明的全局和静态变量保留空间;

.stack:为C程序系统堆栈保留存储空间,用于保存返回空间、函数间的参数传递、存储局部变量和中间结果。

.sysmem:用于C程序中的malloc、calloc和realloc函数动态分配存储空间。

 

其实在写.CMD文件主要就是告诉DSP:程序放哪,数据放哪,堆栈放哪、中断向量放哪。

例:

 

/*-w

-stack 500

-sysstack 500

-l rts55x.lib

-heap 102400

*/

-heap 81920 /*100KB=102400 sysmem动态分配的内存大小*/

 

MEMORY

{

    PAGE 0:

 

        MMR         : origin = 0000000h, length = 00000c0h

        SPRAM       : origin = 00000c0h, length = 0000040h

        VECS        : origin = 0000100h, length = 0000100h

        SARAM0      : origin = 0010100h, length = 0000F00h

        SARAM1      : origin = 0011000h, length = 0007000h

        DARAMBOOT0  : origin = 0000300h, length = 0001400h /*一次加载用的内存*/

        SARAM2     : origin = 0018000h, length = 0004000h

        SARAM3     : origin = 001c000h, length = 0004000h

        DARAM3     : origin = 000c000h, length = 0004000h

 

   PAGE 1:

        DARAMBOOT1 : origin = 0001700h, length = 0001400h  /*二次加载用的内存*/

        DARAM0     : origin = 0002B00h, length = 0001200h                 

        DARAM00    : origin = 0003D00h, length = 0000100h

        DARAM01    : origin = 0003E00h, length = 0000100h

        DARAM02    : origin = 0003F00h, length = 0000100h

        DARAM03    : origin = 0004000h, length = 0000100h

        DARAM1     : origin = 0004100h, length = 0003F00h

        DARAM2     : origin = 0008000h, length = 0004000h

       /* DARAM3     : origin = 000c000h, length = 0004000h

        SARAM2     : origin = 0018000h, length = 0004000h

        SARAM3     : origin = 001c000h, length = 0004000h*/

        SARAM4     : origin = 0020000h, length = 0020000h

       

        SARAM12    : origin = 0040000h, length = 0004000h

        SARAM13    : origin = 0044000h, length = 0004000h

        SARAM14    : origin = 0048000h, length = 0004000h

        SARAM15    : origin = 004c000h, length = 0004000h

       

        CE0        : origin = 0050000h, length = 03b0000h

        CE1        : origin = 0400000h, length = 0400000h

        CE2        : origin = 0800000h, length = 0400000h

        CE3        : origin = 0c00000h, length = 03f8000h

       

        PDROM      : origin = 0ff8000h, length = 07f00h

        /*   VECS       : origin = 0ffff00h, length = 00100h */ /* reset vector */

}      

 

 

SECTIONS

{

        .vectors  : {} > VECS   PAGE 0  /* interrupt vector table */

        .cinit    : {} > SARAM0 PAGE 0

        .text     : {} > SARAM1 PAGE 0       

 

        .stack    : {} > DARAM0 PAGE 1

        .sysstack : {} > DARAM0 PAGE 1

        .sysmem   : {} > SARAM4 PAGE 1

        .cio      : {} > DARAM1 PAGE 1

        .data     : {} > DARAM1 PAGE 1

        .bss      : {} > DARAM1 PAGE 1 

        .const    : {} > DARAM1 PAGE 1

                 

        .csldata  : {} > DARAM0 PAGE 1

        .mybuffer : {} > SARAM4 PAGE 1

             .mybuffer1: {} > DARAM2 PAGE 1

             .hpiEventbuff: {} > DARAM00 PAGE 1

             .hpiRecvbuff : {} > DARAM01 PAGE 1

        .hpiSendbuff : {} > DARAM02 PAGE 1

        .hpiDebugbuff: {} > DARAM03 PAGE 1

 

 

        .fftcode : {} > SARAM2 PAGE 0                  /* FFT-specific sections  */ 

        .twiddle : {} > SARAM3 PAGE 0, align(2048)

        .input   : {} > DARAM3 PAGE 0, align(4)  /* this is due to long-word data memory access */

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值