2851|2

6587

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

TI DSP的命令文件CMD [复制链接]

一、在给出命令文件示例前,首先介绍该文件常用到的几种伪指令。

.cinit     程序编译连接时该标号表示部分存放已明确初始化的全局变量和静态变量;

.const        程序编译连接时该标号表示部分存放已明确初始化的字符串常量、全局变量和静态变量;

.switch        程序编译连接时该标号表示部分存放对于大型的switch语句的跳转表;

.text            程序编译连接时该标号表示部分存放可执行代码和浮点数常量;

.bss            该标号表示部分用于存放没有初始化的全局变量和静态变量;

.stack          用该标号定义软件堆栈。

         命令文件名后缀为.CMD的文件实现对程序存储器空间和数据存储器空间的分配。该文件经常用到的伪指令有MEMORY伪指令和SECTIONS伪指令。

           当然用户也可以用C语言编程实现所需的功能。

             MEMORY伪指令用来表示实际存在的目标系统中可被使用的存储器范围,每个存储器范围都有名字、起始地址和长度。MEMORY伪指令的一般语法为:

MEMORY{

                 PAGE0:   name[(attr)]:       origin=constant,   length=constant;

                 PAGE1:   name[(attr)]:       origin=constant,   length=constant;

}

PAGE       标示存储器空间.用户可以规定多达255页,通常PAGE0规定程序存储器,PAGE1规定数据存储器.

name         命名存储器范围.存储器可以是1~8个字符,在不同页上的存储器范围可以具有相同的名字,但在一页之内所有的存储器范围必须具有唯一的名字且必须不重叠.

attr           规定与已命名范围有关的1~4个属性.未规定属性的存储器具有所有4个属性.有效的4个属性包括:

   R  规定存储器只读;

   W  规定存储器只写;

   X  规定存储器可以包含可执行代码;

   I  规定存储器可以被初始化.

origin    规定存储器范围的起始地址.

length   规定存储器范围的长度.

   SECTIONS 伪指令的作用是:描述输入段怎样被组合到输出段内;在可执行程序内定义输出段;规定在存储器内何处存放置输出段;允许重命名输出段.SECTIONS伪指令的一般语法是:

   SECTIONS{

         name:[property, property, property, …]   

         name:[property, property, property, …] 

         name:[property, property, property, …]  

   }

  每一个以name(名字)开始的段说明定义了一个输出段.在段名之后是特性列表,定义段的内容以及它们是怎样被分配的.特性可以用逗号来分开,段可能具有的特性是:

  装载位置,它规定段装载在存储器内何处;

  运行位置,它定义段在存储器内何处运行;

  输入段, 它定义组成输出段的输入段;

  段类型, 它定义特定段类型的标志;

  填充段, 它定义用于填充未初始化空间的数值.

二、下面是一个简单实用的命令文件示例。

-stack   40

/*---------------------------------------*/

/* 命令文件-存储空间F2407    */

/*---------------------------------------*/ 

MEMORY

{  PAGE0: VECS  :origin=0h,    length=40h     /* 程序复位 */

                                PVECS  :origin=40h,    length=70h     /* 外围模块中断向量 */ 

                                     PROG  :origin=0b0h,    length=7F50h     /* 在片FLASH */  

    PAGE1:MMRS :origin=0h,    length=05Fh     /*MMRS */

          B2   :origin=0060h,    length=020h     /*DARAM B2块 */  

          B0   :origin=0200h,    length=100h     /*DARAM B0块 */ 

          B1   :origin=0300h,    length=100h     /*DARAM B1块 */  

          SARAM :origin=0800h,    length=0800h     /*SARAM块 */ 

          EXT   :origin=8000h,    length=8000h     /*外部存储器 */

}

/*-----------------------------------------*/

/* SECTIONS ALLOCATION                    */

/*----------------------------------------*/

SECTIONS{

  .reset   :{   } 〉 VECS    PAGE   0      /*   复位中断向量表 */

     .vectors   :{   } 〉 VECS    PAGE   0      /*   中断向量表 */   

       .pvecs   :{   } 〉 PVECS    PAGE   0      /* 外围模块中断向量表 */

        .text   :{   } 〉 PROG   PAGE   0      /*   代码 */  

        .cinit :{   } 〉 PROG   PAGE   0   

        .bss :{   } 〉 SARAM   PAGE 1      /* 块 B2   */  

        .const :{   } 〉 SARAM   PAGE 1      /* 块 B2   */ 

         .stack :{   } 〉B1        PAGE 1      /* 堆栈---40个单元   */ 

最新回复

TI 老想自己搞一个封闭的,可惜孤胆英雄往往都要被日的。   详情 回复 发表于 2020-8-7 22:55
点赞 关注
 

回复
举报

52

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

很好的分享知识,感谢楼主,学习学习

 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

TI 老想自己搞一个封闭的,可惜孤胆英雄往往都要被日的。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表