cmd文件原理
1·什么是cmd文件,它有什么作用。
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 ;32KflashSARAM: origin=8000h, length=800h ;当PON=1&&DON=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 DARAMB0: origin=200h, length=100h ;256 WORD DARAM,CNF=0时B1: origin=300h, length=100h ;256 WORD DARAMSARAM: origin=800h, length=800h ;2K WORD SARAM,DON=1&&PON=0PF1:origin=7000, length=230h ;外设帧1EV A: origin=7400, length=32h ;外设帧2EVB: origin=7500, length=32h ;外设帧3}内部的所有的存储器都定义过了,最后的三个PF1、EV A、EVB可以不用定义的,因为是这外设的寄存器映射。
CMD文件的设定
FLASHE
: origin = 0x3E8000, length = 0x004000
FLASHD
: origin = 0x3EC000, length = 0x004000
FLASHC
: origin = 0x3F0000, length = 0x004000
FLASHA
: origin = 0x3F6000, length = 0x001F80
}
Code 放在 FlashA;
我们可以修改 cmd 文件;如我们把 FLASHC-J 当作一个 FLASH,即
FLASHJ
: origin = 0x3D8000, length = 0x018000 /* on-chip FLASHC-J */
当然 CECTIONS 段里要把
IQmath
: > FLASHC
CMD 文件的设定
以.CMD 为扩展名的文件,这个文件的作用是用来分配存储空间的。由于 DSP 编译器 的编译结果是未定位的,DSP 也没有操作系统来定位执行代码,DSP 系统的配置需求也不 尽相同,因此我们根据实际的需求,自己定义代码的存储位置。打个通俗的比喻,就是我们 有一个仓库,现在需要把货物存放到仓库里面去,为了便于日后取用货物,我们将货物分门 别类,然后把它们存放到指定的位置去。把哪些货物放到哪个位置的规则,就是我们的 CMD 文件的内容。
PAGE = 0
.reset
: > RESET,
PAGE = 0, TYPE = DSECT /* not used, */
.stack
: > RAMM1,
PAGE = 1
.ebss
: > DRAMH0,
CMD命令文件详解
CMD 命令文件解析CMD 文件的专业名称叫做链接器配置文件,用以存放链接器的配置信息,简称命令文件。
其中比较关键的就是MEMORY、SECTIONS两个伪指令的使用。
MEMORY和SECTIONS 的相关语句必须使用大写字符。
MEMORY是用以配置目标存储器的,而SECTIONS是用以指定段的存放位置的。
1 存储空间的配置DSP存储器分为三个独立选择的空间:程序空间、数据空间和I/O空间,其中程序存储器存放待执行的指令和执行中所用的系数(常数),可使用片内或片外的RAM、ROM、EPROM 等构成;数据存储器存放指令执行中产生的数据,可使用片内或片外的RAM和ROM来构成。
I/O存储器存放与映像外围接口相关的数据,也可以作为附加的数据存储空间来使用。
下表是TMS320F28335的存储空间分布:TMS320F28335的存储空间分布:2 BootRomBootRom 是位于存储器地址0x3F E000 ~ 0x3F FFFF处的8K * 16位存储区域。
并利用M0区域的0x0002 ~ 0x004E作为其Boot程序的堆栈和ebss区。
其内存映射如下:3 Cmd 文件的分配方法TI公司新的汇编器和链接器创建的目标文件采用一种COFF(通用目标文件格式),该目标文件格式更利于模块化编程,为管理代码段和目标系统存储器提供了强有力和灵活的编程方法。
用户可以通过编写链接命令文件(cmd文件)将链接信息放在一个文件中,以便在多次使用同样的链接信息时调用。
在命令文件中使用两个十分有用的伪指令MEMORY 和SECTIONS,来指定实际应用中的存储器结构和进行地址的映射。
M EMORY用来指定目标存储器结构,MEMORY下可以通过PAGE选项配置地址空间。
链接器把每一页都当作一个独立的存储空间,通常情况下,PAGE0 代表程序存储器用来存放程序,PAGE1 代表数据存储器,用来存放数据。
由编译器生成的可重定位的代码和数据块叫做“SECTIONS”(段),SECTIONS 用来控制段的构成与地址分配。
CCS中CMD文件的原理
CCS中CMD文件的原理一个CCS文件通常包含多个列,每个列存储相同类型的数据。
与传统的行存储(Row Store)相比,列存储将同一列的数据紧密地存储在一起,这样可以提高数据的压缩率和读取性能。
在CCS中,每列的数据通常被划分成多个数据块进行存储,每个数据块包含若干行数据。
每个数据块可以通过基于列的压缩算法进行进一步压缩,从而减少存储空间的占用。
在CCS中,为了提高数据处理和查询的效率,还使用了向量化处理技术。
向量化处理是指将一组数据作为整体进行计算,而不是逐个进行计算。
通过将计算任务分配给处理器的向量单元,可以同时处理多个数据,从而提高计算速度。
在CCS中,数据块中的数据被分组为向量,计算任务可以在向量级别上进行,并且通过SIMD(Single Instruction, Multiple Data)指令集来实现向量化计算。
这种方式大大减少了计算的指令数,提高了计算效率。
另外,CCS还通过字典和位图等技术来提高查询性能。
字典是将数据值映射为更短的标识符的数据结构,使用字典可以减少存储空间的占用,并且在查询时可以通过标识符来快速定位数据。
位图是一种用于表示数据集的数据结构,通过位图可以进行高效的数据过滤和查询。
在CCS中,通过使用字典和位图,可以在读取和查询时快速定位和过滤数据,从而提高查询效率。
CCS在实际应用中,可以用于各种大规模数据的查询场景,如数据仓库、OLAP(Online Analytical Processing)分析等。
它通过列存储、压缩、向量化处理和字典、位图等技术来提高数据处理和查询的效率,减少存储空间的占用,并且适用于大规模数据的实时分析和查询。
cmd 文件命名规则
cmd 文件命名规则(原创实用版)目录1.CMD 文件的概念与特点2.CMD 文件的命名规则3.CMD 文件的扩展名4.CMD 文件的应用领域5.总结正文1.CMD 文件的概念与特点CMD 文件是 Windows 操作系统中的一种批处理文件格式,它是一种文本文件,包含了一系列的命令和操作。
CMD 文件可以执行多个命令,使得用户可以方便地在一个文件中完成一系列的任务。
这种文件格式的优势在于,它能够让用户以非交互式的方式执行一系列操作,从而提高工作效率。
2.CMD 文件的命名规则CMD 文件的命名规则相对简单。
一般来说,它的文件扩展名为.cmd。
在文件名中,用户可以自由地使用字母、数字和下划线等字符,但是需要避免使用特殊字符或中文字符。
此外,文件名不能包含空格,因为这会导致命令解释器无法正确识别文件。
3.CMD 文件的扩展名CMD 文件的扩展名是.cmd。
这个扩展名告诉操作系统,该文件是一个批处理文件,包含了一系列的命令和操作。
当用户双击或通过命令提示符执行该文件时,操作系统会自动调用命令解释器来解析并执行文件中的命令。
4.CMD 文件的应用领域CMD 文件广泛应用于 Windows 操作系统的各个领域。
例如,在网络管理、系统维护、软件开发等场景中,都可能会涉及到 CMD 文件的使用。
特别是在批量处理任务和自动化操作方面,CMD 文件的优势尤为明显。
用户只需编写一个 CMD 文件,就可以轻松地完成一系列复杂的任务。
5.总结CMD 文件是 Windows 操作系统中的一种批处理文件格式,具有易于使用、高效便捷等特点。
了解 CMD 文件的命名规则和扩展名,可以帮助用户更好地管理和使用这种文件格式。
CMD命令行中的文件加密和解密操作
CMD命令行中的文件加密和解密操作在日常工作和生活中,我们经常需要处理一些敏感和机密的文件。
为了保护这些文件的安全性,我们可以使用CMD命令行中的文件加密和解密操作。
本文将介绍如何使用CMD命令行进行文件加密和解密,并探讨其在文件保护方面的应用。
一、文件加密操作文件加密是指通过一定的算法和密钥将文件转化为一种无法直接读取的形式,从而保护文件的内容不被未经授权的人所知晓。
CMD命令行提供了一种简单而有效的方式来实现文件加密。
首先,我们需要打开CMD命令行界面。
可以通过在Windows系统中搜索“CMD”并点击打开来进入CMD命令行界面。
接下来,我们需要使用“cipher”命令来进行文件加密。
具体的命令格式如下:cipher /e /a [文件路径]其中,“/e”表示加密操作,“/a”表示对所有用户可见的文件进行加密。
我们还可以使用其他选项来指定加密操作的范围和方式,具体可以通过输入“cipher /?”来查看帮助文档。
例如,我们要加密一个名为“test.txt”的文件,该文件位于D盘下的“Documents”文件夹中。
我们可以使用以下命令进行加密:cipher /e /a D:\Documents\test.txt执行命令后,系统会生成一个与原文件同名但扩展名为“.cer”或“.pfx”的加密文件。
该加密文件只能通过解密操作才能还原为可读取的文件。
二、文件解密操作文件解密是指将加密过的文件还原为可读取的形式。
CMD命令行同样提供了一种简便的方式来进行文件解密。
同样地,我们需要打开CMD命令行界面,并输入以下命令进行解密:cipher /d /a [文件路径]其中,“/d”表示解密操作,“/a”表示对所有用户可见的文件进行解密。
同样地,我们可以使用其他选项来指定解密操作的范围和方式。
以解密之前加密的“test.txt”文件为例,我们可以使用以下命令进行解密:cipher /d /a D:\Documents\test.txt执行命令后,系统会将加密文件还原为原文件,可以直接读取和编辑。
cmdn原理
cmdn原理Cmd命令行原理及其应用一、概述Cmd(Command Prompt)命令行是Windows操作系统中的一个重要工具,它提供了一种通过文本输入命令来控制操作系统的方式。
Cmd命令行的原理是基于操作系统提供的命令解析器,它可以执行系统内置的命令,也可以执行用户自定义的批处理脚本。
本文将围绕Cmd命令行的原理展开,介绍其基本工作原理及其在实际应用中的一些常见用法。
二、Cmd命令行的工作原理1. 命令解析器Cmd命令行的工作原理是基于操作系统提供的命令解析器。
当用户在Cmd命令行中输入命令时,命令解析器会逐个解析命令的各个部分,并根据命令的语法规则进行解析。
命令解析器首先会判断命令类型,然后按照命令的语法规则进行解析,最后将解析后的命令传递给相应的执行程序进行执行。
2. 内置命令Cmd命令行内置了许多常用的命令,如dir、cd、copy等。
这些内置命令可以直接在命令行中使用,无需额外安装或配置。
内置命令的执行过程是在命令解析器中进行的,命令解析器会根据命令的类型调用相应的内置命令执行程序,执行相应的操作。
内置命令的执行结果会直接在命令行中显示。
3. 批处理脚本除了内置命令,Cmd命令行还支持用户自定义的批处理脚本。
批处理脚本是一系列Cmd命令的集合,可以按照用户的需求编写。
用户可以将一系列需要执行的Cmd命令按照顺序写入批处理脚本文件中,然后在命令行中执行该脚本文件,从而实现一次性执行多个命令的目的。
批处理脚本的执行过程是逐行读取脚本文件中的命令,并依次执行。
三、Cmd命令行的常见用法1. 文件和目录操作Cmd命令行可以用于操作文件和目录。
通过使用命令如dir、cd、copy等,可以查看目录内容、切换目录、复制文件等操作。
例如,可以使用dir命令查看当前目录中的文件列表,使用cd命令切换到其他目录,使用copy命令复制文件等。
2. 系统管理Cmd命令行还可以用于系统管理任务。
通过使用命令如tasklist、taskkill、netstat等,可以查看系统进程、结束进程、查看网络连接等。
.cmd文件通俗解释
本人dsp菜鸟,在dsp门边徘徊已久,就是入不了门。
都说要要先学会编写CMD文件,也没找见什么详细资料。
今天终于在C6000汇编用户工具指南中寻到蛛丝马迹。
迫不及待的发上来。
英语水平有限。
翻译的不好,凑合看吧。
有错的别拍砖。
另强烈恳求前辈高人给菜鸟们指个明路吧MEMORY伪指令连接器决定输出段(output section)分配到存储器里的位置,必须有一个目标的存储器模型来完成这个任务。
MEMORY伪指令允许你建立目标存储器的模型,你可以定义系统包含的存储器类型和存储器的地址空间。
连接器保持输出段分配模型并根据它决定可被目标代码使用的存储器位置。
C6000的存储器的配置随具体应用不同而不同。
MEMORY 伪指令可以实现不同的配置。
用MEMORY伪指令定义存储器模型后,可以用SECTIONS 伪指令分配输出段(out section)到一定义的存储器中。
默认的存储器模型如果不使用MEMORY伪指令,连接器将使用基于C6000体系结构的默认存储器模型。
默认模型假设系统提供所有的32bit地址空间并且可用。
查看7-46业MEMORY伪指令语法MEMORY伪指令确定目标系统实际提供的可以被程序使用的存储器空间。
每个空间都有如下特性:名称起始地址长度可选的属性设置(Optional set of attributes)Optional fill specification在使用MEMORY伪指令时,必须保证所有的存储范围可以载入代码(loading code)。
被MEMORY伪指令定义存储器都是一配置的;任何没有用MEMORY详细描述的存储器都是未初始化的。
MEMORY伪指令表达式中没有定义的地址空间代表不存在的存储器空间。
MEMORY伪指令在command file中用MEMORY( 大写)表示,后面的大括号中列出了存储器空间。
下面的例子定义了一个拥有4KB的快速外部存储器在地址0x0000 0000处,一个2KB的慢速外部存储器在地址0x0000 1000处,还有一个4KB的慢速存储器在地址0x1000 0000处。
CMD文件
第二章CMD文件2.1、CMD文件综述CMD文件的主要作用是沟通物理存储器和逻辑地址的桥梁。
CMD文件反映了实际电路中存储单元的大小,并且通过阅读CMD文件可以得到系统中存储器的分配情况,特别是配合以MAP文件就可非常方便地得到系统资源的使用情况,有利于优化系统配置。
另外,由于C28X推荐使用C语言编程,就存在程序转化分段的问题,也在CMD中得到落实。
本实验系统采用的是瑞泰的CMD程序,并且是针对一个实验系统的通用CMD文件。
2.2、例解CMD文件1、寄存器区// 片上外设寄存器结构体与存储器分配的对应关系MEMORY //反映存储器空间范围、描述系统实际的硬件资源{PAGE 0: //第0页:程序空间存储器PAGE 1: //第1页:地址空间存储器//芯片仿真设定用寄存器(始于0x0000880 长:0x000180)DEV_EMU : origin = 0x000880, length = 0x000180//中断向量表PIE_VECT : origin = 0x000D00, length = 0x000100//闪存寄存器组FLASH_REGS : origin = 0x000A80, length = 0x000060//保密位寄存器组CSM : origin = 0x000AE0, length = 0x000010// 外部扩展寄存器组XINTF : origin = 0x000B20, length = 0x000020//定时器0 寄存器组CPU_TIMER0 : origin = 0x000C00, length = 0x000008//PIE控制寄存器组PIE_CTRL : origin = 0x000CE0, length = 0x000020 ///增强型CAN模块寄存器组ECANA : origin = 0x006000, length = 0x000040ECANA_LAM : origin = 0x006040, length = 0x000040ECANA_MOTS : origin = 0x006080, length = 0x000040 ECANA_MOTO : origin = 0x0060C0, length = 0x000040ECANA_MBOX : origin = 0x006100, length = 0x000100//系统控制寄存器组SYSTEM : origin = 0x007010, length = 0x000020//外设接口寄存器组SPIA : origin = 0x007040, length = 0x000010//异步串行通信接口寄存器组SCIA : origin = 0x007050, length = 0x000010//外部中断设定寄存器组XINTRUPT : origin = 0x007070, length = 0x000010//多功复用引脚选择寄存器组GPIOMUX : origin = 0x0070C0, length = 0x000020//多功能引脚数据寄存器组GPIODAT : origin = 0x0070E0, length = 0x000020//模拟数字转换寄存器组ADC : origin = 0x007100, length = 0x000020// 事件管理寄存器组EV A : origin = 0x007400, length = 0x000040EVB : origin = 0x007500, length = 0x000040//异步串行通信接口B寄存器组SCIB : origin = 0x007750, length = 0x000010//多通道缓冲接口寄存器组MCBSPA : origin = 0x007800, length = 0x000040//密码保护寄存器组CSM_PWL : origin = 0x3F7FF8, length = 0x000008}SECTIONS //建立与程序一一对应的关系、描述段是如何定位{PieVectTableFile : > PIE_VECT, PAGE = 1/*** Peripheral Frame 0 Register Structures ***///在头文件中可以找到DevEmuRegsFile的定义DevEmuRegsFile : > DEV_EMU, PAGE = 1FlashRegsFile : > FLASH_REGS, PAGE = 1CsmRegsFile : > CSM, PAGE = 1XintfRegsFile : > XINTF, PAGE = 1CpuTimer0RegsFile : > CPU_TIMER0, PAGE = 1PieCtrlRegsFile : > PIE_CTRL, PAGE = 1/*** Peripheral Frame 1 Register Structures ***/SysCtrlRegsFile : > SYSTEM, PAGE = 1SpiaRegsFile : > SPIA, PAGE = 1SciaRegsFile : > SCIA, PAGE = 1XIntruptRegsFile : > XINTRUPT, PAGE = 1GpioMuxRegsFile : > GPIOMUX, PAGE = 1GpioDataRegsFile : > GPIODAT PAGE = 1AdcRegsFile : > ADC, PAGE = 1EvaRegsFile : > EV A, PAGE = 1EvbRegsFile : > EVB, PAGE = 1ScibRegsFile : > SCIB, PAGE = 1McbspaRegsFile : > MCBSPA, PAGE = 1/*** Peripheral Frame 2 Register Structures ***/ECanaRegsFile : > ECANA, PAGE = 1ECanaLAMRegsFile : > ECANA_LAM PAGE = 1ECanaMboxesFile : > ECANA_MBOX PAGE = 1ECanaMOTSRegsFile : > ECANA_MOTS PAGE = 1ECanaMOTORegsFile : > ECANA_MOTO PAGE = 1/*** Code Security Module Register Structures ***/CsmPwlFile : > CSM_PWL, PAGE = 1}2、程序区/*// FILE: F2812_EzDSP_RAM_lnk.cmd//定位C程序在存储器中的位置-l rts2800.lib //链接库文件rts2800.lib-w //-stack 400h //栈大小为400h-heap 100 //堆大小为100MEMORY{PAGE 0 :///RAMM0 : origin = 0x000000, length = 0x000400//RAMM0 : origin = 0x3f6000, length = 0x001000BEGIN : origin = 0x3F8000, length = 0x000002/*BEGIN : origin = 0x3F7FF6, length = 0x000002*///PRAMH0 : origin = 0x3f8002, length = 0x001000PRAMH0 : origin = 0x81000, length = 0x002000RESET : origin = 0x3FFFC0, length = 0x000002 /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */VECTORS : origin = 0x3FFFC2, length = 0x00003E /* part of boot ROM (MP/MCn=0) or XINTF zone 7 (MP/MCn=1) */PAGE 1 :/* For this example, H0 is split between PAGE 0 and PAGE 1 */RAMM1 : origin = 0x000400, length = 0x000400DRAMH0 : origin = 0x3f8002, length = 0x001ffcDRAMH1 : origin = 0x83000, length = 0x004ffc}SECTIONS{codestart : > BEGIN, PAGE = 0//ramfuncs : > PRAMH0 PAGE = 0.text : > PRAMH0, PAGE = 0//文本段.cinit : > PRAMH0, PAGE = 0//.pinit : > PRAMH0, PAGE = 0.switch : > PRAMH0, PAGE = 0.reset : > RESET, PAGE = 0, TYPE = DSECT /* not used, */ .stack : > RAMM1, PAGE = 1.ebss : > DRAMH1, PAGE = 1.econst : > DRAMH0, PAGE = 1.esysmem : > DRAMH0, PAGE = 1.const : > DRAMH0, PAGE = 1.sysmem : > DRAMH0, PAGE = 1.cio : > DRAMH0, PAGE = 1}1..cinit 存放C程序中的变量初值和常量2..const 存放C程序中的字符常量、浮点常量和用const声明的常量3..text 存放C程序的代码4..bss 为C程序中的全局和静态变量保留存储空间5..far 为C程序中用far声明的全局和静态变量保留空间6..stack 为C程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果7..sysmem用于C程序中malloc、calloc和realloc函数动态分配存配空间2.3文件类型.pjt CCS使用的工程文件.c C程序源文件.asm 汇编程序源文件.h 头文件.lib 库文件.cmd 连接命令文件.obj 目标文件.out 可执行文件.wks 工作区文件.dat 数据文件.map 映射文件2.4、常用命令。
CMD文件的原理dspcmddspcmd文件...
CMD文件的原理dspcmddspcmd文件...CMD文件的原理玄德(网名)于2009 年3 月一、前言开发 TI 公司的 DSP 芯片,肯定要编写或者修改 CMD 文件,这是在单片机开发中没有碰到过的新事物,也是学习DSP的难点。
面对里面种类繁多、名称各异、来历不明、作用不清、功能千差万别的存储器、区域和变量、寄存器,初学者往往都会一头雾水。
甚至很多人已经把项目成功地完成了,对CMD文件仍然是一知半解。
笔者也经历了极度困惑的过程,曾经大量地看书,下载资料,分析所能搜集到的CMD源文件。
可惜的是,无论是TI 公司的原始文档,还是网上的资料,或者BBS的帖子,都没有透彻地说明CMD 文件的原理和使用,只说“然” ,要靠自己去体会“所以然” ,去“悟” 。
终于有一天,我悟到了,也许只是“一些” 。
现在,我把自己的“一些”写下来。
我将细致而通俗地说明CMD 文件的原理,给您“鱼” ,更给您“渔” ,一步步地引导象我当初一样的初学者。
我将以 TI 的 2407 为对象展开说明,对于 TI 公司其他型号、其他系列的 DSP,道理是完全相同的。
用时下学术界最最最流行的语式,叫做“基于2407”——这个词起源于英文的“based on” ,或“something based” ,被我们大量地引用,以至于令人反胃了——我们美妙、绚烂的语言,现在只剩下“基于”了。
笔者水平有限,但保证会用心去写,您会看到很多别处没有的思路和信息,相信会基本打通初学者的任督二脉。
本文适用于那些有单片机的开发基础、刚开始学习 DSP 的初学者。
如果你还不知道程序空间,数据空间这些名词,可能就比较困难了。
二、CMD文件的起源在DSP系统中,存在大量的、各式各样的存储器,CMD文件所描述的,就是开发工程师对物理存储器的管理、分配和使用情况。
有必要先复习一下存储器的知识。
目前的物理存储器,种类繁多,原理、功能、参数、速度各不相同,有 PROM、 EPROM、 EEPROM、 FLASH、NAND FLASH、 NOR FLASH等(ROM 类),还有SRAM、DRAM、SDRAM、DDR、DDR2、FIFO 等(RAM 类)。
CMD文件与MAP文件
CMD文件与MAP文件一 CMD文件CMD的专业名称叫链接器配置文件,是存放链接器的配置信息,我们简称为命令文件,CMD文件是用来标示实际存在目标系统中且可被使用的存储器范围,告诉链接程序怎么计算地址和分配空间。
它包括三个部分:(1)输入、输出定义:.obj文件——链接器要链接的目标文件;.lib文件——链接器要链接的库文件;.map文件——链接器生成的交叉索引文件;.out文件——链接器生成的可执行代码。
这部分可通过CCS中的Build Option菜单进行设置(2)MEMORY命令描述系统实际的硬件资源(3)SECTIONS命令:描述“段”如何定位。
MEMORY用来建立目标存储器的模型, MEMORY指令可以定义目标系统的各种类型的存储器,及容量。
MEMORY的语法如下:MEMORY{PAGE 0:name 0 [attr] : origin = constant, length = constantPAGE n:name n [attr] : origin = constant, length = constant}PAGE n:标示存储空间,n<255;PAGE 0为程序存储空间;PAGE 1为数据存储空间。
Name:存储空间名称。
Attr存储空间属性:只读R,只写W,可包含可执行代码X,可以被初始化I。
orgin:用来定义存储空间的起始地址;Lenth:用来定义存储空间的长度。
SECTIONS指令就可以根据这个模型来安排各个段的位置。
SECTIONS指令的语法如下:SECTIONS{.vectors: {}>VECS PAGE0;}注:“.”加不加都可以;{}表示段的全部,也可以将{}省略。
SECTIONS必须用大写字母,其后的大括号里是输出段的说明性语句,每一个输出段的说明都是从段名开始,段名之后是如何对输入段进行组织和给段分配存储器的参数说明。
二MAP文件MAP文件是CCS软件编译后产生的有关DSP用到所有程序、数据及IO空间的一种映射文件。
使用Windows CMD命令进行远程文件传输
使用Windows CMD命令进行远程文件传输在计算机技术的发展中,远程文件传输是一项非常重要的功能。
它可以让我们在不同的计算机之间传输文件,方便快捷。
在Windows系统中,我们可以使用CMD命令来实现远程文件传输。
本文将介绍如何使用Windows CMD命令进行远程文件传输的方法和步骤。
一、远程文件传输的基本原理远程文件传输的基本原理是通过网络连接两台计算机,然后在两台计算机之间传输文件。
在Windows系统中,我们可以使用CMD命令来进行远程文件传输。
CMD命令是Windows系统中的命令行工具,可以通过它执行各种操作,包括远程文件传输。
二、使用CMD命令进行远程文件传输的方法1. 远程文件传输的准备工作在进行远程文件传输之前,我们需要做一些准备工作。
首先,我们需要确保两台计算机之间可以建立网络连接。
可以通过局域网或者互联网来建立连接。
其次,我们需要在两台计算机上安装好Windows系统,并且确保CMD命令可用。
2. 使用CMD命令进行远程文件传输在进行远程文件传输时,我们可以使用CMD命令中的一些特定命令来实现。
以下是一些常用的CMD命令:(1)ping命令:用于测试两台计算机之间是否可以建立网络连接。
可以通过ping命令来测试目标计算机的IP地址是否可达。
(2)ipconfig命令:用于查看本地计算机的IP地址和网络配置信息。
可以通过ipconfig命令来获取本地计算机的IP地址。
(3)net use命令:用于建立网络连接。
可以通过net use命令来建立与目标计算机的网络连接。
(4)copy命令:用于复制文件。
可以通过copy命令将文件从本地计算机复制到目标计算机。
(5)xcopy命令:用于复制文件夹。
可以通过xcopy命令将文件夹从本地计算机复制到目标计算机。
以上是一些常用的CMD命令,可以根据实际需求选择使用。
在使用这些命令时,需要注意命令的参数和语法,以确保命令的正确执行。
三、远程文件传输的注意事项在进行远程文件传输时,我们需要注意以下几点:1. 确保目标计算机的网络连接正常,可以通过ping命令来测试。
如何使用Windows CMD命令行进行远程文件传输
如何使用Windows CMD命令行进行远程文件传输在日常工作中,我们经常需要在不同的计算机之间进行文件传输。
有时候,我们可能无法直接通过图形界面进行操作,这时候使用Windows CMD命令行就成为了一个很好的选择。
本文将介绍如何使用Windows CMD命令行进行远程文件传输。
一、远程文件传输的基本原理在开始介绍具体的操作之前,我们先来了解一下远程文件传输的基本原理。
在Windows系统中,我们可以使用命令行工具来进行文件传输,其中最常用的工具就是Windows CMD命令行。
通过CMD命令行,我们可以使用一些特定的命令来实现文件的复制、移动、删除等操作。
在进行远程文件传输时,我们需要先建立起计算机之间的网络连接。
通常情况下,我们可以使用网络共享来实现这一目的。
通过网络共享,我们可以在本地计算机上访问远程计算机上的文件夹,并进行文件的读取和写入操作。
二、建立网络共享连接在进行远程文件传输之前,我们需要先建立起计算机之间的网络共享连接。
下面是具体的操作步骤:1. 打开“我的电脑”或“资源管理器”,在地址栏中输入远程计算机的IP地址或计算机名,按下回车键。
2. 如果网络共享没有打开,系统会提示你是否打开共享。
点击“是”来打开网络共享。
3. 接下来,系统会要求你输入远程计算机的用户名和密码。
输入正确的用户名和密码后,点击“确定”。
4. 如果一切顺利,你将会看到远程计算机上的共享文件夹。
三、使用CMD命令行进行文件传输在建立了网络共享连接之后,我们就可以使用CMD命令行进行文件传输了。
下面是一些常用的命令:1. 复制文件:使用“copy”命令可以将文件从本地复制到远程计算机上。
示例:copy C:\file.txt \\远程计算机名\共享文件夹名2. 移动文件:使用“move”命令可以将文件从本地移动到远程计算机上。
示例:move C:\file.txt \\远程计算机名\共享文件夹名3. 删除文件:使用“del”命令可以删除远程计算机上的文件。
DSP与CMD文件的原理
5
TMS320 5402 存储器分配图
由于DSP编程所用的CMD文件,没有秘密可言。好经验应该大家共享,我们自己也是这么 学来的。作者愿意公开本文的电子文档。 版权声明如下: (1)读者可以任意拷贝、修改本文的内容,但不可以篡改作者(当然是玄德不是我)。 (2)未经作者许可,不得出版或大量印发本文。 (3)如果你有好的修改建议,或者也写了一些心得体会,欢迎联系我,与大家共享。
前面我们回顾了一下微机原理里面一些概念。8086 采用的事冯诺依曼结构,但对于我 们理解空间的概念是有帮助的,下面来讨论一下 DSP 所使用的哈佛结构。
哈佛结构和冯诺依曼结构最大的区别就是对程序和数据存储的区分,当然也有专业的说 上说成是程序空间的数据空间的分开。换个角度,也就是至少有两套总线:
1:程序地址总线、程序数据总线(这样说总觉得别扭哈)、程序控制总线; 2:数据地址总线、数据数据总线(更别扭了,你理解就好)、数据控制总线。 这样做的目的只有一个:提高处理速度。因为这样 CPU 就能同时读写程序和数据了, 数据处理速度提高的不仅仅一倍这么简单。 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体 系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储 器是两个独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统的 6 条总线:程序的地址总线、数据总线和控制总线,数据的地址总线、数据总线与控制总线。 这种分离的程序总线和数据总线可允许在一个机器周期内同时获得指令字(来自程序存储 器)和操作数(来自数据存储器),从而提高了执行速度,提高了数据的吞吐率。又由于程 序和数据存储在两个分开的物理空间中,因此取址和执行能完全重叠。中央处理器首先到程 序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数 据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数 据有不同的数据宽度。
CMD文件的作用
分类:默认栏目2007.8.13 17:06 作者:wind | 评论:0 | 阅读:1218在DSP里,程序执行过程中也有好多地方需要跳转,所以需要跳转的目标地址。
如果你在编程序时知道你所要跳转的地址,那就更好的,但实际上,这是很不好控制的。
所以就产生了.CMD。
它有一个最大的好处,可以把每个段分配地址,所以比如你想从一个段跳到另一个段的时候,就很方便的知道这个段的起始地址。
CMD 它是用来分配rom和ram空间用的,告诉链接程序怎样计算地址和分配空间.所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据你的芯片进行修改.cmd文件分两部分.MEMORY和SECTIONS.MEMORY{PAGE 0 ..........PAGE 1.........}SECTIONS{SECTIONS{.vectors ..................reset .................................}MEMORY是用来指定芯片的rom和ram的大小和划分出几个区间.PAGE 0 对应rom;PAGE 1对应ramPAGE 里包含的区间名字与其后面的参数反映了该区间的起始地址和长度.如: PAGE 0 : VECS(区间名字): origin(起始地址) = 0h , length (长度)=040h /*VECTORS*/ SECTIONS:(在程序里添加下面的段名如.vectors.用来指定该段名以下,另一个段名以上的程序(属于PAGE0)或数据(属于PAGE1)放到“>”符号后的空间名字所在的地方。
如引用字段名“.vectors ”的程序或数据将被放到VECS ,VECS是PAGE0即是ROM空间00H至40H 的地方SECTIONS{.vectors : { } > VECS PAGE 0 /* Interrupt vector table */.reset : { } > VECS PAGE 0 /* Reset code */............}.vectors,.reset都是段名。
cmd机理
cmd机理CMD机制,即Windows命令行的执行机制。
CMD是Windows自带的命令行工具,用户可以通过输入相关指令来控制系统的行为,访问文件、执行程序等操作。
CMD机制的作用在于,它可以直接操作系统的底层,执行各种操作,从而给用户带来更多的控制权。
在这篇文章中,我们将简要介绍CMD机制的实现原理和基本使用方法。
一、CMD的实现原理CMD机制的实现原理主要依赖于Windows NT内核的机制。
Windows NT 内核是一个支持多个操作系统的底层程序,它是与硬件相关的软件层,负责管理操作系统的各种资源。
在CMD机制中,当用户输入命令时,CMD会使用Win32调用底层操作系统来完成相关操作。
因此,在操作CMD命令行时,我们看似在使用普通的命令行工具,实际上使用的是与底层操作系统进行交互的工具。
二、CMD机制的基本使用方法1. 打开CMD窗口在Windows系统中,打开CMD窗口有多种方法。
最常见的方法是使用Win + R组合键打开“运行”窗口,然后输入“cmd”命令后按回车键打开CMD窗口。
此外,还可以在Windows资源管理器中找到cmd.exe文件,双击打开CMD窗口。
2. 基础指令在CMD窗口中,我们可以输入各种指令来控制系统行为。
下面列出一些常用的CMD指令:- cd:切换当前目录。
- dir:列出当前目录下的文件和文件夹。
- md:创建一个新文件夹。
- rd:删除一个文件夹。
- del:删除文件。
- copy:复制文件。
- move:移动文件。
- type:查看文件内容。
以上指令只是CMD使用中的基础命令,用户可以在CMD命令行中输入“help”命令来查看更多的指令说明。
3. 高级指令在一些特殊情况下,我们可以使用一些高级指令来进行系统操作。
下面列举一些常用的高级指令:- netstat:查看网络连接情况。
- ping:检测网络连接状态。
- ipconfig:查看和修改当前计算机的网络配置。
了解Windows CMD命令中的管道和重定向操作
了解Windows CMD命令中的管道和重定向操作Windows CMD命令中的管道和重定向操作是日常使用电脑时经常会遇到的功能。
它们可以帮助我们更高效地处理数据和执行命令,提高工作效率。
在本文中,我们将深入了解这两个操作的原理和用法。
一、管道操作管道操作是指将一个命令的输出作为另一个命令的输入。
在CMD命令中,我们可以使用竖线符号“|”来实现管道操作。
例如,我们可以通过管道操作将一个命令的输出结果传递给另一个命令进行处理。
比如,我们可以使用“dir”命令列出当前目录下的文件和文件夹,然后使用管道操作符将输出结果传递给“find”命令,以便筛选出我们需要的文件。
dir | find "txt"这个命令会将当前目录下的所有文件和文件夹的列表传递给“find”命令,并且只显示包含“txt”关键字的文件。
除了使用“|”符号进行管道操作外,我们还可以使用多个管道操作符连接多个命令,实现更复杂的数据处理。
二、重定向操作重定向操作是指将命令的输出结果保存到文件中,或者从文件中读取数据作为命令的输入。
在CMD命令中,我们可以使用大于符号“>”将命令的输出结果重定向到一个文件中。
例如,我们可以使用“dir”命令列出当前目录下的文件和文件夹,并将结果保存到一个名为“filelist.txt”的文件中。
dir > filelist.txt这个命令会将“dir”命令的输出结果保存到“filelist.txt”文件中,我们可以通过打开这个文件来查看命令的输出结果。
除了使用大于符号“>”进行重定向操作外,我们还可以使用双大于符号“>>”将命令的输出结果追加到一个文件的末尾。
这在需要多次执行同一个命令并将结果保存到同一个文件中时非常有用。
另外,我们还可以使用小于符号“<”将文件中的内容作为命令的输入。
例如,我们可以使用“sort”命令对一个文本文件中的内容进行排序。
sort < input.txt这个命令会将“input.txt”文件中的内容作为“sort”命令的输入,并将排序后的结果输出到屏幕上。
cmd原理
cmd原理CMD原理。
CMD是Windows操作系统中的命令行工具,它可以通过命令来执行各种操作,如文件管理、系统配置、网络设置等。
本文将介绍CMD的原理及其基本用法。
CMD的原理主要基于DOS(Disk Operating System)的命令行操作方式。
在早期的个人电脑中,DOS是主要的操作系统,用户需要通过命令行来操作计算机。
随着Windows的发展,CMD成为了Windows系统中的命令行工具,其原理和DOS类似,但功能更加强大。
CMD的原理可以简单概括为以下几个方面,命令解析、系统调用、输出显示。
首先,当用户输入命令时,CMD会对命令进行解析,识别命令的关键字和参数。
然后,CMD会调用系统的相关函数来执行命令所对应的操作,如创建文件、删除文件、修改系统配置等。
最后,CMD会将操作的结果输出显示给用户,用户可以通过命令行界面来查看操作的结果。
在CMD中,用户可以通过各种命令来完成不同的操作。
常用的命令包括,dir (显示目录内容)、cd(切换目录)、copy(复制文件)、del(删除文件)等。
这些命令可以帮助用户完成文件管理、系统配置、网络设置等各种操作。
此外,CMD还支持一些特殊的命令,如管道命令(|)、重定向命令(>、<)等,这些命令可以将命令的输入输出进行连接和重定向,实现更复杂的操作。
除了内置的命令外,用户还可以通过编写批处理文件来扩展CMD的功能。
批处理文件是一系列CMD命令的集合,可以按顺序执行,实现一些自动化的操作。
通过批处理文件,用户可以将一系列操作封装起来,简化操作流程,提高工作效率。
总的来说,CMD是Windows系统中强大的命令行工具,其原理基于DOS的命令行操作方式。
通过CMD,用户可以通过命令来完成各种操作,如文件管理、系统配置、网络设置等。
CMD的原理和基本用法对于了解Windows系统的运行机制和提高工作效率都具有重要意义。
希望本文能够帮助读者更好地理解CMD的原理及其基本用法。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的用途,而且,出于功能、参数、速度、读写方法、功耗、工艺、成本等方面的考虑,往 往要同时使用不止一种存储器。
事实上,TI 在设计 DSP 芯片时,也遇到同样的问题,TI 考虑的情况要比我们更多, 更复杂。要知道,设计芯片的人是最牛 X 的,开发工程师只是跟在人家后面,在人家规定 的框框里亦步亦趋。翻开 DSP 的 PDF 文档,找到 memory map 就会看到,芯片上集成了 形形色色的存储器: FLASH、ROM、BROM、OTP ROM,SRAM、SARAM、DARAM、 FIFO 等。就 2407 和 2812 而言,如果是做个流水灯之类的小东东,DSP 芯片加晶体加电 源就可以了,片上集成的 ROM 和 RAM,在仿真状态下已经足够用了,烧写并脱离仿真器 运行也足够。所以,它们的最小系统不需要外扩任何存储器。但也只能做简单的东东,往 往还需要外扩一些 ROM 和/或 RAM 存储器,才能委以大用。(顺便说一句,DSP 的最小 系统,要比 8951 芯片的最小系统大得多。)
实践证明,至少对于 C2000 系列的 2407 和 2812 而言,存储单元的单位是“字 word”,即 16bit。但 TI 的文档却说是“字节 byte”,应当是 TI 写错了。
要特别注意以下几点: 1、必须在 DSP 芯片的空间分配的架构体系以内,分配所有的存储器。这里举两个 例子:
a、对于 2407,程序空间和数据空间都是从地址 0x0000 到 0xFFFF,最大数 值是四个 F,共 64K 字范围。所以,2407 的 CMD 文件中不能出现五位数的地址,也不允 许任何一个小块空间的地址范围覆盖到 64K 以外的区域,因为 2407 根本就无法控制这些 区域,或者说不能访问、无法寻址。要注意,起始地址和长度不要算错了。2812 也有同样 的问题。
字符,必不可少。
PAGE n 表示把可用的资源空间再划分成几个大块,最多允许分 256 块,从 PAGE
0 到 PAGE 255。如果把 MEMORY 比作图书馆,PAGE n 就是其中的“社科类”、“工程类”、
“外文类”等。大家都习惯于把 PAGE 0 作为程序空间,把 PAGE 1 作为数据空间。如果
三、编写 CMD 文件之——资源清单
如上文所述,CMD 文件包含两大内容,首先就是存储器的资源清单,或者说,系
统中(电路板上)可用的存储器资源。
TI 规定,CMD 文件的资源清单用关键字“MEMORY”作为标识,具体内容写在后
面的大括号 { } 里面。如下面的形式:
MEMORY { PAGE 0:
类或同为 RAM 类存储器,仍然存在速度、读写方法、功耗、成本等诸多方面的差别。比 如 SRAM 的读写速度,从过去的 15ns、12ns,提高到现在的 8ns、10ns,FLASH 的读取 速度从 120ns、75ns,到现在的 40ns、30ns。
有没有人这样想过:使用存储器的人,希望存在这样的区别吗? 或者说,理想的存储器,应当是什么样的? ………… 我们使用存储器时,如果没有人为地改变它,就希望里面的数据永远不要变,即使 断了电也要完好地保存;如果里面的内容是我不需要的或者不能用的,我自然就会给它写 入有用的内容,比如初始化。理想的存储器就应当永远保存数据,无论掉电与否,而且, 希望读写速度为每秒无穷多字节,是 0ns,而不是什么 8ns,10ns。——不是吗? 然而,人类实现存储器芯片的技术,还没有达到理想情况,所以才会有这么多类别。 “非易失”和“速度”就是一对典型的矛盾。非易失的 ROM 类存储器,可以“永远”地 保存数据,但读写速度却很低,比如 30ns;RAM 的速度(8ns)一般都比 ROM(30ns) 快得多,但却不能掉电保存。这是很无奈的现实。假如有那么一天,ROM 类的读写速度 和 RAM 一样快,或者 RAM 也可以掉电保存数据,就不存在易失和非易失的区别了,那将 是革命性的进步。那时,智能芯片和智能系统的设计将会有很大的变化,编写 CMD 文件 就会很简单,甚至不需要了。 已经有芯片厂家做了一些这方面的工作,比如把电池和 RAM 结合起来,就是一个 能掉电保存的 RAM。它既可以作为传统的 ROM 使用,又可以当 RAM 使用。但这显然只 是一个暂时、折中的方法,其原理、成本、体积、容量还不如人意,不能算是“革命性” 的进步。 我们平时在用到存储器的时候,要考虑哪些因素呢? 首先必须确认,在你的使用场合,是要永久保存数据,还是暂时保存?这关系到选 择非易失性,还是易失性存储器的大问题,是首要的问题。在某些场合,如果必须永远地 保存数据,即使希望速度快一些,也只能选择非易失的 ROM 类存储器,而把速度问题放 在其次,或者另外想办法解决;另外一些场合,却要把速度放在第一位,只要在通电期间 能够始终保存数据,就够了,当然就要选择 RAM 类的存储器了。 这两种情况我们都会遇到:程序代码一般都要存储在 ROM 类存储器中,否则,从 设备生产开始,储存、运输,一直到用户手里,要必备不间断电源,还要保证不发生断电 的意外;程序运行的时候,为了提高速度,就必须在 RAM 中运行,试想想,如果你的 MP4 放电影一停一顿的,谁还会用它看电影呢?所以 ROM 和 RAM 都是必不可少的,各有各
有必要先复习一下存储器的知识。目前的物理存储器,种类繁多,原理、功能、参 数、速度各不相同,有 PROM、EPROM、EEPROM、FLASH、NAND FLASH、NOR FLASH 等(ROM 类),还有 SRAM、DRAM、SDRAM、DDR、DDR2、FIFO 等(RAM 类)。无 论多么复杂,从断电后保存数据的能力来看,只有两类:断电后仍然能够保存数据的叫做 非易失性存储器(non-volatile,本文称为 ROM 类),数据丢失的叫做易失性存储器(本文 称为 RAM 类);ROM 类的芯片都是非易失性的,而 RAM 类都是易失性的。即使同为 ROM
去查阅文档或咨询 TI 公司。 很多关键字,还允许有别的写法,比如“org”可以写为“o”,“length”可以写为
“len”。这些规定和其他细节,可以去查阅 TI 的 pdf 文档,一般叫做“xxxxx Assembly Language Tools User's Guide.pdf”,汇编语言工具指南,xxxxx 是芯片的型号或系列。但 这个文档不适合初学者。
CMD 文件的原理 玄德(网名)于 2009 年 3 月
一、前言
开发 TI 公司的 DSP 芯片,肯定要编写或者修改 CMD 文件,这是在单片机开发中 没有碰到过的新事物,也是学习 DSP 的难点。面对里面种类繁多、名称各异、来历不明、 作用不清、功能千差万别的存储器、区域和变量、寄存器,初学者往往都会一头雾水。甚 至很多人已经把项目成功地完成了,对 CMD 文件仍然是一知半解。
xxx : PAGE 1:
aaa : }
org = 0x1234 , org = 0x1357 ,
length = 0x5678 length = 0x2468
/*This is my house.*/ /*My home here.*/
其中,MEMORY,PAGE n,org,length,包括冒号、等于号、花括号,都是关键
你很好奇,也可以试试别的数字。凡智能芯片,都离不开这两种“空间”,大名鼎鼎的冯·诺
依曼结构和哈佛结构,都是建立在程序空是如此。只要学习过单片机,就很容易理解。如果你构思出第三种结构,恭喜您,
您将与这二位齐名了。
CMD 文件中还可以写上注释,用“/*”和“*/”包围起来,但不允许用“//”,这一
0 和 PGAE 1 各包含了只有一个“小块”,用户可以根据自己的情况,按照同样的格式任意
增加。在支持多个 CMD 文件的开发环境里,某个或某几个 CMD 文件中,“小块”的数量
可以为 0,也就是说,关键字 PAGE 0 或 PAGE 1 下面,可以是空白的。但不允许所有的
CMD 文件的同一空间都是空白。另外,没有资料提到过“小块”数量上限的限制,需要
0x1234 开始,总长度为 0x5678 个存储单元,地址和长度通常都以十六进制数表示。所以,
xxx 空间的实际地址范围从 0x1234 开始,到 0x1234 + 0x5678 – 1 = 0x68AB 结束(起始
地址加长度再减一),这一段连续的存储区域,就属于 xxx 小块了。上面的例子中,PAGE
b、2407 的数据空间里,0x0100~0x01FF 和其他几块区域,是 TI 声明的保留 空间(Reserved 或 illegal),也是芯片无法访问的,分配资源的时候不能涉及到这些区域。 同样地,2812 的程序空间和数据空间,都有大片的保留区域,不能使用。
笔者水平有限,但保证会用心去写,您会看到很多别处没有的思路和信息,相信会 基本打通初学者的任督二脉。本文适用于那些有单片机的开发基础、刚开始学习 DSP 的 初学者。如果你还不知道程序空间,数据空间这些名词,可能就比较困难了。
二、CMD 文件的起源
在 DSP 系统中,存在大量的、各式各样的存储器,CMD 文件所描述的,就是开发 工程师对物理存储器的管理、分配和使用情况。
笔者也经历了极度困惑的过程,曾经大量地看书,下载资料,分析所能搜集到的 CMD 源文件。可惜的是,无论是 TI 公司的原始文档,还是网上的资料,或者 BBS 的帖子, 都没有透彻地说明 CMD 文件的原理和使用,只说“然”,要靠自己去体会“所以然”,去 “悟”。
终于有一天,我悟到了,也许只是“一些”。现在,我把自己的“一些”写下来。 我将细致而通俗地说明 CMD 文件的原理,给您“鱼”,更给您“渔”,一步步地引导象我 当初一样的初学者。我将以 TI 的 2407 为对象展开说明,对于 TI 公司其他型号、其他系 列的 DSP,道理是完全相同的。 用时下学术界最最最流行的语式, 叫做“基于 2407” ——这个词起源于英文的“based on”,或“something based”,被我们大量地引用,以 至于令人反胃了——我们美妙、绚烂的语言,现在只剩下“基于”了。