F28335之cmd文件详解
来源:互联网 发布:找车位的软件 编辑:程序博客网 时间:2024/06/09 21:05
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文件详解
- F28335.cmd
- DSP CMD文件详解
- DSP入门之--CMD文件配置详解
- DSP入门之--CMD文件配置详解
- TMS320F28335项目开发记录6_28335之cmd文件详解
- TMS320F28335项目开发记录6_28335之cmd文件详解
- dsp的CMD文件详解
- DSP CMD文件配置详解
- cmd 运行php文件详解
- CCS中CMD文件详解
- TMS320F2812的CMD文件配置详解
- TMS320F2812的CMD文件配置详解
- TMS320F2812的CMD文件配置详解
- TMS320F2812的CMD文件配置详解
- CMD命令之BAT脚本语法详解
- oracle之cmd导入dmp文件
- 小技巧-cmd常用命令之创建文件
- 修改OS X终端中的bogon主机名
- HDU 1236 排名 Java实现
- 利用数字示波器调试嵌入式I2C总线的方法
- java中用到的基本排序
- Linux的IPC命令
- F28335之cmd文件详解
- java实现冒泡排序
- 笔试——题库汇总(阿里)
- win7以上系统,web项目安装未完成
- 虚函数探讨
- ZOOKEEPER原理
- 对话框程序SW_HIDE 和 SW_MINIMIZE 区别
- 软件测试—小白第二天
- Android LayoutInflater详解 与 findViewById() 的区别