CCS中CMD文件详解
文章转载自:http://bbs.ednchina.com/BLOG_ARTICLE_2141234.HTM
CMD主要是用来分配rom和ram空间用的,它告诉链接程序怎样计算地址和分配空间.所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据芯片进行修改.分两部分.MEMORY和SECTIONS.
MEMORY
{ PAGE 0 ..........
PAGE 1.........
}
SECTIONS
{
.vectors .................
.reset .................
................
}
MEMORY是用来指定芯片的rom和ram的大小和划分出几个区间.PAGE 0 对应rom,PAGE 1对应ram。PAGE里包含的区间名字与其后面的参数反映了该区间的起始地址和长度.
SECTIONS:在程序里添加段名.XXXX(如.vectors.)用来指定该段名以下,另一个段名以上的程序(属于PAGE0)或数据(属于PAGE1)放到“>”符号后的空间名字所在的地方。下面给出一个简单的例子:
MEMORY
{
PAGE 0: VECS: origin = 00000h, length = 00040h
LOW: origin = 00040h, length = 03FC0h
SARAM: origin = 04000h, length = 00800h
B0: origin = 0FF00h, length = 00100h
PAGE 1: B0: origin = 00200h, length = 00100h
B1: origin = 00300h, length = 00100h
B2: origin = 00060h, length = 00020h
SARAM: origin = 08000h, length = 00800h
}
SECTIONS
{
.text : { } > LOW PAGE 0
.cinit : { } > LOW PAGE 0
.switch : { } > LOW PAGE 0
.const : { } > SARAM PAGE 1
.data : { } > SARAM PAGE 1
.bss : { } > SARAM PAGE 1
.stack : { } > SARAM PAGE 1
.sysmem : { } > SARAM PAGE 1
}
CMD文件由三部分组成:(1) 输入输出定义;(2) MEMORY命令;(3) SECTION命令。
输入/输出定义:这一部分,可以通过ccs的“Build Option........”菜单设置
。obj 链接的目标文件
。lib 链接的库文件
。map 生成的交叉索引文件
。out 生成的可执行代码
MEMORY命令:描述系统实际的硬件资源
SECTION命令:描述“段”如何定位
下面给出一个例子:
-c
-o hello.out
-m hello.map
-stack 100
-l rts2xx.lib
MEMORY
{
PAGE 0: VECT:origin=0x8000,length 0x040
PAGE 0: PROG:origin=0x8040,length 0x6000
PAGE 1: DATA:origin=0x8000,length 0x400
}
SECTIONS
{
.vextors >VECT PAGE 0
.text >PROG PAGE 0
.bss >DATA PAGE 1
.const >DATA PAGE 1
}
存储模型说明:
.cinit 存放程序中的变量初值和常量
.const 存放程序中的字符常量、浮点常量和用const声明的常量
.switch 存放程序中switch语句的跳转地址表
.text 存放程序代码
.bss 为程序中的全局和静态变量保留存储空间
.far 为程序中用far声明的全局和静态变量保留空间
.stack 为程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部变量和保存中间结果
.sysmem 用于程序中的malloc 、calloc 、和realoc 函数动态分配存储空间.text可执行代
CCS中CMD文件详解相关推荐
- CMD文件详解与DSP存储空间
CMD文件详解与DSP存储空间 CMD的全称为链接命令配置文件.以ROM/FLASH和RAM两类存储器为对象,用户通过编写CMD文件,来管理和分配系统中的所有物理存储器和地址空间.DSP芯片的片内存储 ...
- Maven中pom文件详解
在IDE中使用Maven IDE工具 MyEclipse 集成maven插件 Eclipse Eclipse For Java EE IDEA 集成Maven插件 在IDE中 配置Maven 指定 ...
- GAZEBO 中 sdf文件详解
转载自:https://blog.csdn.net/weixin_44900096/article/details/103017522 GAZEBO 中 sdf文件详解 木木木一 2019-11-11 ...
- Android 中rc文件详解
rc文件详解 转载https://www.cnblogs.com/zhougong/p/8889040.html
- [CMD] DSP CMD文件详解
目录 1. CMD文件是什么? 2. CMD文件的功能 3. CMD文件的使用方法 MEMORY伪指令--指示存储空间 SECTIONS伪指令--分配段到存储空间 4. 注意事项 1. CMD文件是什 ...
- F28335之cmd文件详解
1.CMD文件的作用 CMD文件的作用就像仓库的货物摆放记录一样,为程序代码和数据分配指定的空间. 2.C语言生成的段 C语言生成的段大致分为两大类:初始化和未初始化,已初始化的段含有真正的指令和数据 ...
- IOS 中 pch 文件详解
在 Xcode6 之前,创建一个新工程会在 Supporting files 文件夹下面自动创建一个"工程名-Prefix.pch"文件,也是一个头文件,pch 头文件的内容能被项 ...
- TMS320F28335项目开发记录6_28335之cmd文件详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/scottly1/article/de ...
- (转) eclipse项目中.classpath文件详解
背景:对于java项目中.classpath文件中的相关定义一直不是很了解,有必要进行深入的学习. 1 前言 在使用eclipse或者myeclipse进行Java项目开发的时候,每个project( ...
- Linux中service文件详解
1. 什么是systemd service systemd service是一种以 .service 结尾的配置文件,是一个专用于 Linux 操作系统的系统与服务管理器.简单来说,用于后台以守护精灵 ...
最新文章
- linux系统怎么关闭usb端口,linux系统挂载以及卸载USB接口的设备的解决办法
- 【UVA】10012 - How Big Is It?(暴力)
- 项目实践:Spring Boot 三招组合拳,手把手教你打出优雅的后端接口
- (转)Oracle与DB2在数据库高可用技术上的相同与差异探讨
- 动物麻醉剂量和途径相关要点
- tensorflow中tf.get_variable()函数详解
- Java Web实现信息管理
- 排序——冒泡排序算法
- mysql并发控制之MVCC
- Clear Float
- vc浏览器_【36氪基金X一刻】零基础VC/PE行研标准班7月10日线上开课
- PHP面向对象之方法重写
- 产品经理学习笔记(二)-------------------商业模式和商业模式画布
- 组装服务器怎么做阵列,怎么做服务器的磁盘阵列
- 15亿美元!软银联合GungHo收购手游巨头Supercell
- 如何管理应用的生命周期?
- IDEMIA被选中提供其下一代指纹匹配引擎,成为英国内政部生物识别计划的一部分
- Zabbix 监控MySQL最大连接数
- Java基础学习(6)---Java面向对象
- 【java笔记】day01
热门文章
- Fundamental of 4G LTE - 学习笔记(1)Duplexing - TDD vs FDD
- Redis:字符串MSET、MSETNX、MGET命令介绍
- How to Write a simple UEFI EDKII Application:如何编写一个UEFI简单的应用程序[5]
- MSP430FR5994LannchPad开发笔记之三:MSP430的IO复用以及如何去获取IO复用功能
- 如何让 ABAP 报表在后台作业的模式下运行
- sqlalchemy的基本操作大全
- 桥架算量用什么软件_鹏业安装算量软件识别桥架
- [渝粤教育] 三江学院 财务管理 参考 资料
- 视频下载离线工具—“Softorino YouTube Converter”
- 周立功linux内核,极速搭建周立功IMX287A ARM Linux开发环境