MSP430应用技巧2:EABI接口的初始化

对于COFF ABI和EABI,我们应将注意力着眼于EABI上,因为它是我们今后项目开发首选的接口方式。本文就将对EABI接口的初始化方式进行深入介绍。 1、自动初始化 我们首先介绍一下自动初始化的概念,其英文原文如下:Any global variables declared as preinitialized must have initial values assigned to them before a C/C++ program starts running. The process of retrieving these variables’ data and initializing the variables with the data is called autoinitialization.(在C/C++程序运行之前,任何被声明为预初始化的全局变量都必须赋予初值。取出这些变量的数据并将这些数据赋予变量的进程,我们称其为自动初始化。) 在ANSI C中,,全局和静态变量如果没有明确赋予初值,则在程序运行之前都必须设置为0。C/C++的EABI编译器支持能够对这些未初始化的变量进行特定操作,我们可以通过–zero_init=off链接选项予以实现。这个特性是COFF ABI所不支持的。 2、EABI的直接初始化 考虑下面的例子,我们来看一下EABI的直接初始化。

编译器编译后,将如下安排这些数据。

定义为静态或全局变量的每个编译后的模块都将包含在.data段(section)中,链接器采用和其它初始化段一样的方法对.data段进行处理并建立一个输出段(output section)。对于加载期间初始化模式(load-time initialization model,就是我们通常所说的RAM运行模式),这些段将被直接加载到内存中,以备程序调用。对于运行期间初始化模式(初始化数据表从加载地址拷贝到运行地址。 3、EABI的运行期间初始化模式 运行期间初始化模式。

下图显示了

爱情不是避难所,想进去避难的话,是会被赶出来的。

MSP430应用技巧2:EABI接口的初始化

相关文章:

你感兴趣的文章:

标签云: