1.CMD文件的作用

CMD文件的作用就像仓库的货物摆放记录一样,为程序代码数据分配指定的空间。

2.C语言生成的段

C语言生成的段大致分为两大类:初始化和未初始化,已初始化的段含有真正的指令和数据,未初始化段只是保留变量的地址空间。

已初始化段:

.text——C语言编译生成的汇编指令代码存放于此

.cinit——存放初始化的全局和静态变量

.const——字符串常量和const定义的全局和静态变量

.econst——字符串常量和far const定义的全局和静态变量

.print——全局构造器(C++)程序列表

.switch——存放switch语句产生的常数表格

以.const段为例:

const int a = 10;  //注意必须是全局的 如果声明为局部const初始化变量,不会放在.const段,局部变量都是运行时放在.bss段中
char * p = "ABC";
数组和结构体的初始值——是局部变量时,产生的是.const,如果是全局变量,产生的是.cinit

未初始化段:

.bss——为全局变量和局部变量保留的空间,程序上电时,.cinit空间中的数据复制出来并存放在.bss空间中

.ebss——为使用大寄存器模式时预留的全局和局部变量空间,程序上电时,.cinit空间中的数据复制出来并存放在.bss空间中

.stack——堆栈空间,主要用于函数传递变量或为局部变量分配空间

.system——为动态存储分配保留的空间(malloc),如果有宏函数,此空间被占用

.esystem——为动态存储分配保留的空间(far malloc),如果有far函数,此空间会被占用

3.自定义段

上面的都是官方预先定义好的,我们可以定义自己的段么?可以,使用如下语句:

#pragma CODE_SECTION(symbol, "section name");
#pragma DATA_SECTION(symbol, "section name");

symbol——符号,可以是函数名/变量名

section name——自定义的段名

CODE_SECTION用来定义代码段

DATA_SECTION用来定义数据段

注意

不能再函数体内声明#pragma;

必须在符号被定义和使用之前声明#pragma

例子:

#pragma DATA_SECTION(data, "data_name");
char data[100];

4.CMD文件

在DSP28335工程文件里(不用BIOS产生CMD文件),手写CMD文件一般有两个,RAM里调试时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和28335_RAM_lnk.cmd,烧写到flash里时用的两个CMD文件分别为DSP2833x_Headers_nonBIOS.cmd和F28335.cmd,其中DSP2833x_Headers_nonBIOS.cmd文件可以在所有工程文件中通用,主要作用是把外设寄存器产生的数据段映射到对应的存储空间,可以跟DSP2833x_GlobalVariableDefs.c文件对照一下看看。

下面是官方F28335.cmd;

编写用于flash烧写的F28335.cmd文件时相对来说较复杂些,根据不同的情况需要做一些修改。

1 不需要把部分代码copy到RAM里,一般情况不需要外扩RAM等时直接用TI的F28335.cmd即可。

2 需要把部分代码从flash 复制到RAM里,如延时函数DSP2833x_usDelay.asm等,这时CMD文件需要做相应的修改。

3 从时间开销方面考虑,需要把整个程序从flash复制到RAM里,这时程序及CMD文件都要做相应的修改。

F28335之cmd文件详解相关推荐

  1. CMD文件详解与DSP存储空间

    CMD文件详解与DSP存储空间 CMD的全称为链接命令配置文件.以ROM/FLASH和RAM两类存储器为对象,用户通过编写CMD文件,来管理和分配系统中的所有物理存储器和地址空间.DSP芯片的片内存储 ...

  2. TMS320F28335项目开发记录6_28335之cmd文件详解

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/scottly1/article/de ...

  3. [CMD] DSP CMD文件详解

    目录 1. CMD文件是什么? 2. CMD文件的功能 3. CMD文件的使用方法 MEMORY伪指令--指示存储空间 SECTIONS伪指令--分配段到存储空间 4. 注意事项 1. CMD文件是什 ...

  4. android route命令详解,route cmd命令详解

    在本地 IP 路由表中显示和修改条目.使用不带参数的 route 可以显示帮助.接下来是小编为大家收集的route cmd命令详解,希望能帮到大家. route cmd命令详解 语法 route [- ...

  5. 附005.Docker Compose文件详解

    一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...

  6. 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解

    学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...

  7. docker entrypoint入口文件详解

    docker entrypoint入口文件详解 pasting Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较 [k8s]args指令案例-彻底理解docke ...

  8. vue-cli生成的模板各个文件详解(转)

    vue-cli脚手架中webpack配置基础文件详解 一.前言 原文:https://segmentfault.com/a/1190000014804826 vue-cli是构建vue单页应用的脚手架 ...

  9. 红帽linux 系统日志,RedHat系统常见的日志文件详解一

    RedHat系统常见的日志文件详解一 /var/log/boot.log 该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息.% @7 h7 s, Y5 z! V' h- ...

最新文章

  1. treeview控件怎么使用修改发育树_树形控件在生产力工具中的设计
  2. filco蓝牙不好用_800元和300元的机械键盘差多少,Filco圣手104晒单
  3. wxWidgets:wxColourPickerCtrl类用法
  4. 【Linux】一步一步学Linux——mii-tool命令(154)
  5. __attribute__机制介绍
  6. 【牛客 - 157F】三轮(dp,分治fft)
  7. SQL Server 2005远程连接连不上的解决办法收藏 Microsoft给的方法
  8. KubeVela v1.3 多集群初体验,轻松管理应用分发和差异化配置
  9. python-字符串的切片操作
  10. Java 蓝桥杯 装箱问题
  11. python中数据类型转换_Python(二).数据类型,数据类型转换
  12. Python使用socket读取网页源代码实现简单爬虫程序
  13. beautifulsoup解析动态页面div未展开_Python爬虫 | 0xb 数据解析:PyQuery库
  14. webService调用模式比较
  15. 设计模式 ( 二 ) 简单工厂模式
  16. 数学规划模型(五):多目标规划模型
  17. 文本相似度计算-度量方法
  18. 单位个人计算机 数据备份,个人所得税软件数据备份,您必须知道的5件事
  19. Redhat8 配置使用阿里源(关闭官方订阅)
  20. Flex使用ribbit.com的服务给手机发送短信SMS

热门文章

  1. 高效| 工厂如何做好设备管理工作?看这篇就够了!
  2. 谱聚类Python代码详解
  3. Microsoft Word中自动编号有参考文献识别不到的问题
  4. Kanzi学习教程培训教程-Kanzi的简介和安装
  5. 【c++】游戏组件2 移动的小球
  6. PBR中BRDF的实现
  7. 超声波传感器(单介绍超声波)
  8. 学习web前端开发需要掌握哪些技能?
  9. 使用weinre调试移动端真机
  10. 智慧工厂:EasyNVR如何让工厂实现现代化与智能化视频监控与管理?