首页
登录 | 注册

TI DSP第三篇--各种段的定义

在cmd文件中能看到各种段.text .cinit .const等,这和通常系统中仅有TEXT, DATA, BSS( 或者arm系统的code,data,zi段 ),heap, stack有很大的区别:

TI段的定义:

已初始化的段:.text  .cinit  .const  .econst  ..pinit  .switch

.text:  所有可以执行的代码和常量

.cinit: 全局变量和静态变量的C初始化记录

.const: 包含字符串常量和初始化的全局变量和静态变量(由const)的初始化和说明

.econst: 包含字符串常量和初始化的全局变量和静态变量(far const)的初始化和说明

.pinit:  全局构造器(C++)程序列表

.switch:  包含switch 声明的列表

 

未初始化的段:.bss  .ebss  .stack  .sysmem  .esysmen(另一种理解:这些段就认为存储空间而已)

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

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

.stack:  为系统堆栈保留的空间,主要用于和函数传递变量或为巨变变量分配空间

.sysmem:  为动态存储分配保留的空间,如果有宏函数,此空间被空函数占用,如果没有的话,此空间保留为0

.esysmen:  为动态存储分配保留的空间,如果有far函数,此空间被相应的占用,如果没有的话,此空间保留为0。


可以看到已初始化段相当于通常系统的TEXT, DATA, BSS, 只不过ti将有些段进行了进一步的深化。而未初始化段中,堆对应的是sysmem(esysmem), 栈对应stack。 bss和ebss在任何系统中都是必须的,但是可能其它系统把这些细节掩盖了,比如arm直接让__main操作了。TI也有相应的系统函数完成上述的数据复制搬运工作(主要是一些有初始化值的常量,存储的时候需要将这些值保存在flash中,运行的时候需要在ram中),这个函数就是cint00函数。

如果一个系统既想要支持24X汇编,要想要支持28X汇编,要想使用c函数(哪个项目这么变态,不好意思我的一个项目就是这样),那么需要打开ti的-m20 (compilerruntime model options)来支持,但是一旦打开这个选项,cint00就无法正常调用,也就是这这种混合代码中,你的全局变量不能在函数体外给它赋值,没有cini00它将无法实现拷贝工作,解决方法是,要么自己手写一个cinit00函数,要么你的全局变量在函数的初始化中赋值。


相关文章

  • 第三章:深入文本(3)
    颜色结构 在内部,Color结构以两种不同的方式存储颜色:  作为类型为double的红色,绿色和蓝色(RGB)值,范围从0到1.名为R,G和B的只读属性公开这些值. 作为类型为double的色调,饱和度和亮度值,其范围也是从0到1.这些值 ...
  • 一.Keepalived的安装过程 Keepalived的安装非常简单,下面通过源码编译的方式介绍下Keepalived的安装过程.首先打开Keepalived的官方网址http://www.keepalived.org,从中可以下载到各种 ...
  • kmemleak的工作原理很简单,主要是对kmalloc().vmalloc().kmem_cache_alloc()等接口分配的内存地址空间进行跟踪,通过对其地址.空间大小.分配调用栈等信息添加到PRIO搜索树中进行管理.当有匹配的内存释 ...
  • 本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载.但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途. 作者:gfree.wind@gmail.com 博客:linux ...
  • 顾名思义,零长度数组就是长度为0的数组. int a[10]; int len; int a[len]; 在这个程序中,我们定义一个变量 len,作为数组的长度.程序运行后,我们可以通过输入指定数组的长度并初始化,最后再将数组的元素打印出来 ...
  • springBoot注解大全
    一.注解(annotations)列表  @SpringBootApplication:包含了@ComponentScan.@Configuration和@EnableAutoConfiguration注解.其中@ComponentScan ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号