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。
DSP中的cmd文件的更多相关文章
- 【DSP开发】CMD文件
DSP的存储器的地址范围,CMD是主要是根据那个来编的. CMD 它是用来分配rom和ram空间用的,告诉链接程序怎样计算地址和分配空间. 所以不同的芯片就有不同大小的rom和ram.放用户程序的地方 ...
- DSP TMS320C6000基础学习(4)—— cmd文件分析
DSP中的CMD文件是链接命令文件(Linker Command File),以.cmd为后缀. 在分析cmd文件之前,必需先了解 (1)DSP具体芯片的内存映射(Memory Map) (2)知道点 ...
- 有些CCS工程中为什么会有两个CMD文件?
这里的CCS就是TI公司的Code Composer Studio 集成开发环境,所以这篇随笔也就是关于TI公司DSP开发过程中对于刚入门同学的一个常见问题了. 那作为一个初学者,对于CCS工程中的c ...
- DSP中CMD文件
DSP中CMD文件 (2012-12-26 20:54:17) 转载▼ 标签: 杂谈 分类: DSP FPGA DSP的存储器的地址范围,CMD是主要是根据那个来编的.CMD 它是用来分配rom和ra ...
- CCS中CMD文件解析
http://blog.csdn.net/u011392772/article/details/49760897 gel文件中主要包含了PLL.DDR等的初始化工作,具体可以看一下gel源码就明白了: ...
- CCS中cmd文件的编写
http://blog.sina.com.cn/s/blog_abe5740601015b3q.html CMD的专业名称叫链接器配置文件,是存放链接器的配置信息的,我们简称为命令文件,其中比较关键的 ...
- cmd中执行jar文件命令(待参数)
cmd中执行jar文件命令(待参数) 1,jar文件路径:F:\products 2,cmd命令: --两个日期参数(空格隔开) java -jar F:\products\analysis.jar ...
- 记录自己在 cmd 中执行 jar 文件遇到的一些错误
记录自己在 cmd 中执行 jar 文件遇到的一些错误 场景: 请求接口,解析接口返回的 JSON 字符串并插入到我们的数据库里面. 情况: 项目在 eclipse 中正常运行,打成 jar 包后在 ...
- DSP6455的cmd文件
DSP6455的cmd文件 CMD 的专业名称叫链接器配置文件,存放链接器的配置信息,DSP编译器的编译结果是未定位的,DSP也没有操作系统来定位执行代码,DSP系统的配置需求也不尽相同,因此需要定义 ...
随机推荐
- input元素的padding border margin的区别
padding内(不包含padding)的部分才是可输入部分,也是width和height标明的区域.padding的部分加上width和height部分是background的部分.padding的 ...
- QQ消息99+形成--第三方开源--BezierView
Android第三方开源的BezierView实现了上述QQ的99+条未读消息气泡显示.Android开源BezierView在github上的项目主页是:https://github.com/che ...
- 16.python中的浅拷贝和深拷贝
在讲什么是深浅拷贝之前,我们先来看这样一个现象: a = ['scolia', 123, [], ] b = a[:] b[2].append(666) print a print b
- [转]命令行 Subversion 入门
http://omyyal.iteye.com/blog/1762831 命令行 Subversion 入门 如果您参与的项目正在使用 Subversion 进行版本控制,您将需要使用 Subvers ...
- openshift云计算平台diy模式安装Python2.7+Flask
主要翻译了链接1)的教程,加上一些个人研究,步骤如下: 1) 在openshift.redhat.com申请账号,安装git for windows,然后安装gem install rhc,这些比较容 ...
- EMVTag系列12《卡片内部风险管理数据》
Ø 9F53 连续脱机交易限制数(国际-货币) L: 1 -C(有条件):如果执行国际-货币频度检查 PBOC专有数据元. 不使用指定应用货币的连续脱机交易次数最大数,超过后交易请求联机 模板 ...
- Mybatis 的日志管理
Mybatis通过日志工厂提供日志信息,Mybatis内置的日志模版是log4j,commons.log,jdk log也可以通过slf4j简单日志模版结合log4j使用日志信息输出.具体选择哪个日志 ...
- hdu 2112 HDU Today
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Description 经过锦囊相助,海东集团终于度过了危机,从此,HDU的 ...
- 九度oj 1541 二叉树
原题链接:http://ac.jobdu.com/problem.php?pid=1541 简答题如下: #include<algorithm> #include<iostream& ...
- iOS代码实践总结
转载地址:http://mobile.51cto.com/hot-492236.htm 最近一个月除了专门抽时间和精力重构之外,还有就是遇到需要添加功能的模块的时候,由于项目中的代码历史因素比较多,第 ...