这里的CCS就是TI公司的Code Composer Studio 集成开发环境,所以这篇随笔也就是关于TI公司DSP开发过程中对于刚入门同学的一个常见问题了。

  那作为一个初学者,对于CCS工程中的cmd文件首先应该是有些基础了解的,下面做一个简单的介绍:

  .cmd 的专业名称叫链接器配置文件,是存放链接器的配置信息----给出了程序空间和数据空间的设置,及编译后各程序段在程序或数据空间的具体位置。一般情况下该文件主体部分为两个伪指令,      MEMORY和SECTIONS。MEMORY用来配置目标存储器,SECTIONS用来指定段的存放位置。例如下面的格式:

MEMORY
{
PAGE 0 :  /* Program Memory */
  .......
PAGE 1 :
  ......
}
SECTIONS
{
 /* Allocate program areas: */
 .cinit   : > FLASHF  PAGE = 0, ALIGN(8)
 .pinit   : > FLASHF  PAGE = 0, ALIGN(8)
 .text   : > FLASHG   PAGE = 0, ALIGN(8)
......
}
限于篇幅,这里就不展开讲cmd文件里面内容的具体含义和语法了,可以参考另一篇博文。。。。。。
  这里重点讲一讲,为什么CCS工程里面会有两个cmd文件,它们之间是什么关系?
  可能有些同学已经想到了,既然是链接器配置文件,对于一个工程来讲,只要告诉链接器具体的配置内容,那么链接器就可以知道怎么处理编译后的二进制文件,用一个cmd文件完全可以做到。
  这样就很好理解,CCS工程里面的两个cmd文件其实是一分为二的关系,也就是说,这些CCS工程里面,把一个cmd文件分成了两个部分,分别解释不同的部分该怎么去配置处理。
  那么问题又来了,为什么要把一个cmd文件分成两个呢? 

  实际上,(推测是基于便于管理的角度)TI把它分开了,一个对寄存器进行存储映射,因为同个系列的芯片寄存器都是一样的,这样一个cmd文件在该系列芯片的工程里都是可以通用的。

  另外一个是对Flash, Ram进行存储分配,同个系列不同芯片有不同存储配置,所以他们的CMD也不一样。

  例如2837xS系列芯片的不同芯片ram/rom配置如下表:

  

  从上面可以看到,根据不同的需要,芯片的ram和rom(flash)有多有少,那么在cmd文件中也要针对性的调整,否则可能编译出来的文件无法正确烧写或者执行。

  另外一个,顺便提一句的。在同一个芯片系列中相同的cmd文件,主要存放芯片寄存器地址信息,同学们会看到,在这个cmd文件中MEMORY指令中只有PAGE1的内容,就像下面这样:

  为什么呢?这是因为,TI公司默认在MEMORY把PAGE0作为程序储存器,PAGE1作为数据储存器进行分配,分别有数据总线和程序总线进行访问。那么,所有芯片寄存器都属于数据空间,所以放在PAGE1,因此这个cmd文件里就只有PAGE1的内容了。

有些CCS工程中为什么会有两个CMD文件?的更多相关文章

  1. webform工程中aspx页面为何不能调用appcode文件夹下的类(ASP.NET特殊文件夹的用法)

    App_code 只有website类型的工程才有效. App_Code 下创建的.cs文件仅仅是“内容”不是代码.你设置那个文件为“编译”就行了. 其他特殊文件夹 1. Bin文件夹 Bin文件夹包 ...

  2. 在Web工程中,普通Java类如何读文件

    我们在以前讨论过在Web工程不能采用Java工程原先的读取方式,即创建一个文件流(FileInputStream)并给出一个文件目录(从src开始找一直找到你要读取文件的目录),这种的方式是不可行的. ...

  3. unity导出工程导入到iOS原生工程中详细步骤

    一直想抽空整理一下unity原生工程导入iOS原生工程中的详细步骤.做iOS+vuforia+unity开发这么长时间了.从最初的小小白到现在的小白.中间趟过了好多的坑.也有一些的小小收货.做一个喜欢 ...

  4. IOS学习:在工程中添加百度地图SDK

    1.将下载下来的sdk中的inc文件夹.mapapi.bundle.libbaidumapapi.a添加到工程中,其中libbaiduapi.a有两个,一个对应模拟器一个对应真机,导入方法如下: 第一 ...

  5. 关于XCode工程中PrefixHead.pch文件的使用

    1.首先先清除pch文件在工程中的作用: 存放一些全局的宏(整个项目中都用得上的宏) 用来包含一些全部的头文件(整个项目中都用得上的头文件) 能自动打开或者关闭日志输出功能 2.由于新建的XCode工 ...

  6. web工程中的各种路径(eclipse开发)

    目前遇到的 web 工程中要写url和路径的文件有 webContent中.jsp/.html :action src中的servlet类 : 映射地址.重定向.请求转发.访问资源文件(webCont ...

  7. 如何在原生工程中引入Cordova工程-for iOS 【转】

    http://blog.csdn.net/e20914053/article/details/50170487 如今混合开发方兴未艾,有的项目可能一开始是原生开发的,后期需要加入混合开发,如将Cord ...

  8. 如何使用最简单的方法将一个已经存在的工程中使用 cocaPodfile

    在网上搜索的使用 cocaPods 安装一些优秀的框架,搜索的博客大多步骤都是非常的麻烦,这里的方法非常的简单,本篇仅仅作为以后备用.   第一步:首先找到我们的工程,在终端中输入 cd 拖入已经存在 ...

  9. QT总结第3篇:如何在QT中添加.lib,.dll还有.h文件

    因为我在工作的过程中,使用的是第三方提供的库,但是如何将这些库添加到QT的工程中,是个问题,让我恼火了很久,怎么弄都是错的. 下面,我会对这个问题,进行叙述,希望其他人第一次遇到这种问题的时候,可以轻 ...

随机推荐

  1. minio gataway 模式快速提供s3 兼容的文件服务

    实际很多场景我们已经有了遗留系统的文件存储方式(ftp,或者共享目录),但是这个方式可能不是很好,对于web 不是很友好 实际上minio 也提供了gateway 的模式,可以方便快速的将遗留系统的存 ...

  2. Sublime Text 3安装Package Control并安装Processing插件

    由于PDE编辑界面对中文的支撑太差,于是想换到ST3来编辑代码,结果导致了噩梦的开始. 首先,找不到“Package Control”!!! 这还怎么玩~ 于是打开http://packagecont ...

  3. Instance Segmentation with Mask R-CNN and TensorFlow

    Back in November, we open-sourced our implementation of Mask R-CNN, and since then it’s been forked ...

  4. CentOS里下载和离线安装rpm包

    离线下载rpm包    yum --downloadonly --downloaddir=/home/packages install mariadb-devel 安装离线rpm包    进入下载包的 ...

  5. Fluent使用UDF遇见Received signal SIGSEGV

    Fluent版本:19.0 究其原因,一般是因为我们编写的UDF当中指针错误,导致未能正确获取Fluent一些变量的值,从而造成该错误. 下面我们通过调试手段来为了重现该错误,直观查看错误原因. 我们 ...

  6. Spring Transaction 使用入门

    一.开篇陈述 1.1 写文缘由 最近在系统学习spring框架IoC.AOP.Transaction相关的知识点,准备写三篇随笔记录学习过程中的感悟.这是第一篇,记录spring Transactio ...

  7. 【转】Linux 系统如何处理名称解析

    原文写的很好:https://blog.arstercz.com/linux-%E7%B3%BB%E7%BB%9F%E5%A6%82%E4%BD%95%E5%A4%84%E7%90%86%E5%90% ...

  8. android gradle使用阿里源

    使用阿里源 新建一个init.gradle 文件到$USER_HOME/.gradle/目录下,这们就省的翻墙了. init.gradle 文件内容如下: allprojects { reposito ...

  9. JS实现统一社会信用代码的效验(组织机构代码效验)

    参考原文https://blog.csdn.net/hdhxby/article/details/56015370 部分错误,修改整合了下 想查询数据的,请点击:统一信用代码查询地址 查看效验规则点击 ...

  10. Jackson的基本用法与拓展

    目录 一.先搞两个测试需要使用的类 二.简单操作:obj与json互转 2.1.对象转json字符串 2.2.json字符串转对象 三.拓展需求 3.1.对象转json时,忽略某个字段 3.2.对象转 ...