CCS CMD文件

超详细的CMD文件讲解(DSP28035) 一、 CMD文件基本概念及语法 CMD的专业名称叫链接器配置文件,是存放链接器的配置信息的,我们简称为命令文件。从其名称可以看出,该文件的作用是指明如何链接程序的。 那么我们知道,在编写TI DSP程序时,是可以将程序分为很多段,比如text、bss等,各段的作用均不相同。实际在片中运行时,所处的位置也不相同。比如text代码一般应该放在flash内,而bss的变量应该放在ram内。等等。但是对 阅读详情

友情链接:#pragma DATA_SECTION 和 #pragma CODE_SECTION的使用

gel文件中主要包含了PLL、DDR等的初始化工作,具体可以看一下gel源码就明白了;cmd文件主要是用于定义内存的划分,及数据、代码等的存放位置。CMD:command命令,顾名思义就是命令文件指定存储区域的分配.2812的CMD采用的是分页制,其中PAGE0用于存放程序空间,而PAGE1用于存放数据空间。

1.) #pragma ,CODE_SECTION和DATA_SECTION伪指令
#pragmaDATA_SECTION(funcA,"dataA");  ------  函数外声明
将funcA数据块定位于用户自定义的段"dataA"中   ------ 需要在CMD中指定dataA段的物理地址
2.)MEMORY和SECTIONS是命令文件中最常用的两伪指令。MEMORY伪指令用 来表示实际存在目标系统中的可以使用的存储器范围,在这里每个存储器都有自 己的名字,起始地址和长度。SECTIONS伪指令是用来描述输入端是如何组合到输出端内的。
CMD文件里有两个基本的段:初始化段和非初始化段。初始化段包含代码和常数等必须在DSP上电之后有效的数。故初始化块必须保存在如片内FLASH等非遗失性存储器中,非初始化段中含有在程序运行过程中才像变量内写数据进去,所以非初始化段必须链接到易失性存储器中如RAM。
 
已初始化的段:.text,.cinit,.const,.econst,..pinit和.switch..
.text:所有可以执行的代码和常量 
.cinit:全局变量和静态变量的C初始化记录
.const:包含字符串常量和初始化的全局变量和静态变量(由const)的初始化 和说明 
.econst:包含字符串常量和初始化的全局变量和静态变量(由farconst)的初 始化和说明 
.pinit:全局构造器(C++)程序列表
.switch:包含switch声明的列表

非初始化的段:.bss,.ebss,.stack,.sysmem,和esysmem.(更好的理解就是,这些段就是存储空间而已) 
.bss:为全局变量和局部变量保留的空间,在程序上电时.cinit空间中的数据复制出来并存储在.bss空间中。 
.ebss:为使用大寄存器模式时的全局变量和静态变量预留的空间,在程序上电时,cinit空间中的数据复制出来并存储在.ebss中
.stack:为系统堆栈保留的空间,用于和函数传递变量或为局部变量分配空间。 
.sysmem:为动态存储分配保留的空间。如果有宏函数,此空间被宏函数占用,如果没有的话,此空间保留为0
.esysmem:为动态存储分配保留的空间。如果有far函数,此空间被相应的占用,如果没有的化,此空间保留为0

对于程序在FLASH中运行时,需要注意的:DSP在150M时钟频率下,FLASH中只能提供大约120M的时钟频率,所以有时候我们希望在RAM中运行时间敏感或计算量很大的子程序(比如AD采样)。但是我们所有代码都放在FLASH中,这就必须在上电后将FLASH中的这段敏感程序复制到RAM中运行,加快速度。这是在.CMD文件就必须划分一段用来设置RAM的载入和运行地址。程序代码如下: 
SECTIONS{……… 
   ramfuncs     :  LOAD =FLASHD, 
                         RUN =RAML0, 
                        LOAD_START(_RamfuncsLoadStart),
                        LOAD_END(_RamfuncsLoadEnd),
                        RUN_START(_RamfuncsRunStart),
                         PAGE = 0
  }

cmd小技巧:

如果.text文件很大将其放在一段放不下,需将其放到两个程序段中
最长的一个length=0x002000,也放不下时.可以这样处理:
PAGE 0:
                      PRAMH0        : origin = 0x3F8002, length = 0x0014FE
                      L0RAM          : origin = 0x008000, length = 0x001000
 
SECTIONS
                            .text:{*(.text)}>>PRAMH0|L0RAM
这样就可以将.text文件放在两个定义段中。

查看段的分配及使用情况.map的链接器(存储器)分配映射文件,链接器的map文件描述以下内容:通过map文件可以查看各段的分配情况,包括段的起始地址,使用的字节数等配合cmd文件的使用,可确定各个段的使用情况,从而保证程序的正常运行和最小的空间使用。 

VisualLinker可视化链接器TI公司出品的DSP软件开发环境CCS还提供了一种可视化生成存储器配置文件的工具:VisualLinker可视化链接器。如果程序原来包含了一个链接器命令文件(.cmd文件),则当创建可视化链接文件的时候,原来cmd文件中的内存配置仍然会被使用。如果读者想修改内存配置,双击.rcp文件就会在CCS中打开可视化链接器的图形界面,调整每个内存模块的大小,直到认为合适,然后只需要重新连编,程序即可生成新的输出文件,重复上面的步骤,直到出现满意的结果。

CMD主要是用来分配rom和ram空间用的,它告诉链接程序怎样计算地址和分配空间.所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据芯片进行修改.分两部分.MEMORY和SECTIONS.

MEMORY是用来指定芯片的rom和ram的大小和划分出几个区间.

MEMORY

{

PAGE 0 ... ROM
PAGE 1....    RAM
}

(`PAGE里包含的区间名字与其后面的参数反映了该区间的起始地址和长度.)


SECTIONS
{
.vectors .................
.reset .................
................
}

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可执行代码


转自:http://blog.sina.com.cn/s/blog_9b9a519901017yzr.html

CCS工程中cmd文件的编写 Section目标文件中最小单位称为块,一个块就是最终在存储器映象中占据连续空间的一段代码或数据。 1、COFF目标文件包含三个默认的块: .text可执行代码 .data已初始化数据 .bss为未初始化数据保留的空间 2、汇编器对块的处理 未初始化块                         .bss      变量存放空间 阅读详情

相关推荐

CCS+C6678LE开发记录04:编写CMD文件+读取Bitmap

关于CMD文件

B0tt3rf1y 5801

cmd文件

gel文件中主要包含了PLL、DDR等的初始化工作,具体可以看一下gel源码就明白了;CMD主要是用于定义内存的划分,及数据、代码等的存放位置。   CMD:command命令,顾名思义就是命令文件指定存储区 域的分配.2812的CMD采用的是分页制,其中PAGE0用于存放程序空间,而PAGE1用于存放数据空间。   1.)#pragma ,CODE_SECTION和DATA_SECTI

dinkysummydinky的专栏 1213

CCS使用深度解析:CMD与CFG文件协同工作机制

深入剖析CCS使用过程中CMD与CFG文件的协作原理,揭示链接配置与系统初始化的关键细节,帮助开发者更好掌握ccs使用技巧,提升嵌入式开发效率。

weixin_42513209的博客 932

CCS中CMD文件

2020-5-19

qq_40104597的博客 6511

DSP CCS .CMD文件的原理讲解及编写

以.CMD 为扩展名的文件,这个文件的作用是用来分配存储空间的。由于DSP 编译器的编译结果是未定位的,DSP 也没有操作系统来定位执行代码,DSP 系统的配置需求也不尽相同,因此我们根据实际的需求,自己定义代码的存储位置。打个通俗的比喻,就是我们有一个仓库,现在需要把货物存放到仓库里面去,为了便于日后取用货物,我们将货物分门别类,然后把它们存放到指定的位置去。把哪些货物放到哪个位置的规则,就是我们的CMD文件的内容。 CMD文件,又称链接命令文件,主要作用是分配rom和ram空间,它告诉链接程...

xunchenlxj的博客 4693

有关CCS的Project中CMD文件详解

.cmd 为连接器命令文件:给出了程序空间和数据空间的设置,及编译后各程序段在程序或数据空间的具体位置。一般情况下该文件主体部分为两个伪指令,MEMORY和SECTIONS。

CCS中CMD文件详解

CCS中CMD文件详解 文章转载自:http://bbs.ednchina.com/BLOG_ARTICLE_2141234.HTM CMD主要是用来分配rom和ram空间用的,它告诉链接程序怎样计算地址和分配空间.所以不同的芯片就有不同大小的rom和ram.放用户程序的地方也不尽相同.所以要根据芯片进行修改.分两部分.MEMORY和SECTIONS. MEMORY { PAGE 0 … PAGE...

xuexiyong11的博客 3493

CCS CMD文件链接的两种方法.pdf

CCS CMD文件链接的两种方法.pdf

CCS的使用、cmd文件、CCXML 文件、新建工程

打开CCS会让选择工作区。选择一个非中文路径即可,工作区会保存CCS的软件配置、当前打开的工程路径等。引入CCS工程在工程名上右键“Properties”。选择自己的仿真器型号,然后点击Verify,如果出现Succeed说明仿真器连接成功。接下来可以编译、仿真。

qlexcel的专栏 567

FOC控制必看:单/双/三电阻电流采样方案全对比(附NXP实战避坑指南)

本文深入对比了FOC控制中单电阻、双电阻和三电阻电流采样方案的优劣与适用场景,重点剖析了采样时序、窗口与ADC转换的工程挑战。针对NXP平台,提供了解决采样窗口过窄的实战方案与配置指南,帮助工程师根据成本与性能需求做出最优选择,并规避常见设计陷阱。

n2o3p4的博客 413

MAX96712在车载摄像头系统中的带宽分配与传输能力计算解析

在计算摄像头带宽与传输接口的关系时,需要考虑视频流的像素分辨率、帧率、颜色深度等因素。以 MAX96712 这种 GMSL2 产品为例,它支持每个链路在正向方向以 3Gbps 或 6Gbps 的固定速率工作。

weixin_43199439的博客 3329

有些CCS工程中为什么会有两个CMD文件?

  这里的CCS就是TI公司的Code Composer Studio 集成开发环境,所以这篇随笔也就是关于TI公司DSP开发过程中对于刚入门同学的一个常见问题了。   那作为一个初学者,对于CCS工程中的cmd文件首先应该是有些基础了解的,下面做一个简单的介绍:   .cmd 的专业名称叫链接器配置文件,是存放链接器的配置信息----给出了程序空间和数据空间的设置,及编译后各程序段...

dingmanghuan7038的博客 1440

把STM32MP135当单片机玩:实战SD卡脱机运行LED程序(基于MP135DK开发板)

本文详细介绍了如何在STM32MP135开发板上实现SD卡脱机运行LED程序,通过裸机开发方式(Bare Metal)利用HAL库完成GPIO控制,并解析了SD卡启动流程。内容涵盖工程创建、代码编写、SD卡烧录及常见问题排查,为开发者提供了一种高性能单片机开发方案。

weixin_33734785的博客 242

CCS6.2.0 如何屏蔽工程的中的CMD文件

昨天想把CCS7.0的工程导入CCS6.2.0的编译器中使用,结果发现导入不了,即使我把CCS7.0工程中的编译版本换成CCS6.2.0的版本,还是不行,最后没法了,只能在CCS6.2.0中新建工程,把原有工程的文件塞进去,一番设置之后,开始编译了,结果编译出错,一看是CMD文件出了问题,然后我打开cmd文件,发现了这么多CMD文件。 然后看看之前的工程的cmd文件夹: 怎么和我的不一...

湖心水动影无双 2576

解决mmdet3d安装中因PyTorch高版本引发的THC.h缺失问题

本文详细分析了在安装mmdet3d时,因PyTorch版本过高导致THC.h头文件缺失的常见报错问题。文章指出该错误的本质是PyTorch 1.7+版本废弃了旧API,与老版本C++扩展代码不兼容。提供了两种核心解决方案:一是降级PyTorch至1.6及以下版本;二是修改源码,将THC.h引用替换为ATen/cuda等新头文件,并给出了具体的代码修改示例和排查技巧。

weixin_29085151的博客 380

Ubuntu 22.04 安装 IsaacLab 2.1.0

本文介绍了IsaacLab的完整安装流程:1)创建Python3.10虚拟环境;2)安装PyTorch2.5.1(CUDA11.8);3)升级pip并安装IsaacSim4.5.0;4)克隆IsaacLab仓库;5)运行安装脚本(需接受EULA)。若遇cmake缺失错误,需执行sudo apt安装。安装完成后可通过Ant-v0训练任务验证,成功运行后将显示IsaacSim窗口和训练完成提示。注意:IsaacSim不同版本可共存于不同环境。

weixin_47880303的博客 2224

CCS中cmd文件的编写

http://blog.sina.com.cn/s/blog_abe5740601015b3q.html CMD的专业名称叫链接器配置文件,是存放链接器的配置信息的,我们简称为命令文件,其中比较关键的就是MEMORY和SECTIONS两个伪指令 的使用,常常令人困惑,系统出现的问题也经常与它们的不当使用有关,我将重点讲解。CCS是从DOS系统下DSP软件继承的开发环境。CCS的命令文件是 ...

weixin_33890499的博客 1037

基于MS5351的三通道可编程时钟发生器设计

时钟发生器是数字系统时序验证与信号完整性测试的核心基础设备,其原理基于锁相环(PLL)对参考晶振进行倍频与分频控制,通过寄存器配置实现多路独立频率输出。技术价值体现在高精度、低抖动、快速切换与工程可部署性之间取得平衡,尤其适用于FPGA/ASIC参考时钟调试、ADC/DAC采样时钟验证及嵌入式硬件时序裕量评估等场景。本方案采用MS5351三通道时钟芯片与ESP32主控协同架构,在保证LVCMOS输出质量与I²C可编程性的前提下,优化电源噪声抑制、晶体负载匹配和跨板信号完整性,兼顾成本、周期与实测稳定性,为实

weixin_31715353的博客 211

【亲测免费】 有关CCS的Project中CMD文件详解

有关CCS的Project中CMD文件详解 【下载地址】有关CCS的Project中CMD文件详解 有关CCS的Project中CMD文件详解在嵌入式开发领域,尤其是使用Texas Instruments的Code Composer Studio (CCS)进行DSP或是MCU编程时,CMD文件扮演着至关重要的角色 ...

gitblog_09813的博客 800

深度学习的卷积神经网络的煤矸石识别

在本博文中,我们提出了一种基于深度学习的煤矸石检测与识别系统,该系统采用YOLOv8算法对煤矸石进行检测和识别,实现对图片中的煤矸石进行准确识别。1.项目需求对煤矸石进行检测与识别,系统将识别出图片中的克服小块煤矸石漏检的缺陷。 2.项目实现 通过调研,本项目最终使用yolov8模型作为目标检测的模型, YOLOv8 旨在快速、准确且易使用,使其成为广泛的物体检测、图像分割和图像分类任务的极佳选择。 1.数据集:格式为jpg的3091张煤矸石图片2.YOLOv8环境配置yolo检测网络包括24个卷积层

2201_75355700的博客 792

【测开求职】面试题:计算机网络 详细版整理

本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。读者可以先查看上面的链接走一遍计算机网络的整体框架结构。其中,重点难点以及易混淆的知识点,笔者会用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。

vector的博客 5936

【亲测免费】 深入解析CCS项目中的CMD文件:优化嵌入式开发的利器

深入解析CCS项目中的CMD文件:优化嵌入式开发的利器 【下载地址】有关CCS的Project中CMD文件详解 有关CCS的Project中CMD文件详解在嵌入式开发领域,尤其是使用Texas Instruments的Code Composer Studio (CCS)进行DSP或是MCU编程时,CMD文件扮演着至关重要...

gitblog_09784的博客 1120

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

CCS的CMD文件解读

CMD文件主要告诉ccs编译器,程序、数据、堆、栈存放的首址和长度。一种方法是看文档,比如C6678的CMD关键字可以参见《TMS320C6000 Assembly Language Tools v7.4 -- User's Guide》这篇文章的7.5节,更好的方法是直接看官网的cmd例子,特别是广州创龙的例子。...

x_ym的博客 1644

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: WCDMA中码片速率、符号速率、bit速率
下一篇: 导出gmail邮件
Clef
博客等级 码龄12年 125粉丝 121原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值