工具/软件:TI C/C++编译器
您好,Champs:
加载时变量初始化(--ram_model)通过减少启动时间和保存初始化表使用的内存来提高性能。
如果我在加载时初始化变量似乎有好处,使用--ram_model进行变量初始化是否有缺点? 如有任何想法,请提供建议,谢谢。
此致,
卢克
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:TI C/C++编译器
您好,Champs:
加载时变量初始化(--ram_model)通过减少启动时间和保存初始化表使用的内存来提高性能。
如果我在加载时初始化变量似乎有好处,使用--ram_model进行变量初始化是否有缺点? 如有任何想法,请提供建议,谢谢。
此致,
卢克
使用--ram_model构建时,系统必须包含一个加载程序,该加载程序可以读取.out文件,查找初始化记录,处理这些记录,从而初始化相关变量。 自行引导的系统没有此类加载程序,因此必须使用--rom_model。
作为可以使用--ram_model...的系统示例 假设此系统具有ARM CPU和DSP CPU,并且Linux正在ARM上运行。 臂侧可以有一个加载程序,可以将.out文件加载到DSP上并开始运行。 在这种情况下,可以使用--ram_model构建DSP可执行文件。
谢谢,此致,
-George
您好,George,
我使用下面的简单代码来评估此案例,
#include <MSP4S.h>
无符号字符计数器;
/**
主要c
*/
Void主(void)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
计数器= 5;
P1DIR || BIT0;
P2DIR || BIT0;
//------------------
//禁用GPIO通电默认高阻抗模式以之前激活
//配置的端口设置
PM5CTL0 &=~LOCKLPM2;
同时(1)
{
IF (计数器= 5)
{
P2OUT &=~BIT0; //关闭绿色LED
P1OUT ^= BIT0; //切换红色LED
__DELAY周期(50万);
}
否则
{
P1OUT &=~BIT0; //关闭红色LED
P2OUT ^= BIT0; //切换绿色LED
__DELAY周期(50万);
}
}
}
当我同时使用--rom_model和--ram_model时,我得到下面两个使用的FRAM大小,当在独立的带有CCS的FR2311 LaunchPad上运行代码时,我得到相同的结果,红色LED被切换。
使用时--rom_model
名称使用的原点 长度 未使用 的属性 填充
----------------------------------
BSL0.001万 0000100.0008万 0000080万 0000000万 0000.08万 RWIX
RAM 0.002万00 000004000万00400 000000a14亿a1 0000035f10000035f RWIX
fram 0000f100 00000e80000000e80 0000028e00000028e 0万b08 RWIX
使用时--ram_model
名称使用的原点 长度 未使用 的属性 填充
----------------------------------
BSL0.001万 0000100.0008万 0000080万 0000000万 0000.08万 RWIX
RAM 0.002万00 000004000万00400 000000a14亿a1 0000035f10000035f RWIX
fram 0000f100 00000e80000000e80 000000868万00086 00000e000.0086万 00000e00 RWIX0万 RWIX
请发表任何评论?
此致,
卢克
Luke CHIN 说:在独立的带有CCS的FR2311 LaunchPad上运行代码时,我得到相同的结果,红色LED被切换。[/QUOT]
该句中的关键字是"与CCS一起"。 CCS有一个加载程序,可以查找并处理初始化记录,从而初始化全局变量。 您的最终应用程序不太可能有这样的加载程序。 如果是这种情况,则必须使用--rom_model。
谢谢,此致,
-George
您好,George,
抱歉输入错误。 我使用--ram_model和--rom_model运行示例代码,但不使用 CCS,结果相同,您可以看到我在main()函数中初始化全局变量。 如果您手头有任何MSP430 LaunchPad,相信您可以试用它。
当使用--rom_model时,运行时支持库将花费700字节以上的时间用于初始变量,即使我只是声明一个全局变量。 当客户使用2 KB 内存大小MSP430时,这是内存大小问题。 这就是我尝试--ram_model绕过库变量初始化过程并保存内存大小的原因。
我的问题是,当我使用--ram_model时,除了变量初始化之外,还有什么我们应该注意的?
此致,
卢克
我使用--ram_model和--rom_model运行我的示例代码而不使用 CCS,并且得到相同的结果,您可以看到我在main()函数中初始化全局变量。 如果您手头有任何MSP430 LaunchPad,相信您可以试用它。
我不知道在不使用CCS的MSP430 LaunchPad上运行代码的任何方法。 请向我指出详细说明如何完成这项工作的文件。
谢谢,此致,
-George
我要向你道歉。 我错过了您在6月26日发布的代码示例中的一个重要细节。 这里...
[引述用户="Luke Chen "]
无符号字符计数器;
/**
主要c
*/
Void主(void)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
计数器= 5;
[/引述]
变量计数器由函数main中的赋值语句初始化。 因此,计数器初始化为5,而不考虑使用--rom_model还是--ram_model。 如果你写过...
无符号字符计数器=5; //此处初始化计数器
/**
* main.c
*/
void main(void)
{
WDTCTL = WDTPW | WDTHOLD;//停止监视计时器
/*计数器=5;*/ //主中没有计数器初始化
...那么--ram_model或--rom_model的选择就像我描述的那样重要。
因此,在您演示的非常窄的情况下,您可以使用--ram_model或--rom_model,所有的操作都仍然有效。 在一般情况下,我假设只有在智能加载程序是整个系统的一部分时,才可以使用--ram_model。
谢谢,此致,
-George