cmd文件是使用TI芯片很重要的一步,了解它,能对整个软件系统的分布,对芯片本身资源的使用有一个更清晰的了解,从而达到优化系统的目的。CMD文件一句话来表达:定义芯片内部硬件资源和分配管理软件代码的一个配置文件。因此从cmd文件的组织上你能看到两个部分:1定义硬件资源,2管理软件代码
(非原创,总结与网络)用户通过编写CMD 文件,来管理、分配系统中的所有物理存储器和地址空间。CMD文件,全名连接命令文件(linkercommand files),以后缀.cmd结尾。
CMD文件其实就是 用户的“声明” ,包括两方面的内容:1、用户声明的整个系统里的存储器资源。无论是DSP 芯片自带的,还是用户外扩的,凡是可以 使用的、需要用到的存储器和空间,用户都要一一声明出来:有哪些存储器,它们的位置和大小。如果有些资源根本用不到,可以视为不存在,不必列出来;列出来也无所谓。2、用户如何分配这些存储器资源,即关于资源分配情况的声明。用户根据自己的需要,结合芯片的要求,把各 种数据分配到适当种类、适当特点、适当长度的存储器区域
编写CMD文件
例子- /**********************************************************************************************/
- -stack 200h /* #1 */
- /**********************************************************************************************/
- MEMORY /* #2 声明存储空间 */
- {
- PAGE 0 ://PAGE 0程序存储空间
- VECS : origin = 0000h , length =0040h /* 中断向量 */ /* #3 */
- PROG : origin = 0100h , length =7F00h /* 片上 FLASH */ /* #4 */
-
- PAGE 1 ://PAGE1 数据存储空间
- B2 : origin = 0060h , length =0020h /* DARAM B2 块 */ /* #5 */
- B0B1 : origin = 0200h , length =0200h /* DARAM B0 块 */ /* #6 */
- SARAM : origin = 0800h , length = 0800h /* SARAM 块 */ /* #7 */
- ExtSRAM : origin = 8000h , length = 8000h /* 外部存储器 */ /* #8 */
- }
- /**********************************************************************************************/
- SECTIONS /* #9 分配段到存储空间 */
- {
- .vectors : > VECS PAGE 0 /* 中断向量表 */ /* #10 */.vectors代表输出段, >VECS同样可以写成load=VECS或VECS,和load平级的还有run,run定义输出段将会在哪里运行,语法run=VECS或run>VECS,当只出现一个run或load时表示地址相同
- .text : > PROG PAGE 0 /* 代码 */ /* #11 */
- .cinit : > PROG PAGE 0 /* #12 */
-
- .bss : > SARAM PAGE 1 /* #13*/
- 这个其实是.bss load = SARAM PAGE1
- {
- *.(bss)
- }的简写。表示输入端和输出段同名
- .stack : > B0B1 PAGE 1 /* #14 */
-
- .extdata : > ExtSRAM PAGE 1 /* #15 */ }
- /**********************************************************************************************/
复制代码
- MEMORY
- {
- PAGE 0:
- xxx : org = 0x1234 , length = 0x5678 /*This is my house.*/
- PAGE 1:
- aaa : org = 0x1357 , length = 0x2468 /*My home here.*/
- }
复制代码其中,MEMORY,PAGE n,org,length,包括冒号、等于号、花括号,都是关键字符,必不可少。PAGE n表示把可用的资源空间再划分成几个大块,最多允许分256块,从PAGE0到PAGE 255。很多关键字,还允许有别的写法,比 如“org”可以写为“o” ,“length”可以写为“len” 。这些规定和其他细节,可以去查阅TI 的pdf 文档。
注意:
1.主要有PAGE0和PAGE1,PAGE0上的memory可以overlay到PAGE1 and so on
2. origin和length都是22bit的常数,在以前的一些dsp由于它的地址总线是16bit的,所以相应的origin和length只能为16bit的常数。
3. Sections以name开始,name就是定义的输出段。4. load的格式有: load=allocation or allocation or >allocation
5. run的格式有:run = allocation or run>allocation
具体cmd文件的使用ti有详细的文档说明,不再重复。
请参考TMS320C28x Assembly Language Tools。
一周热门 更多>