第6章使用C语言操作DSP的寄存器0324规范.ppt
文本预览下载声明
6.4.4 CMD文件的编写(分为2个步骤) 6.4 CMD文件 1. 通过MEMORY 伪指令来指示存储空间 MEMORY伪指令语法如下: MEMORY { PAGE0:name0[(attr)]:origin=constant,length=constant PAGEn:namen[(attr)]:origin=constant,length=constant } PAGE 用来标识存储空间的关键字。PAGEn的最大值为PAGE255。X281x的DSP中用到是PAGE0、PAGE1,其中PAGE0为程序空间,PAGE1为数据空间。(实际应用中一般分为2页) 6.4.4 CMD文件的编写 6.4 CMD文件 1. 通过MEMORY 伪指令来指示存储空间 name 代表某一属性或地址范围的存储空间名称。名称可以是1~8个字符,在同一页内名称不能相同,不同页内名称可以相同。 attr 用来规定存储空间的属性。共有4个属性,只读R,只写W,该空间可包含可执行代码X,该空间可以被初始化I。实际使用为了简化,通常会忽略此选项,表示存储空间具有所有的属性。 origin 用来定义存储空间的起始地址。 length 用来定义存储空间的长度。 6.4.4 CMD文件的编写 6.4 CMD文件 1. 通过MEMORY 伪指令来指示存储空间(举例) MEMORY { PAGE 0 : FLASH : origin = 0x3D8000, length = 0x01FF80 /* FLASH */ BEGIN : origin = 0x3F7FF6, length = 0x000002 ROM : origin = 0x3FF000, length = 0x000FC0 RESET : origin = 0x3FFFC0, length = 0x000002 RAML0 : origin = 0x008000, length = 0x001000 PAGE 1 : RAMM0 : origin = 0x000000, length = 0x000400 /* RAM M0 */ RAMM1 : origin = 0x000400, length = 0x000400 /* RAM M1 */ RAML1 : origin = 0x009000, length = 0x001000 /* RAM L1 */ RAMH0 : origin = 0x3F8000, length = 0x002000 /* RAM H0 */ } 6.4 CMD文件 6.4.4 CMD文件的编写 6.4 CMD文件 2. 通过SECTIONS 伪指令来将段分配到存储空间 (也就是指定段的实际硬件地址空间) SECTIONS { name:[property,property,property,…] name:[property,property,property,…] …… } SECTIONS伪指令语法如下: name 为输出段的名称;property 为输出段的属性。 6.4.4 CMD文件的编写 6.4 CMD文件 输出段的属性主要有以下几个: load 定义输出段将被装载到哪里的关键字,其语法: load = allocation 或者 allocation 或者 allocation 其中,allocation可以是绝对地址,如“load=0x000400”;更多的时候,allocation是存储空间的名称,这也是最通常的用法。 run 定义输出段从哪里运行的关键字,其语法: run = allocation 或者 runallocation CMD文件规定,当只出现一个关键字load或者run时,表示load地址和run地址是重叠的,大部分时候都是重叠的。 PAGE 定义段分配到存储空间的类型,其语法: PAGE=0或者PAGE=1,前者说明段分配到程序空间,后者说明段分配到数据空间。 6.4.4 CMD文件的编写 6.4 CMD文件 2. 通过SECTIONS 伪指令来将段分配到存储空间 根据输出段的属性,SECTIONS伪指令语法就可以如下: SECTIONS { name 0 : 存储空间名称, PAGE = 页数 name n : 存储空间名称, PAGE = 页数 } name :编译器输出段的名称。 存储空间名称:采用MEMORY伪指令指示的存储器空间名称。 PAGE :前面存储器空间名称对应的存储器页。 6.4.4 CMD文件的编写 6.4 CMD文件 2. 通过SECTIONS 伪指令来将段分配到存储空间(举例) SECTIONS { .c
显示全部