zoukankan      html  css  js  c++  java
  • DSP中的cmd文件

    一、CMD文件

    链接命令文件(Link Command Files),以后缀.cmd结尾,简称CMD文件。

    CMD文件的两大功能是指示存储空间和分配段到存储空间。

    在编写CMD文件时,主要采用MEMORY和SECTIONS 两条伪指令。

    在281x调试时,可以将程序代码链接到Flash或者RAM,因此对应两种CMD文件。

     

    MEMORY伪指令

    作用:指示存储空间。

    语法如下:

    MEMORY

    {

    PAGE 0 : name 0[(attr)]:origin = constant, length = constant

    PAGE n : name n[(attr)]:origin = constant, length = constant

    }

    PAGE:用来指示存储空间的关键字。PAGE n的最大值为255。

    name:代表某一属性和地址范围的存储空间名称。长度可以是1~8个字符,在同一页内名称不能相同,不同页内名称可以相同。

    attr:用来规定存储空间的属性,共有四种属性:R-只读、W-只写、X-该空间包含可执行代码、I-该空间可以被初始化。实际使用,常忽略此选项。

    orgin:用来定义存储空间起始地址的关键字。

    length:用来定义存储空间长度的关键字。

     

    举例

    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 */

    }

     

    SECTIONS伪指令

    作用:分配段到存储空间,也就是指定段的实际硬件地址空间。

    语法如下:

    SECTIONS

    {

    name 0 : > 存储空间名称, PAGE = 页数

    name n : > 存储空间名称, PAGE = 页数

    }

    name :编译器输出段的名称。

    存储空间名称:采用MEMORY伪指令指示的存储器空间名称。

    PAGE :前面存储器空间名称对应的存储器页。

     

    举例

    SECTIONS

    {

    .cinit : > FLASH, PAGE = 0

    .text : > FLASH, PAGE = 0

    .const : > FLASH, PAGE = 0

    .econst : > FLASH, PAGE = 0 

    .stack : > RAMM0, PAGE = 1

    .bss : > RAML1, PAGE = 1

    .ebss : > RAML1, PAGE = 1

    }

     

    二、C28x存储器模型

    存储器模型:TMS320C28x将存储器分成程序和数据两个线性块。

    程序存储器:包含可执行代码,初始化数据和开关量;

    数据存储器:包含外部变量、静态变量和系统堆栈。

      编译器产生可重定位的代码和数据块,允许链接器将代码和数据分配到适当的存储器空间,而链接器则根据链接命令文件将代码和数据分配到目标存储器。这些代码和数据块,称为sections(段),有两种基本的sections类型,为初始化段和非初始化段。

     

    初始化段

    初始化段包含数据表和可执行代码。C编译器创建如下初始化段:

    .text段:包含所有可执行代码和常量;

    .cint段:已初始化的变量和常量表(用于C程序);

    .pint段:已初始化的变量和常量表(用于C++程序);

    .const段:包含字符串常数以及用const声明的全局和静态变量;

    .econst段:同.const段,但用far const声明的变量或编译器采用大存储器模式时;

    .switch段:为开关语句(switch)建立的数据表。

     

    未初始化段

      未初始化段在存储器(通常是RAM)中保留空间,程序在运行时可在此空间创建和存储变量。C编译器创建如下非初始化块:

    .bss段:为全局和静态变量保留空间。程序引导过程中,C引导程序会将ROM中的.cint块中的数据复制到.bss块中;

    .ebss段:为用far声明的或大存储器模式下的全局和静态变量保留空间。程序引导过程中,C引导程序会将ROM中的.cint块中的数据复制到.bss块中;

    .stack段:为C系统的堆栈分配的空间,用于函数调用时传递参数以及为局部变量分配空间;

    .sysmem段:为动态存储器分配保留空间,如果未用到malloc函数,则该块的空间为0;

    .esysmem段:为动态存储器分配保留空间,如果未用到far malloc 函数,则该块的空间为0。

  • 相关阅读:
    PowerDesigner使用教程 —— 概念数据模型 (转)
    面板Panel:1.认识Ext.Panel(转)
    批量替换一个数据库中所有表中所有记录
    Ext.data库中几个常用类的原理及其使用 (转)
    也谈C#.NET防止SQL注入式攻击
    jQuery1.3新特性深度分析(Event)
    Sql实现Split
    SQL Server 清除数据库日志脚本(转)
    ExtJS之面向对象编程基本知识
    实战 SQL Server 2005 镜像配置
  • 原文地址:https://www.cnblogs.com/Camilo/p/3488659.html
Copyright © 2011-2022 走看看