F28335之cmd文件详解
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文件详解相关推荐
- CMD文件详解与DSP存储空间
CMD文件详解与DSP存储空间 CMD的全称为链接命令配置文件.以ROM/FLASH和RAM两类存储器为对象,用户通过编写CMD文件,来管理和分配系统中的所有物理存储器和地址空间.DSP芯片的片内存储 ...
- TMS320F28335项目开发记录6_28335之cmd文件详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接: https://blog.csdn.net/scottly1/article/de ...
- [CMD] DSP CMD文件详解
目录 1. CMD文件是什么? 2. CMD文件的功能 3. CMD文件的使用方法 MEMORY伪指令--指示存储空间 SECTIONS伪指令--分配段到存储空间 4. 注意事项 1. CMD文件是什 ...
- android route命令详解,route cmd命令详解
在本地 IP 路由表中显示和修改条目.使用不带参数的 route 可以显示帮助.接下来是小编为大家收集的route cmd命令详解,希望能帮到大家. route cmd命令详解 语法 route [- ...
- 附005.Docker Compose文件详解
一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...
- 生成jni的android.mk,Android Studio 3.5版本JNI生成SO文件详解
学习在于记录,把自己不懂得容易忘记得记录下,才是最好得选择. 废话不多说,想要在Android开发中嵌入c/c++代码,直接开始如下步骤 1.创建需要调用的Java类 在你某个指定的包下创建如下类pa ...
- docker entrypoint入口文件详解
docker entrypoint入口文件详解 pasting Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较 [k8s]args指令案例-彻底理解docke ...
- vue-cli生成的模板各个文件详解(转)
vue-cli脚手架中webpack配置基础文件详解 一.前言 原文:https://segmentfault.com/a/1190000014804826 vue-cli是构建vue单页应用的脚手架 ...
- 红帽linux 系统日志,RedHat系统常见的日志文件详解一
RedHat系统常见的日志文件详解一 /var/log/boot.log 该文件记录了系统在引导过程中发生的事件,就是Linux系统开机自检过程显示的信息.% @7 h7 s, Y5 z! V' h- ...
最新文章
- treeview控件怎么使用修改发育树_树形控件在生产力工具中的设计
- filco蓝牙不好用_800元和300元的机械键盘差多少,Filco圣手104晒单
- wxWidgets:wxColourPickerCtrl类用法
- 【Linux】一步一步学Linux——mii-tool命令(154)
- __attribute__机制介绍
- 【牛客 - 157F】三轮(dp,分治fft)
- SQL Server 2005远程连接连不上的解决办法收藏 Microsoft给的方法
- KubeVela v1.3 多集群初体验,轻松管理应用分发和差异化配置
- python-字符串的切片操作
- Java 蓝桥杯 装箱问题
- python中数据类型转换_Python(二).数据类型,数据类型转换
- Python使用socket读取网页源代码实现简单爬虫程序
- beautifulsoup解析动态页面div未展开_Python爬虫 | 0xb 数据解析:PyQuery库
- webService调用模式比较
- 设计模式 ( 二 ) 简单工厂模式
- 数学规划模型(五):多目标规划模型
- 文本相似度计算-度量方法
- 单位个人计算机 数据备份,个人所得税软件数据备份,您必须知道的5件事
- Redhat8 配置使用阿里源(关闭官方订阅)
- Flex使用ribbit.com的服务给手机发送短信SMS