2系列DSP学习笔记 1cmd文件编写.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2系列DSP学习笔记 1cmd文件编写

1·什么是CMD文件,它有什么作用。 CMD文件是用来说明对应的对应的代码、数据、变量的存放空间。 它包括两个指令SECTOINS和MEMORY。 如果把RAM和ROM看成是两个仓库的话,那MEMORY指令就是把这两个仓库再分成不同的区域。如果把不同的代码段是看成一件件货物的话,那么SECTOINS指令则指出了这些货物对应的存放位置。 .cmd文件 由汇编器产生的COFF格式的OBJ文件中的段作为构造块,当有多个文件进行链接时,链接器会将输入段结全在一起产生可执行的COFF输出模块,然后链接器为各输出段选择存储器地址。 1.1 MEMORY指令说明 存储器(MEMORY)伪指令,用来定义目标系统的存储器空间。MEMORY可以定义存储器的区域,并指定起始地址和长度。 MEMORY伪指令的一般语法: MEMORY { PAGE 0: name1[(attr)]:origin=constant, length=constant; PAGE n: name1[(attr)]:origin=constant, length=constant; } PAGEn中的页号n最大为255。每个PAGE代表一个完全独立的地址空间。通常PAGE0为程序存储器,PAGE1为数据存储器。 Name1:存储器区间名。可包含8个字符。不同PAGE可以取同样的name1,但在同一个PAGE内区间名不可以相同。 Attr:可选项。规定存储器属性。 R,可以对存储器执行读操作 W,可以对存储器执行写操作 X,破除可以装入可执行的程序代码 I,规定可以对存储器进行初始化 Origin:起始地址。 Length:区间长度。 初始化段用SECTIONS可定位两次:装入和运行。如:一些关键的执行代码必须装在系统的ROM中,但希望在较快的RAM中运行。 未初始化段只可被定位一次。 自己写的关于LF2406A的.cmd文件 MEMORY { PAGE 0: VECS: origin=0h, length=40h ;中断向量表,40h~43h为安全代码 ;或保留代码区,复位向量是0h和1h   FLASH: origin=44h, length=0ffbch ;32Kflash SARAM: origin=8000h, length=800h ;当PON=1DON=0, ;SARAM映射为程序存储空间   B0: origin=ff00h, length=100h ; 256 WORD DARAM,CNF=1时 PAGE 1: MMRS: origin=0h, length=60h ;内部映射寄存器,或保留区间 B2: origin=60h, length=20h ;32 WORD DARAM B0: origin=200h, length=100h ;256 WORD DARAM,CNF=0时 B1: origin=300h, length=100h ;256 WORD DARAM SARAM: origin=800h, length=800h ;2K WORD SARAM,DON=1PON=0 PF1: origin=7000, length=230h ;外设帧1   EVA: origin=7400, length=32h ;外设帧2 EVB: origin=7500, length=32h ;外设帧3 } 内部的所有的存储器都定义过了,最后的三个PF1、EVA、EVB可以不用定义的,因为是这外设的寄存器映射。 1.2 SECTOINS指令说明 段(SECTOINS)伪指令,告诉链接器如何将输入段结合成输出段并告诉链接器将输出段放在存储器的何处。 SECTIONS { Name:[property,property,…] Name:[property,property,…] Name:[property,property,…] } Name:源程序中的段名。如.text Property:段的属性参数。一个段的属性参数包括下列五种: 1.2.1 Load allocation,由它定义将输出段加载到存储器中的什么位置。 语法:load: allocation、allocation、allocation (allocation是将逻辑段定位的地址说明) 例如:.text: load=0x1000 ;将输出段定位到一个特定的地址 .text: loadROM ;将输出段定位到命名为ROM的存储区 .text: align=0x80 ;关键词align规定输出段.text定位到从地址边界0x80开始

您可能关注的文档

文档评论(0)

zhuwenmeijiale + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档