DSP28335—CMD文件中的各个段解释
来源:互联网 发布:威尔法瑞尔知乎 编辑:程序博客网 时间:2024/06/06 12:22
CMD文件里有两个基本的段:初始化段和非初始化段。初始化段包含代码和常数等必须在DSP上电之后有效的数。故初始化块必须保存在如片内FLASH等非易失性存储器中,非初始化段中含有在程序运行过程中才像变量内写数据进去,所以非初始化段必须链接到易失性存储器中如RAM。
已初始化的段:.text,.cinit,.const,.econst,.pinit和.switch..
.text:所有可以执行的代码和常量
.cinit:全局变量和静态变量的C初始化记录,包含未用const声明的外部(extern)或静态(static)数据表
.const:包含字符串常量和初始化的全局变量和静态变量(由const)的初始化和说明
.econst:包含字符串常量和初始化的全局变量和静态变量(由far const)的初始化和说明,与.const不同的是.const分配范围被限制在低64K 16位数据区,而.econst的分配范围是4M 22位数据区
.pinit:全局构造器(C++)程序列表
.switch:包含switch声明的列表
非初始化的段:.bss,.ebss,.stack,.sysmem,和esysmem.(更好的理解就是,这些段就是存储空间而已)
.bss: 为全局变量和局部变量保留的空间,在程序上电时.cinit空间中的数据复制出来并存储在.bss空间中。
.ebss:为使用大寄存器模式时的全局变量和静态变量预留的空间,在程序上电时,cinit空间中的数据复制出来并存储在.ebss中,与.bss不同的是.bss分配范围被限制在低64K 16位数据区,而.ebss的分配范围是4M 22位数据区
.stack:为系统堆栈保留的空间,用于和函数传递变量或为局部变量分配空间。
.sysmem:为动态存储分配保留的空间。如果有宏函数,此空间被宏函数占用,如果没有的话,此空间保留为0
.esysmem:为动态存储分配保留的空间。如果有far函数,此空间被相应的占用,如果没有的化,此空间保留为0.
编译器生成的包含代码和数据的多个部分,称为段。这下段被分为两个不同的组:初始化了的和没被初始化的,初始化的部分是由所有的代码,常量和初始化表组成的。下表列出了由编译器产生的初始化段。
.const显式初始化的全局和静态的const变量和字符串常量不超过64K长度.econst长调用的常量数据中的任何地方.pinit全局对象的构造函数表
代码.switchswitch语句产生的表代码或者数据.text可执行代码和常数代码
没初始化的段是由未初始化的变量,堆栈和malloc产生的内存。下表列出了由编译器产生的没初始化段。
一旦编译器生成的这些段,连接器会从各个源文件中取出这些段,并结合它们来创建一个输出文件。连接器命令文件(.cmd)就是用来告诉连接器去哪里找这些段的。初始化段必须分配到非易失性存储器,如flash/ ROM,当电源被撤除时,程序不会消失。未初始化的段可以被分配到RAM中,因为它们是在代码执行期间被初始化的。
当需要把程序从flash复制到RAM里时,各个段分配参考如下:
.cinit
Flash
.cio
RAM
.const
Flash
.econst
Flash
.pinit
Flash
.switch
Flash
.text
Flash
.bss
RAM
.ebss
RAM
.stack
Lower
.sysmem
RAM
.esysmem
RAM
.reset
RAM1
转载原址:http://blog.sina.com.cn/s/blog_762cf5f80101aoob.html
- DSP28335—CMD文件中的各个段解释
- DSP28335—CMD文件中的各个段解释
- DSP28335—CMD文件解读(2)
- DSP28335工程文件 .cmd 作用
- lucene索引结构(对lucene索引段中的各个类型的文件有所解释)
- DSP28335—CMD解读(1)
- 关于Hibernate开发框架中的各个包文件解释
- DSP28335代码段(.text段)太长,导致无法对程序在片上SARAM中在线仿真的解决办法 ——在.cmd中修改.text段的分配语句
- C 语言中的各个段
- C语言中的各个段
- CMD文件及段的总结
- DSP28335—把TMS320F28XXX的程序段从flash复制到ram中运行
- DSP28335—把TMS320F28XXX的程序段从flash复制到ram中运行
- 在线MSDN中的各个C#关键字解释
- DSP28335— DELAY_US总结
- FFT在DSP28335中的使用
- c 程序中的各个段在内存中的位置解析
- MFC文件打开,小程序段解释
- ssh三大框架整合(2)
- 栈操作和应用—括号匹配
- angularjs 表单验证 文本框失焦点验证
- luogu解题报告:P3391文艺平衡树
- e恩win
- DSP28335—CMD文件中的各个段解释
- 项目实战:QuickHit
- strlen函数的实现
- 【SSLGZ 1613】最短路径问题
- 设计模式C++实现(2)——策略模式
- centos6.x升级g++.v6.1.0版本
- laravel CURD 搜索字体变红 ,即点即改
- MyEclipse10导入工程的时候,jsp报错问题
- 集合的遍历