TMS320F2812的CMD文件配置详解
TMS320F2812中文手册
TMS320F2812中文手册第1章芯片结构及性能概述TMS320C2000系列是美国TI公司推出的最佳测控应用的定点DSP芯片,其主流产品分为四个系列:C20x、C24x、C27x和C28x。
C20x可用于通信设备、数字相机、嵌入式家电设备等;C24x主要用于数字马达控制、电机控制、工业自动化、电力转换系统等。
近年来,TI公司又推出了具有更高性能的改进型C27x和C28x系列芯片,进一步增强了芯片的接口能力和嵌入功能,从而拓宽了数字信号处理器的应用领域。
TMS320C28x系列是TI公司最新推出的DSP芯片,是目前国际市场上最先进、功能最强大的32位定点DSP芯片。
它既具有数字信号处理能力,又具有强大的事件管理能力和嵌入式控制功能,特别适用于有大批量数据处理的测控场合,如工业自动化控制、电力电子技术应用、智能化仪器仪表及电机、马达伺服控制系统等。
本章将介绍TMS320C28x系列芯片的结构、性能及特点,并给出该系列芯片的引脚分布及引脚功能。
1.1 TMS320C28x 系列芯片的结构及性能C28x系列的主要片种为TMS320F2810和TMS320F2812。
两种芯片的差别是:F2812内含128K×16位的片内Flash存储器,有外部存储器接口,而F2810仅有64K×16位的片内Flash存储器,且无外部存储器接口。
其硬件特征如表1-1所示。
表1-1 硬件特征特征 F2810 F2812 指令周期(150MHz) 6.67ns 6.67ns SRAM(16位/字)18K 18K 3.3V片内Flash(16位/字) 64K 128K 片内Flash/SRAM的密钥有有有有 Boot ROM掩膜ROM 有有外部存储器接口无有事件管理器A和B(EVA和EVB)EVA、EVB EVA、EVB*通用定时器 4 4*比较寄存器/脉宽调制 16 16*捕获/正交解码脉冲电路 6/2 6/2 看门狗定时器有有 12位的ADC 有有*通道数 16 16TMS320C28x系列DSP的CPU与外设(上) ?2?续表特征 F2810 F2812 32位的CPU定时器 3 3 串行外围接口有有串行通信接口(SCI)A和B SCIA、SCIB SCIA、SCIB 控制器局域网络有有多通道缓冲串行接口有有数字输入/输出引脚(共享)有有外部中断源 3 3 核心电压1.8V 核心电压1.8V 供电电压 I/O电压3.3V I/O电压3.3V 封装128针PBK 179针GHH,176针PGF 温度选择‡ A:-40? ~ +85? PGF和GHH PBK S:-40? ~ +125? 仅适用于TMS 仅适用于TMS 产品状况‡‡产品预览(PP) AI AI 高级信息(AI)(TMP)‡‡‡ (TMP)‡‡‡ 产品数据(PD)注:‡ “S”是温度选择(-40? ~ +125?)的特征化数据,仅对TMS是适用的。
2812CMD详解
2812CMD详解CMD:command命令,顾名思义就是命令文件指定存储区域的分配.2812的CMD采用的是分页制,其中PAGE0用于存放程序空间,而PAGE1用于存放数据空间。
1.)#pragma ,CODE_SECTION和DATA_SECTION伪指令#pragma DATA_SECTION(funcA,"dataA"); ------ 函数外声明将funcA数据块定位于用户自定义的段"dataA"中 ------ 需要在CMD中指定dataA段的物理地址2.)MEMORY和SECTIONS是命令文件中最常用的两伪指令。
MEMORY伪指令用来表示实际存在目标系统中的可以使用的存储器范围,在这里每个存储器都有自己的名字,起始地址和长度。
SECTIONS伪指令是用来描述输入端是如何组合到输出端内的。
以常用的F2812_nonBIOS_RAM.cmd F2812_nonBIOS_Flash.cmd 和 DSP281x_Headers_nonBIOS.cmd为例 F2812_nonBIOS_RAM.cmd ----- 用于仿真,无BIOS系统,片外SRAM配置CMD文件里有两个基本的段:初始化段和非初始化段。
初始化段包含代码和常数等必须在DSP上电之后有效的数。
故初始化块必须保存在如片内FLASH等非遗失性存储器中,非初始化段中含有在程序运行过程中才像变量内写数据进去,所以非初始化段必须链接到易失性存储器中如RAM。
已初始化的段:.text,.cinit,.const,.econst,..pinit和.switch...text:所有可以执行的代码和常量.cinit:全局变量和静态变量的C初始化记录.const:包含字符串常量和初始化的全局变量和静态变量(由const)的初始化和说明 .econst:包含字符串常量和初始化的全局变量和静态变量(由far const)的初始化和说明.pinit:全局构造器(C++)程序列表.switch:包含switch声明的列表非初始化的段:.bss,.ebss,.stack,.sysmem,和esysmem.(更好的理解就是,这些段就是存储空间而已).bss: 为全局变量和局部变量保留的空间,在程序上电时.cinit空间中的数据复制出来并存储在.bss空间中。
TMS320F2812头文件资料
目录:1 简介1.1 DSP281x C/C++头文件和外设例程程序包安装1.2 目录结构2 外设位域结构编程方法2.1 传统#define 方法2.2 位域和结构方法2.2.1 外设寄存器结构2.3 增加位域2.3.1 使用Bits-Fields编程时的Read-Modify-Write 考虑2.3.2 使用Bits-Fields编程时的代码大小考虑3 外设范例3.1 开始3.2 例程结构3.2.1 包含文件3.2.2 源代码3.2.3 连接命令文件3.3 例子编程流程3.4 包含的例子3.5 从FLASH开始执行例子4 逐步使用头文件和范例代码4.1 准备4.2 包含DSP281X外设头文件4.3 包含通用范例代码5 常见问题和处理5.1 read-modify-wriye的影响5.1.1 多标志位寄存器写1 清零5.1.2 Volatile Bits 寄存器6 版本变化7 包含内容7.1 支持DSP281X的头文件7.1.1 DSP281X的头文件-主函数7.1.2 DSP281X的头文件-外设位域和寄存器结构定义文件7.1.3 CCS的 .gel 文件7.1.4 变量名和数据段7.2 通用范例代码7.2.1 支持的外设中断扩展模块7.2.2 特殊外设文件7.2.3 有用函数源文件7.2.4 范例连接 .cmd文件1 简介TI针对’DSP281x系列DSP芯片使用通用的C/C++语言编写了外设头文件和范例程序。
这些代码可以作为应用的工具或根据使用者的需要而作为开发平台的基础。
传统的编程方法需要程序员自行编写寄存器的H文件和所需的片内外设的初始化、配置文件,与传统的编程方法比较,基于C281x C/C++的头文件提供了软件开发的程序框架,其中包含有寄存器结构定义文件、外设头文件和器件的宏与类型定义等系统所需的各种文件。
通过在那新的或原有的工程文件使用外设头文件,开发者可很容易的使用C或C++语言来控制片上外设。
hello第四课(二)f2812存储器映射及cmd详解-日志-eyes417-
hello第四课(二):f2812存储器映射及cmd详解-日志-eyes417-...2812存储器映射2812具有32位的数据地址和22位的程序地址,总地址空间可以达到4M的数据空间和4M的程序空间。
32位的数据地址,就是能访问2的32次,是4G,而22位的程序地址,就是能访问2的22次,是4M。
其实,2812可寻址的数据空间最大是4G,但是实际线性地址能达到的只有4M,原因是2812的存储器分配采用的是分页机制,分页机制采用的是形如0xXXXXXXX的线性地址,所以数据空间能寻址的只有4M。
 2812的存储器被划分成了下面的几个部分:1. 程序空间和数据空间。
2812所具有的RAM、ROM和FLASH都被统一编址,映射到了程序空间和数据空间,这些空间的作用就是存放指令代码和数据变量。
2. 保留区。
数据空间里面某些地址被保留了,作为CPU的仿真寄存器使用,这些地址是不向用户开放的。
3. CPU中断向量。
在程序空间里也保留了64个地址作为CPU 的32个中断向量。
通过CPU的一个寄存器ST1中的VMAP位来将这一段地址映射到程序空间的底部或者顶部。
映射和空间的统一编址 F2812内部的映射空间 2812CMD详解CMD:command 命令,顾名思义就是命令文件指定存储区域的分配.2812的CMD采用的是分页制,其中PAGE0用于存放程序空间,而PAGE1用于存放数据空间。
1.)#pragma ,CODE_SECTION和DATA_SECTION伪指令#pragma DATA_SECTION(funcA,"dataA"); ------ 函数外声明将funcA数据块定位于用户自定义的段"dataA"中------ 需要在CMD中指定dataA段的物理地址2.)MEMORY和SECTIONS是命令文件中最常用的两伪指令。
对于TMS320F2812的CMD文件的理解分解
对于TMS320F2812的CMD文件的理解1.COFF格式要谈CMD文件,首先不可避免的要谈下COFF格式,COFF格式是通用目标文件格式(Common Object File Format)的缩写,它是一种流行的二进制可执行文件格式,在DSP里二进制可执行文件包括库文件(.lib)、目标文件(.obj)和最终可执行文件(.out)。
详细的COFF格式文件包括段头、可执行代码、初始化数据、可重定位信息、行号入口、符号表、字符串。
对于DSP的C语言编程我们只需要了解定义段和给段分配空间即可。
采用COFF格式更利于我们对其进行模块化编程,我们可以自由的把哪些段分配到哪些空间。
2.Section(1)其次,在编写CMD文件得时候要碰到SectionS命令,SectionS命令的英文理解就有区域的意思,我们利用SectionS来将目标文件的代码放到指定的区域中。
SectionS目标文件中最小的单位我们称之为块,一个块就是最终在存储器映像中占据连续空间的一段代码或者数据。
COFF文件格式默认有三个块:.text 存放可执行代码;.data 存放已初始化数据;.bss 为未初始化数据留下的保留空间。
(2)汇编器对块的处理和设置未初始化块的设置:.bss 变量存放空间;.usect 用户自定义的未初始化段;初始化块的设置:.text 汇编指令代码.data 常数数据(比如对变量的初始化数据).sect 用户自定义的已初始化段.asect 类似于.sect,多了绝对地址定位功能,一般不用(3)C语言对块得的设置和处理未初始化块(data).bss 存放全局和静态变量.ebss 长调用的.bss(超过了64K地址限制).stack 存放C语言的栈.sysmem 存放C语言的堆.esysmem 长调用的.sysmem(超过了64K地址限制)初始化块.text 可执行代码和常数(program).switch switch语句产生的常数表格(program/低64K数据空间).pinit Tables for global constructors (C++)(program).cinit 用来存放对全局和静态变量的初始化常数值(program).const 全局和静态的const变量初始化值和字符串常数,(data).econst 长.const(可定位到任何地方)(data)(4)C语言自定义块#pragma DATA_SECTION(函数名或者全局变量名,“用户自定义在数据空间的段名”);#pragma CODE_SECTION(函数名或者全局变量名,“用户自定义在程序空间的段名”);必须注意:不能在函数体内声明,必须在定义和使用前声明。
TMS320F2812开发板软件调试说明书
TMS320F2812开发板软件调试说明书2812开发学习板的测试程序包括下面几个方面:测试存储系统,包括SRAM和外扩FLASH测试BOOT过程测试所有F2812的外设测试LCD接口测试网络接口测试音频输入输出测试以太网接收和发送注意:测试程序的调式工具是以本公司的USB仿真器下,为了方便起见,建议用户用本公司USB仿真器,如果使用其它类型的仿真器,请参考有关资料真确安装驱动。
第一章 如何开始DSP编程第一步:安装CCS,可参考其他书籍,主要提醒一点,如果不使用仿真器,CCS的运行环境要设置成一个模拟仿真器。
第二步:运行CCS,则进入CCS开发环境,如下图所示新建一个工程,如下图第四步:选择路径,输入工程项目名,并确定,则如下图所示添加源文件,添加CMD文件,添加库文件,如下图所示:添加CMD文件和库文件跟添加源文件的方法相似,在这里不在赘述。
添加完成后整个工程如下所示:第六步:设置BUILDING OPTIONS主要是Linker选项:Output Module: absolute executableAutoinit Mode: run-time AutoinitializeStack Size: 200h (可以设置,也可以不设置,可在CMD中包含)Code Entry Point: main这是默认设置。
第七步:编译,生成 *.out文件,如图下图所示:如果程序有错误,必须修改正确。
直到编译没错误。
第八步:LOAD程序,如下图所示(注意:*.out文件在工程目录中的DEBUG文件夹中)第九步:单步运行程序,把光标摆在 main()函数中第一条语句,按“执行到光标处”图标,如下图所示:第十步:单步跟踪或全速运行,观看结果,具体操作根据具体情况,在此不在赘述。
第二章 2812开发学习套件演示程序测试注意:所有演示程序必须拷到硬盘,并且去掉其“只读属性”。
1.TIMER0测试F2812上有3个32位的CPU定时器,本程序主要对CPU定时器0进行操作,100MS产生1次中断,在中断中让 2812开发板上的L1—L8发光二极管闪烁,实现跑马灯的效果。
TMS320F2812中文手册
TMS320F2812中文手册第1章芯片结构及性能概述TMS320C2000系列是美国TI公司推出的最佳测控应用的定点DSP芯片,其主流产品分为四个系列:C20x、C24x、C27x和C28x。
C20x可用于通信设备、数字相机、嵌入式家电设备等;C24x主要用于数字马达控制、电机控制、工业自动化、电力转换系统等。
近年来,TI公司又推出了具有更高性能的改进型C27x和C28x系列芯片,进一步增强了芯片的接口能力和嵌入功能,从而拓宽了数字信号处理器的应用领域。
TMS320C28x系列是TI公司最新推出的DSP芯片,是目前国际市场上最先进、功能最强大的32位定点DSP芯片。
它既具有数字信号处理能力,又具有强大的事件管理能力和嵌入式控制功能,特别适用于有大批量数据处理的测控场合,如工业自动化控制、电力电子技术应用、智能化仪器仪表及电机、马达伺服控制系统等。
本章将介绍TMS320C28x系列芯片的结构、性能及特点,并给出该系列芯片的引脚分布及引脚功能。
1.1 TMS320C28x 系列芯片的结构及性能C28x系列的主要片种为TMS320F2810和TMS320F2812。
两种芯片的差别是:F2812内含128K×16位的片内Flash存储器,有外部存储器接口,而F2810仅有64K×16位的片内Flash存储器,且无外部存储器接口。
其硬件特征如表1-1所示。
表1-1 硬件特征特征 F2810 F2812 指令周期(150MHz) 6.67ns 6.67ns SRAM(16位/字)18K 18K 3.3V片内Flash(16位/字) 64K 128K 片内Flash/SRAM的密钥有有有有 Boot ROM掩膜ROM 有有外部存储器接口无有事件管理器A和B(EVA和EVB)EVA、EVB EVA、EVB*通用定时器 4 4*比较寄存器/脉宽调制 16 16*捕获/正交解码脉冲电路 6/2 6/2 看门狗定时器有有 12位的ADC 有有*通道数 16 16TMS320C28x系列DSP的CPU与外设(上) ?2?续表特征 F2810 F2812 32位的CPU定时器 3 3 串行外围接口有有串行通信接口(SCI)A和B SCIA、SCIB SCIA、SCIB 控制器局域网络有有多通道缓冲串行接口有有数字输入/输出引脚(共享)有有外部中断源 3 3 核心电压1.8V 核心电压1.8V 供电电压 I/O电压3.3V I/O电压3.3V 封装128针PBK 179针GHH,176针PGF 温度选择‡ A:-40? ~ +85? PGF和GHH PBK S:-40? ~ +125? 仅适用于TMS 仅适用于TMS 产品状况‡‡产品预览(PP) AI AI 高级信息(AI)(TMP)‡‡‡ (TMP)‡‡‡ 产品数据(PD)注:‡ “S”是温度选择(-40? ~ +125?)的特征化数据,仅对TMS是适用的。
TMS320F2812的CMD文件的编写经验总结
TMS320F2812的CMD文件的编写经验总结CMD文件里包含三部分内容:1)输入/输出定义:.obj文件:链接器要链接的目标文件;.lib文件:链接器要链接的库文件;.map文件:链接器生成的交叉索引文件;.out文件:链接器生成的可执行代码;链接器选项2)MEMORY命令:描述系统实际的硬件资源3)SECTIONS命令:描述“段”如何定位F2812的CMD文件只包含后两部分,现对它的编写做一下总结:(一)用于调试时用,取名为SRAM.CMD这里有个比较标准的F2812的CMD文件,可以供大家借鉴使用:MEMORY{PAGE 0:ZONE0 : origin = 0x002000, length = 0x002000ZONE1 : origin = 0x004000, length = 0x002000RAML0 : origin = 0x008000, length = 0x001000ZONE2 : origin = 0x080000, length = 0x080000ZONE6 : origin = 0x100000, length = 0x080000OTP : origin = 0x3D7800, length = 0x000800FLASHJ : origin = 0x3D8000, length = 0x002000FLASHI : origin = 0x3DA000, length = 0x002000FLASHH : origin = 0x3DC000, length = 0x004000FLASHG : origin = 0x3E0000, length = 0x004000FLASHF : origin = 0x3E4000, length = 0x004000FLASHE : origin = 0x3E8000, length = 0x004000FLASHD : origin = 0x3EC000, length = 0x004000FLASHC : origin = 0x3F0000, length = 0x004000FLASHA : origin = 0x3F6000, length = 0x002000BEGIN_H0 : origin = 0x3F8000, length = 0x000002BEGIN_FLASH : origin = 0x3F7FF6, length = 0x000002PRAMH0 : origin = 0x3F8002, length = 0x001FFEZONE7 : origin = 0x3FC000, length = 0x003FC0ROM : origin = 0x3FF000, length = 0x000FC0 // boot ROM available if MP/MCn=0 RESET : origin = 0x3FFFC0, length = 0x000002VECTORS : origin = 0x3FFFC2, length = 0x00003EPAGE 1 : // Data MemoryRAMM0 : origin = 0x000000, length = 0x000400RAMM1 : origin = 0x000400, length = 0x000400DEV_EMU : origin = 0x000880, length = 0x000180FLASH_REGS : origin = 0x000A80, length = 0x000060CSM : origin = 0x000AE0, length = 0x000010XINTF : origin = 0x000B20, length = 0x000020CPU_TIMER0 : origin = 0x000C00, length = 0x000008PIE_CTRL : origin = 0x000CE0, length = 0x000020PIE_VECT : origin = 0x000D00, length = 0x000100ECAN_A : origin = 0x006000, length = 0x000100ECAN_AMBOX : origin = 0x006100, length = 0x000100SYSTEM : origin = 0x007010, length = 0x000020SPI_A : origin = 0x007040, length = 0x000010SCI_A : origin = 0x007050, length = 0x000010XINTRUPT : origin = 0x007070, length = 0x000010GPIOMUX : origin = 0x0070C0, length = 0x000020GPIODAT : origin = 0x0070E0, length = 0x000020ADC : origin = 0x007100, length = 0x000020EV_A : origin = 0x007400, length = 0x000040EV_B : origin = 0x007500, length = 0x000040SCI_B : origin = 0x007750, length = 0x000010MCBSP_A : origin = 0x007800, length = 0x000040RAML1 : origin = 0x009000, length = 0x001000FLASHB : origin = 0x3F4000, length = 0x002000CSM_PWL : origin = 0x3F7FF8, length = 0x000008DRAMH0 : origin = 0x3f9000, length = 0x001000}SECTIONS{// Compiler Required Sections.text : > PRAMH0, PAGE = 0.cinit : > PRAMH0, PAGE = 0.stack : > RAMM1, PAGE = 1.bss : > RAMM0, PAGE = 1.ebss : > RAMM0, PAGE = 1.const : > RAMM0, PAGE = 1.econst : > RAMM0, PAGE = 1.sysmem : > RAMM1, PAGE = 1.reset : > RESET, PAGE = 0, TYPE = DSECT // we are not using the .reset // section//Peripheral Frame 0 Register StructuresDevEmuRegsFile : > DEV_EMU, PAGE = 1FlashRegsFile : > FLASH_REGS, PAGE = 1CsmRegsFile : > CSM, PAGE = 1XintfRegsFile : > XINTF, PAGE = 1CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1PieCtrlRegsFile : > PIE_CTRL, PAGE = 1PieVectTable : > PIE_VECT, PAGE = 1//Peripheral Frame 1 Register StructuresSysCtrlRegsFile : > SYSTEM, PAGE = 1SpiaRegsFile : > SPI_A, PAGE = 1SciaRegsFile : > SCI_A, PAGE = 1XIntruptRegsFile : > XINTRUPT, PAGE = 1GpioMuxRegsFile : > GPIOMUX, PAGE = 1GpioDataRegsFile : > GPIODAT PAGE = 1AdcRegsFile : > ADC, PAGE = 1EvaRegsFile : > EV_A, PAGE = 1EvbRegsFile : > EV_B, PAGE = 1ScibRegsFile : > SCI_B, PAGE = 1McbspaRegsFile : > MCBSP_A, PAGE = 1//Peripheral Frame 2 Register StructuresECanaRegsFile : > ECAN_A, PAGE = 1ECanaMboxesFile : > ECAN_AMBOX PAGE = 1//Code Security Password LocationsCsmPwlFile : > CSM_PWL, PAGE = 1}(二)用于烧写到FLASH中时用,取名为FLASH.CMDFLASH.CMD与SRAM.CMD基本一样,只是有两处改动:一是MEMORY中将你的程序代码部分映射到FLASH空间里;二是在SECTIONS中添加一个用户定义的起始段,起始段的代码如下://User Defined Sections , Used by file DSP28_CodeStartBranch.asmcodestart : > BEGIN, PAGE = 0其中DSP28_CodeStartBranch.asm中的关键代码为:.ref _c_int00.sect “codestart”Code_start:LB _c_int00.end(三)SECTIONS中段的含义与用户自定义段的方法1、各个段的含义以下是TI公司的技术文档中对一些段的说明,现截个图给大家参考:除此外还有一些段的含义如下(这仅是我见过的,有漏下的还请提示,大家一起学习):.reset 复位中断向量表.vectors 中断向量表.data 已初始化数据,常数数据(比如对变量的初始化数据).pvecs 外围模块中断向量表.ref 引用外部定义的变量或函数名.global 引用全局变量或函数.space 定义要保留的空间.def 定义变量,与#define功能相同.end 段的结束标识.sect 用户自定义的已初始化段.asect 比.sect多了绝对地址定位功能,一般不用.usect 用户自定义的未初始化段已初始化的段:.text, .cinit, .const, .econst, .pinit, .switch.text:所有可以执行的代码和常量.cinit:全局变量和静态变量的C初始化记录.const:包含字符串常量和初始化的全局变量和静态变量(由const)的初始化和说明.econst:包含字符串常量和初始化的全局变量和静态变量(由far const)的初始化和说明.pinit:全局构造器(C++)程序列表.switch:包含转换语气声明的列表非初始化的段:.bss, .ebss, .stack, .sysmem, .esysmem(更好的理解就是,这些段就是存储空间而已)..bss:为全局变量和局部变量保留的空间,在程序上电时,cinit空间中的数据复制出来并存储在.bss空间中.ebss:为使用大寄存器模式时的全局变量和静态变量预留的空间,在程序上电时,cinit空间中的数据复制出来并存储在.ebss中.stack:为系统堆栈保留的空间,主要用于和函数传递变量或为局部变量分配空间.sysmem:为动态存储分配保留的空间。
F2812存储器映射及CMD详解
2812存储器映射及CMD2812存储器映射2812具有32位的数据地址和22位的程序地址,总地址空间可以达到4M的数据空间和4M的程序空间。
32位的数据地址,就是能访问2的32次,是4G,而22位的程序地址,就是能访问2的22次,是4M。
其实,2812可寻址的数据空间最大是4G,但是实际线性地址能达到的只有4M,原因是2812的存储器分配采用的是分页机制,分页机制采用的是形如0 xXXXXXXX的线性地址,所以数据空间能寻址的只有4M。
2812的存储器被划分成了下面的几个部分:1. 程序空间和数据空间。
2812所具有的RAM、ROM和FLASH都被统一编址,映射到了程序空间和数据空间,这些空间的作用就是存放指令代码和数据变量。
2. 保留区。
数据空间里面某些地址被保留了,作为CPU的仿真寄存器使用,这些地址是不向用户开放的。
3.CPU中断向量。
在程序空间里也保留了64个地址作为CPU的32个中断向量。
通过CPU寄存器ST1中的VMAP位来将这一段地址映射到程序空间的底部或者顶部。
映射和空间的统一编址F2 812内部的映射空间低地址空间高地址空间2812CMD详解CMD:command命令,顾名思义就是命令文件指定存储区域的分配.2812的CMD采用的是分页制,其中PAGE0用于存放程序空间,而PAGE1用于存放数据空间。
1.)#pragma ,CODE_SECTION和DATA_SECTION伪指令#pragma DATA_SECTION(funcA,"dataA"); ------ 函数外声明将funcA数据块定位于用户自定义的段"dataA"中 ------ 需要在CMD中指定dataA段的物理地址2.)MEMORY和SECTIONS是命令文件中最常用的两伪指令。
MEMORY伪指令用来表示实际存在目标系统中的可以使用的存储器范围,在这里每个存储器都有自己的名字,起始地址和长度。
第三章F2812片内资源、存储器映射以及CMD文件的编写
7
3.2 F2812的存贮器映射
8
让我们看看F2812内部的映射空间,如图4所示。其存储空间 分布如下表所示
9
10
11
3.3.CMD文件的认识
CMD:command命令,顾名思义就是命令文件指定存储区域的分配, 2812的CMD采用的是分页制,其中PAGE0用于存放程序空间,而 PAGE1用于存放数据空间。 MEMORY伪指令用来表示实际存在目 标系统中的可以使用的存储器范围,在这里每个存储器都有自己的 名字,起始地址和长度。SECTIONS伪指令是用来描述输入端是如 何组合到输出端内的。
4
5
先来讲地址总线,顾名思义,这类总线的作用就是 来传送存储单元的地址的。 1. PAB(Program Address Bus)程序地址总线,它是 一个22位的总线,用于传送程序空间的读写地址。程序 在运行的时候,假如执行到了某一个指令,那么需要去 找到这段代码的地址,就是用PAB来传送。 2. DRAB(Data-Read Address Bus)数据读地址总线 ,它是个32位的总线,用于传送数据空间的读地址。假 如要读取数据空间某一个单元的内容,那么这个单元的 地址就是通过DRAB来传送。 3. DWAB(Data-Write Address Bus)数据写地址总线 ,它也是个32位的总线,用于传送数据空间的写地址。 类似的,如果我要对数据空间的某一个单元进行写操作 ,那么这个单元的地址就是通过DWAB来传送。
DSP技术
电气自动
1. 2个事件管理器EVA、EVB,这个应该是使用2812必用的外设 了,PWM波形就是需要这个外设来产生的。 2. 2个串行通信接口SCI,标准的UART(SCIA SCIB)。 3. 1个串行外围接口SPI。 4. 改进的CAN通信ECAN。 5. 多通道缓冲串行接口McBSP。 6. 12位的ADC,一共有16个通道,实现AD转换的功能 7. 最多有56个可独立编程的,多功能复用的GPIO引脚。
TMS320F2812的使用注意
1.时钟和复位时钟从外部X1/X2脚引进,经过PLL倍频成SYSCLKOUT,供芯片内部各模块使用。
注意的是:SYSCLKOUT直接供Watchdog,CAN总线模块和存储器单元访问使用,而Low-Speed外围模块(SCI,SPI,McBSP)的时钟是SYSCLKOUT经Low-Speed Prescaler 分频后的LSPCLK,High-Speed外围模块(EV)以及ADC模块的时钟是SYSCLKOUT经High-Speed Prescaler分频后的HSPCLK。
1.1时钟和PLLSYSCLKOUT可以直接由外部时钟频率提供,也可以选择是PLL模块输出时钟。
在上电复位时XRS锁存外部XF_XPLLDIS管脚信号,选择时钟来源,因此如果要改变时钟选择,必须让DSP复位。
PLL倍频系数由PLLCR寄存器选择。
1.2看门狗XRS是外部输入输出管脚,输入时是外部复位DSP信号,输出时是看门狗给出的复位信号,由WDRST信号控制。
可以把该信号做为全局复位信号。
WDCR可以截断WDCLK,禁止Watchdog工作。
WDCLK是外部时钟/512再经过watchdog prescaler分频得到。
WDRST信号有效可以维持外部时钟512个周期,其有效的条件有三种:a.对WDKEY寄存写入非(0x55,0xAA)的数据;b.对WDCR寄存器的WDCHK位写入的不是(0b101)的数据;c.在WDCNTR计数器被允许计数,不被清零的条件下,计数溢出。
WDCNTR计数器有两种条件可以强制清零:a. 对WDKEY寄存写入(0x55,0xAA)的数据;b.在XRS有效期间(0有效)。
还有一个WDINT信号,其产生条件和WDRST信号一样,但不会对外部信号产生影响,该信号可以让DSP从IDLE/STANDBY模式中退回到正常工作模式,即唤醒功能。
1.3低功耗模式IDLE\STANDBY\HALT1.4CPU定时器3个32位定时器TIMER0\1\2都可以被使用,但如果使用DSPBOIS操作系统的话,TIMER2被占用。
北京达盛 exp-tms320f2812 说明书
EXP-TMS320F2812使用说明书北京达盛科技有限公司第一版:2008-12-15, Edited By Fsj达盛科技CPU 板主要由以下几个模块组成:² CPU 模块; ² 时钟模块; ² 复位模块; ² 存储器模块; ² CPLD 模块; ² 扩展接口模块; ² 电源模块;2812 CPU 板:表1-1 接口说明标号 J1J2JTAG1 P1,P2,P3,P4JUMP1,2S1含义电源 插口扩展口DSPJTAG 接口扩展接口跳线复位按钮J1:电源插口,从该接口给CPU 板供电,+5V ,内正外负。
1-1系统功能框图达盛J2:AD 输入扩展接口 具体定义如表1-2所示:表1-2 P1管脚定义J2 管脚 对应2812 管脚 备 注J2 管脚 对应2812 管脚 备 注1 +5V A +5V 电源 6 ADCINB4 采样/保持B 输入42 ADCINA6 采样/保持A 输入67 AGND 模拟地 3 +5V A +5V 电源 8 ADCINB5 采样/保持B 输入54 ADCINA7 采样/保持A 输入79 AGND 模拟地 5AGND模拟地 10ADCINB6采样/保持B 输入6JTAG1:DSP JTAG 接口,符合IEEE Standard 1149.1(JTAG)标准,引脚分配如下图所示:(空脚是第六脚,方形焊盘是第一脚)图1-2 DSP 仿真器接口示意图达盛科技P1:CPU 地址线及数据线扩展接口 具体定义如表1-3所示:表1-3 P1管脚定义P1 管脚 对应2812 管脚 备 注P1 管脚 对应2812 管脚 备 注1 DGND 数字地 21 A19 地址线192 DD0 数据线0 22 A18 地址线183 DD1 数据线1 23 A1 地址线14 DD2 数据线2 24 A0 地址线05 DD3 数据线3 25 A3 地址线36 DD4 数据线4 26 A2 地址线27 DD5 数据线5 27 A5 地址线58 DD6 数据线6 28A4 地址线4 9 DD7 数据线7 29 A7 地址线7 10 DD8 数据线8 30 A6 地址线6 11 DD9 数据线9 31 A9 地址线9 12 DD10 数据线10 32 A8 地址线8 13 DD11 数据线11 33 A11 地址线11 14DD12数据线12 34 A10 地址线10 15DD13 数据线13 35 A13 地址线13 16DD14 数据线14 36 A12 地址线12 17DD15 数据线15 37 A15 地址线15 18DGND 数字地 38 A14 地址线14 19 A17 地址线17 39 +5V +5V 电源 20A16地址线1640+5V+5V 电源达盛科技具体定义如表1-4所示:表1-4 P2管脚定义P2 管脚 对应2812 管脚 备 注P2 管脚 对应2812 管脚 备 注1 DGND 数字地 21 SPISOMI SPI 从动输出主动输入2 DGND 数字地 22 MBDRA 接收串行数据3 READY 准备 23 SPICLK SPI 时钟4 XZCS2 XINTF 区域片选2 24 MCLKXA 发送数据时钟5 XZCS2 XINTF 区域片选2 25 SPISTE SPI 从动发送使能6 XZCS2 XINTF 区域片选226 MFSXA 发送帧同步信号 7 R/W 读/写信号 27 SPISIMO SPI 从动输入主动输出引脚8 XZCS2 XINTF 区域片选2 28 MBDXA发送串行数据9 XZCS2 XINTF 区域片选229 - 空 10 -空30 -空11XF/XPLLDSISXF/XPLLDIS 引脚31T1CTRIP/PDPINTA定时器1比较输出/ PDPINTA 中断12 /BHOLDA 外部DMA 保持确认信号32 XINT1/XBIO外部中断1/XBIO 核心输入13-空33 T3CTRIP/PDPINTB 定时器3比较输出/PDPINTB 中断14 HOLD外部DMA 保持请求信号34 XINT2/ADCSOC 外部中断2/ADC 转换启动15 XINT1/XBIO 外部中断1/XBIO 输入 35 CLKOUT时钟输出16 DGND 数字地 36 - 空17 SPICLK SPI 时钟37 C6TRIP 比较单元6输出18 MCLKRA 接收数据时钟 38 RS 复位 19 SPISTE SPI 从动发送使能 39 DGND 数字地 20MBFSRA接收帧同步信号40DGND数字地达盛科技具体定义如表1-5所示:表1-5 P3管脚定义P3 管脚 对应2812 管脚 备 注P3 管脚 对应2812 管脚 备 注1 CAP5/QEP4 捕获单元输入521 - 空 2 DGND 数字地 22 - 空 3 CAP6/QEPI2 捕获单元输入623 - 空 4 DGND 数字地 24 - 空 5 PWM11PWM 输出11引脚25 - 空 6 - 空26 - 空 7 PWM12PWM 输出12引脚27 - 空 8 -空 28- 空 9 T3PWM/T3CMP定时器3输出29 - 空 10 -空 30 - 空 11 T4PWM/T4CMP 定时器4输出 31 - 空 12 BCANRX CAN 接收数据引脚32 - 空 13 TDIRB 定时器方向33 - 空 14 CANTXCAN 发送数据引脚34 DGND数字地15 TCLKINB 时钟输入B 35 - 空 16 CPU_CSCPU 片选36 DGND数字地17 - 空 37 - 空18 SCITXDASCI 异步串行口发送数据38 VCC3.3CPUCPU3.3V 电源19 - 空39 - 空20BSCIRXDASCI 异步串行口接收数据40VCC3.3CPUCPU3.3V 电源达盛科技具体定义如表1-5所示:表1-6 P4管脚定义P4 管脚 对应2812 管脚 备 注P4 管脚 对应2812 管脚 备 注1 CAP1/QEP1 捕获单元输入1 25 VCC3.3A 3.3A 电源2 CAP4/QEP4 捕获单元输入4 26 TCLKINB 时钟输入B3 CAP2QEP2 捕获单元输入2 27 VSSO 模拟地4 CAP5/QEP5 捕获单元输入5 28 VSSO 模拟地 5 CAP3/QEP3 捕获单元输入3 29 VSSO 模拟地6 CAP6/QEP6 捕获单元输入6 30 ADCINA3 采样/保持A 输入37 PWM1 PWM 输出1 31 ADCINA4 采样/保持A 输入48 PWM7 PWM 输出7 32 ADCINA5 采样/保持A 输入59 PWM2 PWM 输出2 33ADCINA6 采样/保持A 输入6 10 PWM8 PWM 输出8 34 ADCINA7 采样/保持A 输入711 PWM3 PWM 输出3 35VSSO模拟地 12 PWM9 PWM 输出9 36 VSSO 模拟地 13 PWM4 PWM 输出4 37 VSSO 模拟地 14 PWM10 PWM 输出10 38 ADCINB3 采样/保持B 输入3 15 PWM5PWM 输出539 ADCINB4 采样/保持B 输入4 16 PWM11 PWM 输出11 40 ADCINB5 采样/保持B 输入5 17 PWM6 PWM 输出641 ADCINB6 采样/保持B 输入6 18 PWM12 PWM 输出12 42 ADCINB7采样/保持B 输入719 VCC3.3A 3.3A 电源43 VSSO 模拟地 20 T3PWM/T3CMP 定时器3输出 44 VSSO 模拟地 21 VCC3.3A 3.3A 电源 45 RD 读信号线 22 T4PWM/T4CMP 定时器4输出 46 WE 写信号线 23 VCC3.3A 3.3A 电源 47 DGND 数字地 24TDIRB定时器方向48+5V+5V 电源达盛科技JUMP 跳线具体定义如下:表1-7 JUMP 跳线定义列表 跳线开关位置 功能 JUMP11-2 MP 工作方式 2-3 MC 工作方式 JUMP21-2 CPU 片选设置为高2-3CPU 片选设置为低指示灯说明² LED1 +5V 电源指示灯,亮时表示正常供电。
TMS320f2812中文资料
tms320f2812中文资料介绍:简介:德州仪器所生产的TMS320F2812 数字讯号处理器是针对数字控制所设计的DSP,整合了DSP 及微控制器的最佳特性,主要使用在嵌入式控制应用,如数字电机控制(digital motor control, DMC)、资料撷取及I/O 控制(data acquisition and control, DAQ)等领域。
针对应用最佳化,并有效缩短产品开发周期,F28x 核心支持全新CCS环境的C compiler,提供C 语言中直接嵌入汇编语言的程序开发介面,可在C 语言的环境中搭配汇编语言来撰写程序。
值得一提的是,F28x DSP 核心支持特殊的IQ-math 函式库,系统开发人员可以使用便宜的定点数DSP 来发展所需的浮点运算算法。
F28x 系列DSP预计发展至400MHz,目前已发展至150MHz 的Flash 型式。
1.高性能静态CMOS制成技术(1)150MHz(6.67ns周期时间)(2)省电设计(1.8VCore,3.3VI/O)(3)3.3V快取可程序电压2.JTAG扫描支持3.高效能32BitCPU(1)16x16和32x32MAC Operations(2)16x16Dual MAC(3)哈佛总线结构(4)快速中断响应(5)4M线性程序寻址空间(LinearProgramAddressReach)(6)4M线性数据寻址空间(LinearDataAddressReach)(7)TMS320F24X/LF240X程序核心兼容4.芯片上(On-Chip)的内存(1)128Kx16 Flash(4个8Kx16,6个16Kx16)(2)1Kx16OTPROM(单次可程序只读存储器)(3)L0和L1:2组4Kx16 SARAM(4)H0:1组8Kx16SARAM(5)M0和M1:2组1Kx16 SARAM共128Kx16 Flash,18Kx16 SARAM5.外部内存接口(1)支持1M的外部内存(2)可程序的Wait States(3)可程序的Read/Write StrobeTi最小g(4)三个独立的芯片选择(Chip Selects)6.频率与系统控制(1)支持动态的相位锁定模块(PLL)比率变更(2)On-Chip振荡器(3)看门狗定时器模块7.三个外部中断?8.外围中断扩展方块(PIE),支持45个外围中断9.128位保护密码(1)保护Flash/ROM/OTP及L0/L1SARAM(2)防止韧体逆向工程10.三个32位CPU Timer11.电动机控制外围(1)两个事件管理模块(EVA,EVB)(2)与240xADSP相容12. (1)同步串行外围接口SPI模块(2)两个异步串行通讯接口SCI模块,标准UART(3)eCAN(Enhanced Controller Area Network)(4)McBSP With SPI Mode13.16个信道12位模拟-数字转换模块(ADC)(1)2x8通道的输入多任务(2)两个独立的取样-保持(Sample-and-Hold)电路(3)可单一或同步转换(4)快速的转换率:80ns/12.5MSPS图1TMS320F2812功能方块图。
TMS320F2812开发板 说明书
F2812的外部存储器接口XINTF的详细说明和编程操作请参考《TMS320F28X External Interface(XINTF) Reference Guid》 4. 外部扩ቤተ መጻሕፍቲ ባይዱ的控制/状态寄存器
开发板上配置有HOST USB接口,Ethernet接口,LCD接口,输入输出等控制 寄存器和状态寄存器等,它映射在F2812的Zone0 和 Zone1存储空间中,具体的 定义如下:
功能/名称 扩展的输出接口控制寄存器
寄存器 名称 OutRegs
发光二极管控制寄存器
LedRegs
网卡复位、485接收使能等控制寄存器
Led8Reg
键盘输入寄存器
KeyReg
扩展的输入接口控制寄存器
InReg
扩展的外部可屏蔽中断EXINT1—EXINT5状态寄存器 IFReg1
扩展的外部非屏蔽中断EXNMI1—EXNMI2状态寄存器 IFReg2
2.本板卡的平面图如下: 平面图上的标号和板卡的标号一一对应,详细的说明请看后面章节的说明。
第二章 入门
1. 1特点 采用32位定点DSP TMS320F2812(150M),方便电机控制,电力设备控制及工业控 制等。 片上存储器 FLASH 128K X 16位 SRAM 18K X 16位 BOOT ROM 4K X 16 位 OPT ROM 1K X 16位
IFReg2 LcdDat LcdCom AddrPort DataPort BaseAddr
0X0033FF Zone0 0X0039FE Zone0 0X0039FF Zone0 0x0035FE Zone0 0x0035FF Zone0 0x003700 Zone0
2位只读
1 TMS320F2812简介
1 TMS320F2812简介TMS320F2812是TI公司的一款用于控制的高性能、多功能、高性价比的32位定点DSP芯片。
该芯片兼容TMS320LF2407指令系统最高可在150MHz主频下工作,并带有18k×16位0等待周期片上SRAM和128k×16位片上FLASH(存取时间36ns)。
其片上外设主要包括2×8路12位ADC(最快80ns转换时间)、2路SCI、1路SPI、1路McBSP、1路eCAN等,并带有两个事件管理模块(EVA、EVB),分别包括6路PWM/CMP、2路QEP、3路CAP、2路16位定时器(或TxPWM/TxCMP)。
另外,该器件还有3个独立的32位CPU定时器,以及多达56个独立编程的GPIO引脚,可外扩大于1M×16位程序和数据存储器。
TMS320F2812采用哈佛总线结构,具有密码保护机制,可进行双16×16乘加和32×32乘加操作,因而可兼顾控制和快速运算的双重功能。
通过对TMS320F2812定点DSP芯片合理的系统配置和编程可实现快速运算,本文着重对此加以说明。
2 TMS320F2812基本系统配置2.1TMS320F2812时钟TMS320F2812的片上外设按输入时钟可分为如下4个组:(1)SYSOUTCLK组:包括CPU定时器和eCAN总线,可由PLLCR寄存器动态地修改;(2)OSCCLK组:主要是看门狗电路,由WDCR寄存器设置分频系数;(3)低速组:有SCI、SPI、McBSP,可由LOSPCP寄存器设置分频系数;(4)高速组:包括EVA/B、ADC,可由HISPCP寄存器设置分频系数。
为了使系统具有较快的工作速度,除了定时器和SCI等少数需要低速时钟的地方,其它外设均可以150MHz时钟工作。
图12.2存储空间图1所示是TMS320F2812的内部存储空间映射图。
TMS320F2812为哈佛(Harvard)结构的DSP,即在同一个时钟周期内可同时进行一次取指令、读数据和写数据的操作。
TMS320f2812地址映射以及CMD文件详解
S
CIRXEMU; // Recieve emulation buffer register
union SCIRXBUF_REG SCIRXBUF; // Recieve data buffer
Uint16
rsvd1; // reserved
Uint16
SCITXBUF; // Transmit data buffer
extern volatile struct SCI_REGS SciaRegs;
extern volatile struct SCI_REGS ScibRegs; 大家可以看到,这里定义了两个结构体,一个是 SciaRegs ,一个是 ScibRegs,因为 DSP 内部有两个串行通信, A 和 B,这两个都是结构体,而类型就是前面的 SCI_REGS 的,这个结构体类型是这样定义的:
EVA : origin = 0x007400, length = 0x000040
EVB : origin = 0x007500, length = 0x000040
SCIB : origin = 0x007750, length = 0x000010
MCBSPA : origin = 0x007800, length = 0x000040
#pragma CODE_SECTION(funcA,“codeA ”); char funcA(int i); //对函数 funcA 的声明 上面中,funcA 函数一定是外部声明或者定义的函数,CODE_SECTION 为 funcA 在一个名为 codeA 的块中指 定空间。如果你有一个代码对象并想将其链接到不同于.txt 的空间时,该语法就非常有用。而 codeA 在.cmd 文件中指定了物理地址。 #pragma DATA_SECTION(bufferB,“my_sect”); char bufferB [512]; // 对 bufferB 的定义放在 pragma 的后面 DATA_SECTION 为 bufferB 在一个名为 my_sect 的块中指定空间。如果你有一个数据对象并想将其链接到不同 于.bss 的空间时,该语法就非常有用. 数据块 bufferB 被定位于 my_sect 段中,my_sect 段在 .cmd 文件中规定 了物理地址。 看完上面的一段解释,估计您会对#pragma 有了很好的了解了吧 。我们使用的结构体是数据而不是函 数,所以我们使用 DATA_SECTION。其实就是把 SciaRegs 和 ScibRegs 分别在块 SciaRegsFile 和 ScibRegsFile 中 指定空间,而块 SciaRegsFile 和 ScibRegsFile 在.cmd 文件中指定了物理地址。这样一来,是不是结构体 SciaRegs 和 ScibRegs 的起始地址就知道了?答案是肯定的。我们在看分析.cmd 文件。.cmd 文件的源代码如下:
TMS320F2812的CMD文件配置详解
TMS320F2812的CMD文件配置详解1存储空间的配置dsp交流网dsp学习第一论坛dsp技术应用与推广平台dsp开发服务平台\TMS320F2812的DSP内存分为三个独立选择的空间——程序空间、数据空间和I/O空间。
程序存储器存储要执行的指令和执行中使用的系数(常数),可以由片内或片外ram、ROM或EPROM组成;数据存储器存储指令执行期间生成的数据,这些数据可以在芯片内或芯片外使用的ram和rom来构成;i/o存储器存放与映象外围接口相关的数据,也可以作为附加的数据存储空间使用。
表1是tms320f2812的存储空间分布。
#p5r)e7[*e!s2cmd文件的分配方法TI新的汇编程序和链接器创建的目标文件采用coff(通用目标文件格式),这更有利于模块化编程,并为管理代码段和目标系统内存提供了强大而灵活的编程方法。
用户可以编写一个链接命令文件(.CMD文件),将链接信息放在一个文件中,以便在多次使用同一链接信息时调用它。
在命令文件中,使用了两条非常有用的伪指令“内存”和“内存”部分来指定实际应用中的内存结构和地址映射。
内存用于指定目标内存结构。
在内存下,可以通过页面选项配置地址空间。
链接器将每个页面视为独立的存储空间。
通常,Page0表示用于存储程序的程序内存,page1表示用于存储数据的数据内存。
编译器生成的可重定位代码和数据块称为被初始化的“sections”(包括数据表和可执行代码).text它包括所有的可执行代码和常数,必须放在程序页;.cinit它包括初始化的变量和常量表,要求放在程序页;.econst在使用大内存模式时使用,包括字符串、声明和显式初始化的全局和静态变量,这些变量可以放在数据页的任何位置。
DSP交流开关,包括用于转换声明的表格集,可以放在低地址的程序页或数据页上。
h2_u$?;d9e$l:o5k(2)未被初始化的“sections”(为程序运行中创建和存放的变量在存储器中保留空间)9d3a.\\'x7e)m;a'c.BSS,为全局变量和静态变量保留空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
. 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航| DSP首页 | DaVinci文章 | C6000文章 | C5000文章 | C3000文章 | C2000文章 | ADI DSP | MOTO DSP | FAQ | 代
您现在的位置: 61IC中国电子在线 >> DSP >> C2000文章 >> C28X系列 >> 文章正文
[组图组图]]TMS320F2812TMS320F2812的的CMD CMD文件配置文件配置文件配置详详解
热 ★★★
TMS320F2812的CMD文件配置详解
作者:翔子 文章来源:DSP交流网 点击数: 2389 更新时间:2007-10-11
DSP芯片以其极高的精度,性能及运算速度等无与伦比的优点使它得到了十分广泛的应用,TMS320F2812是TI公司生产的到字控制领域的最好的DSP芯片,在对它的仿真开发过程中,编译器生成的代码和数据要由链接器分配到合适的存储空间
令文件.cmd文件是由用户自己编写的,编写不当,就会使仿真开发不能进行,TI公司虽然在《TMS320C28x Optimizing ser ’s Guide 6》和《TMS320C28x Assembly Language Tools User ’s Guide 6》做了介绍,但内容却比较散乱而且要求读者较全面的认识,这对于初学者来说是比较困难的。
下面以TMS320F2812芯片为例,结合具体的仿真调试实例加以说明使大家能掌握.cmd文件的分配方法。
1存储空间的配置
TMS320F2812的DSP存储器分为三个独立选择的空间-程序空间、数据空间和I/O空间,其中程序存储器存放待执行的指令和执数),可使用片内或片外的RAM、ROM或EPROM等来构成;数据存储器存放指令执行中产生的数据,可使用片内或片外 的RAM和ROM来构成;I/O存储器存放与映象外围接口相关的数据,也可以作为附加的数据存储空间使用。
表1是TMS320F2812
2 CMD 2 CMD文件的分配方法文件的分配方法
TI公司新的汇编器和链接器创建的目标文件采用一种COFF(通用目标文件格式),该目标文件格式更利于模块化编程,为管理代存储器提供了强有力和灵活的编程方法。
用户可以通过编写链接命令文件(.cmd文件)将链接信息放在一个文件中,以便在多次信息时调用。
在命令文件中使用两个十分有用的伪指令MEMORY和SECTIONS,来指定实际应用中的存储器结构和进行地址的映射定目标存储器结构,Memory下可以通过PAGE选项配置地址空间,链接器把每一页都当作一个独立的存储空间。
通常情况下,器用来存放程序,PAGE1代表数据存储器,用来存放数据。
由编译器生成的可重定位的代码和数据块叫做“SECTIONS ”(段),的构成与地址分配。
对于不同的系统配置,“SECTION ”的分配方式也不相同,链接器通过“SECTIONS ”来控制地址的分配,所以就成了配置.cmd文件的重要环节。
以下是对“SECTIONS ”的定义及分配的详细介绍。
(1)
被初始化的“SECTIONS ”(包括数据表和可执行代码) .text它包括所有的可执行代码和常数,必须放在程序页; .cinit它包括初始化的变量和常量表,要求放在程序页;
.pinit它包括全局构造器(C++)初始化的变量和常量表,要求放在程序页;
.const它包括字符串、声明、以及被明确初始化过的全局和静态变量,要求放在低地址的数据页;
.econst它是在使用大存储器模式时使用的,包括字符串、声明、以及被明确初始化过的全局变量和静态变量,可以放在数.switch它包括为转换声明设置的表格,可以放在程序页也可以放在低地址的数据页。
(2)未被初始化的“SECTIONS ”(为程序运行中创建和存放的变量在存储器中保留空间)
.bss它为全局变量和静态变量保留空间。
在程序开始运行时,C导入路径把数据从.cinit节复制出去然后存在.bss节中,要求页;
.ebss它是在远(far)访问(只用于C)和大存储模式下使用,它为全局变量和静态变量保留空间。
在程序开始运行时,C导入路
段复制出去然后存在.ebss节中,可以放在数据页的任何地方;
.stack为C系统堆栈保留空间,这部分存储器为用来将声明传给函数及为局部变量留出空间,要求放在低地址的数据页;
.system动态存储器分配保留空间。
这个空间用于malloc函数,如果不使用malloc函数,这个段的大小就是0,要求放在低地址.esystem动态存储器分配保留空间,这个空间用于外部malloc函数,如果不使用外部malloc函数,这个段的大小就是0,可以地方。
3举例说明.cmd
文件的分配方法
cmd文件的分配方法
以下是仿真调试串行通信接口SCI时的.cmd文件的分配,已经在TMS320F2812仿真调试中得到了很好的应用。
MEMORY
{PAGE0:
/*ProgramMemory*/
RAMH0:origin=0x3F8000,length=0x001000
RAML0:origin=0x008000,length=0x001000
RAML1:origin=0x009000,length=0x001000
ROM:
origin=0x3FF000,length=0x000FC0
RESET: origin=0x3FFFC0,length=0x000002M
VECTORS:origin=0x3FFFC2,length=0x00003EM
PAGE1:/*DataMemory*/
RAMM0:origin=0x000000,length=0x000400
RAMM1:origin=0x000400,length=0x000400
RAMH0:origin=0x3F9000,length=0x001000
,,,
}
SECTIONS
{/*Allocateprogramareas:*/
.cinit
:>RAMH0
PAGE=0
.pinit
:>RAMH0
PAGE=0
.text
:>RAMH0
PAGE=0
.reset
:>RESET,PAGE=0,TYPE=DSECT
Vectors :>VECTORS,PAGE=0,TYPE=DSEC
/*Allocateuninitalizeddatasections:*/
.stack
:>RAMM0
PAGE=1
.ebss
:>RAMH0
PAGE=1
.esysmem :>RAMH0
PAGE=1
.econst :>RAMM1
PAGE=1
.switch :>RAMM1
PAGE=1
,,,
}
为充分利用18k×16位的SARAM,本例将高地址的8k×16位的H0 SARAM区分成两部分,一部分用做存放程序放在PAGE0里,一部在PAGE1中以达到合理的分配;对实际仿真调试过程中的外围帧frame0,frame1,frame2等的分配因为篇幅问题就不做具体介
况
4查看段的分配及使用情
看段的分配及使用情况
在cmd文件中包括各种各样的链接器选项,每种选项代表不同的含义。
其中,使用-m选项可以创建一个扩展名为.map的链
映射文件,其语法为:-m filename(文件名)。
链接器的map文件描述以下内容:
欢迎点击进入:TI德州中文网
• 上一篇文章: 基于TMS320F28XX+UCD8K+HCPL-315J的两级逆变器 • 下一篇文章: SCI通信发送模块中FIFO增强特性的使用方法
【发表评论】【加入收藏】【告诉好友】【打印
最新最新热热点 最新推荐
相关文章 TMS320C3x源码/范例
[组图]基于TMS320DM642的图… [组图]基于计算机串口DSP程… [组图]面向便携高清视频应…
[组图]TMS320VC5402 DSP与… [组图]C672X系列开发板 [组图]基于DSP和专用接口芯… [组图]DSP2407(增强版)系列… [组图]基于TMS320F2812的快… [组图]嵌入式指纹自动识别…
TMS320C3x源码/范例
[组图]XDS510 DSP系列仿真… [图文]JTAG口与仿真器连接… [图文]TMS320VC5410硬件连… [图文]采用ADuC834的口0与… [图文]AD73360与TMS320VC5… [图文]DSP5402和MAX3110硬… [图文]主从模式的TLC320AC … [组图]DSP器件的现场可编程… [组图]ADSP2189M在船舶自动…
TMS320F2812的SPWM原程基于LabVIEW和TMS320F2TMS320F2812的CAN调试基于TMS320F2812和µC/O TMS320F2812 全局汇编TMS320F2812 CMD 文件各基于TMS320F2812集中供基于TMS320F2812的多利用TMS320F2812 DSP&D 基于TMS320F2812的变频
网友评论评论::(只显示最新10条。
评论内容只代表网友观点,与本站立场无关!)
没有任何评论
| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 |
站长:61IC 湘ICP备05002478号。