个人的网站怎么备案表,静态网页模板免费下载的网站,做动漫网站要多少钱,粮油移动端网页设计素材马上注册#xff0c;结交更多好友#xff0c;享用更多功能#xff0c;让你轻松玩转社区。您需要 登录 才可以下载或查看#xff0c;没有帐号#xff1f;注册x推荐CMD的专业名称叫链接器配置文件#xff0c;是存放链接器的配置信息的#xff0c;我们简称为命令文件#…马上注册结交更多好友享用更多功能让你轻松玩转社区。您需要 登录 才可以下载或查看没有帐号注册x推荐CMD的专业名称叫链接器配置文件是存放链接器的配置信息的我们简称为命令文件其中比较关键的就是MEMORY和SECTIONS两个伪指令的使用常常令人困惑系统出现的问题也经常与它们的不当使用有关。CCS是dsp软件对DOS系统继承的开发环境CCS的命令文件经过DOS命令文件长时间的引申发展已经变得非常简洁(不知道TI文档有没有详细CMD配置说明)。我学CMD是从DOS里的东西开始的所以也从DOS环境下的CMD说起1命令文件的组成命令文件的开头部分是要链接的各个子目标文件的名字这样链接器就可以根据子目标文件名将相应的目标文件链接成一个文件接下来就是链接器的操作指令这些指令用来配置链接器接下来就是MEMORY和SECTIONS两个伪指令的相关语句必须大写。MEMORY用来配置目标存储器SECTIONS用来指定段的存放位置。结合下面的典型DOS环境的命令文件link.cmd来做一下说明file.obj //子目标文件名1file2.obj //子目标文件名2file3.obj //子目标文件名3- o prog.out //连接器操作指令,用来指定输出文件- m prog.m //用来指定MAP文件MEMORY{ 略 }SECTIONS{ 略 }otherlink.cmd本命令文件link.cmd要调用的otherlink.cmd等其他命令文件则文件的名字要放到本命令文件最后一行因为放开头的话,链接器是不会从被调用的其他命令文件中返回到本命令文件。2 MEMORY伪指令MEMORY用来建立目标存储器的模型SECTIONS指令就可以根据这个模型来安排各个段的位置MEMORY指令可以定义目标系统的各种类型的存储器及容量。MEMORY的语法如下MEMORY{PAGE 0 : name1[(attr)] : origin constant,length constantname1n[(attr)] : origin constant,length constantPAGE 1 : name2[(attr)] : origin constant,length constantname2n[(attr)] : origin constant,length constantPAGE n : namen[(attr)] : origin constant,length constantnamenn[(attr)] : origin constant,length constant}PAGE关键词对独立的存储空间进行标记页号n的最大值为255实际应用中一般分为两页,PAGE0程序存储器和PAGE1数据存储器。name存储区间的名字不超过8个字符不同的PAGE上可以出现相同的名字(最好不用免的搞混)一个PAGE内不许有相同的name。attr的属性标识为R表示可读W可写X表示区间可以装入可执行代码I表示存储器可以进行初始话什么属性代码也不写表示存储区间具有上述的四种属性基本上我们都选择这种写法。origin:略。length:略。下面是经常用的2407的简单写法大家参考,程序从0x060开始要避开加密位不从0x0044开始更可靠一点此例中的同名的页可以只写第一个其后省略但写上至少安全一点MEMORY{PAGE 0: VECS: origin 0x0000, length 0x40PAGE 0: PROG: origin 0x0060, length 0x6000PAGE 1: B0 : origin 0x200, length 0x100PAGE 1: B1 : origin 0x300, length 0x100PAGE 1: DATA: origin 0x0860, length 0x0780}3 SECTIONS伪指令SECTIONS指令的语法如下SECTIONS{.text: {所有.text输入段名} load加载地址 run 运行地址.data: {所有.data输入段名} load加载地址 run 运行地址.bss: {所有.bss输入段名} load加载地址 run 运行地址.other: {所有.other输入段名} load加载地址 run 运行地址}SECTIONS必须用大写字母其后的大括号里是输出段的说明性语句每一个输出段的说明都是从段名开始段名之后是如何对输入段进行组织和给段分配存储器的参数说明以.text段的属性语句为例“{所有.text输入段名}”这段内容用来说明连接器输出段的.text段由哪些子目标文件的段组成举例如下SECTIONS{.text:{ file1.obj(.text) file2(.text) file3(.text,cinit)}略}指明输出段.text要链接file1.obj的.text和 file2的.text 还有file3的.text和.cinit。在CCS的SECTIONS里通常只写一个中间没有内容的“{ }”就表示所有的目标文件的相应段接下来说明“load加载地址 run 运行地址”链接器为每个输出段都在目标存储器里分配两个地址一个是加载地址一个是运行地址。通常情况下两个地址是相同的可以认为输出段只有一个地址这时就可以不加“run 运行地址”这条语句了但有时需要将两个地址分开比如将程序加载到FLASH然后放到RAM中高速运行这就用到了运行地址和加载地址的分别配置了如下例所示.const :{略} load PROG run 0x0800常量加载在程序存储区配置为在RAM里调用。“load加载地址”的几种写法需要说明一下首先“load”关键字可以省略“”可以写成“”, “加载地址”可以是地址值、存储区间的名字、PAGE关键词等所以大家见到“.text:{ } 0x0080”这样的语句可千万不要奇怪。“run 运行地址”中的“ ”可以用“”其它的简化写法就没有了。大家不要乱用。4 CCS中的案例在CCS中的命令文件好像简化了不少少了很多东西语句也精简了好多首先不用指定输入链接器的目标文件CCS会自动默认处理其次链接器的配置命令也和DOS的环境不同需要了解的请找TI文档吧下面是刘和平书中的例子大家来看看是不是可以很精确的理解了呢-stack 40/*-------------------------------------------------------------------------*//* 命令文件 – 存储空间 F2407 *//*-------------------------------------------------------------------------*/MEMORY{PAGE 0 : VECS : origin 0h , length 40h /* 程序复位 */PVECS : origin 40h , length 70h /* 外围模块中断向量 */PROG : origin 0b0h , length 7F50h /* 在片FLASH */PAGE 1 : 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个单元 */}“load加载地址 run 运行地址”链接器为每个输出段都在目标存储器里分配两个地址一个是加载地址一个是运行地址。通常情况下两个地址是相同的可以认为输出段只有一个地址这时就可以不加“run 运行地址”这条语句了.cinit 存放C程序中的变量初值和常量;.const 存放C程序中的字符常量、浮点常量和用const声明的常量;.switch 存放C程序中switch语句的跳针表;.text 存放C程序的代码;.bss 为C程序中的全局和静态变量保留存储空间;.far 为C程序中用far声明的全局和静态变量保留空间;.stack 为C程序系统堆栈保留存储空间用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果;.sysmem 用于C程序中malloc、calloc和realloc函数动态分配存储空间。