CCS build options中Run-Time Autoinitialization和Load-Time Initialization
来源:互联网 发布:解压缩 for mac中文版 编辑:程序博客网 时间:2024/06/08 07:56
在用纯汇编编制的dsp程序时需要做如图所示的调整,这是因为:
在CCS的build options中的linker选项卡中,Autoinit Model有两个选项:Run-Time Autoinitialization和Load-Time Initialization。
因为这两个选项和.cinit和.bss Section有关,所以先简单的介绍一下这两个section相关的知识。从C语言的角度来看的话,.bss section是用来存放C语言中的全局变量的。而.cinit则用来存放全局变量的初始值。例如如果有下面的全局变量buf的话,
那么buf放在.bss中,而初始值0x01, 0x02, 0x03, 0x04放在.cinit中。.cinit中储存的实际上是一个copy table,它对于每个需要初始化的全局变量,都有一个复制项与之对应,以55x系为例,上面的这段程序产生的复制项为:
00 04 00 12 34 00 00 01 00 02 00 03 00 04
----- ----------- ------------------------
1 2 3
- 复制的word数
- 复制的目标地址,也就是buf的地址(这里假设为0x1234)
- 要复制的数据,也就是初始化数据0x01, 0x02, 0x03, 0x04
那么对于这个.cinit中的copy table具体由谁来完成复制操作呢,这样就有了Load-Time和Run-Time的这两个选择。
先来看看Run-Time Autoinitialization。这段英文的的意思是“运行时初始化”,实际上就是在main函数之前被运行的c_int00中的一段代码完成这个复制工作。我们知道c_int00是用来初始化C语言程序运行所需要的环境的,这个初始化的一部分就是初始化全局变量的初始值。因此在c_int00中初始化全局变量是理所当然的。
然而这样做存在一个问题:.cinit中的copy table只在c_int00中用一次,如果把它放在DSP的on chip RAM中的话,实在是太浪费了。因此通常的做法是将.cinit放到flash内存中。假设系统没有flash内存,而是采用的serial boot之类的启动方式,由别的芯片通过McBSP将DSP的程序传输到DSP中的话,我们就不得不把.cinit放到RAM中了。如果初始化数据很多的话,显然是非常浪费内存的。为了解决这个问题,可以采用Load-Time Initialization。
所谓Load-Time Initialization,就是在将程序load进DSP内存的同时,初始化.bss中的全局变量。
- CCS build options中Run-Time Autoinitialization和Load-Time Initialization
- Run-time和Load-time初始化
- purify Build-time options
- QT: load .ui at run time
- run time
- run Time
- Compiler options to choose C Run-Time Libraries (CRT)
- Boot time kernel options
- Compile time& link time&run time
- 7.4. Boot-Time Initialization Routines
- nokia web run time
- Run Time Error 10853
- C Run-time library
- Run-Time Library
- Run-Time Library
- Run-time PM 详解
- run-time exception
- Run-time PM 详解
- 最近遇到一个问题,哪位高手能帮忙解答一下
- Sql Server XML 操作实例
- Flex4 css中skin设置报错解决
- 初期技术创业团队注意的问题!
- 新博
- CCS build options中Run-Time Autoinitialization和Load-Time Initialization
- SQL JOIN
- 【2011/3/2】(2) 算法加密技术中的公钥与私钥
- MPlayer MEncoder, ffmpeg 使用手册
- emulator.exe应用程序错误 解决方法
- U盘+Grub4Dos+系统ISO(引导大多数PE及几乎所有ISO,一次格式化,N次使用)一劳永逸兔年成功实例
- 邮件客户端Evolution-Gmail账户设置
- 转义字符 一定要加上/ , 否则编译会告警
- 在D盘生成Happy目录 再生成sad目录(改进)