工具/软件:TI C/C++编译器
e2e.ti.com/.../4137.section_5F00_test-base.zip
首先、我将向您介绍这里的环境
Code Composer Studio 版本:6.1.0.00104
编译器版本:TI v6.2.8 (和 v6.4.8)
测试目标:F2837x controlCARD R1.3
我使用 Debug Build Configuration (Not Release)进行了一些实验。
我附加了一组基本工程文件。
[实验1]简单的 main.c
从基本工程中注释掉下面的 SET_DATA_SECTION。
===
//#pragma SET_DATA_SECTION ("my_section")
const int sone_const = 10;
//#pragma SET_DATA_SECTION ()
===
构建后、我检查了映射文件。
"some _const"符号映射到 ROM 中。
===
0 000901c0 _some _const
===
如果通过 CCS Debug 运行、LED 将正常工作。
如果是独立启动、则 LED 工作正常。
[实验2]使用 DATA_SECTION
按原样使用基本工程。
构建后、我检查了映射文件。
"some _const"符号映射到 RAM 中。
===
1 0000b800 _so_const
===
如果通过 CCS Debug 运行、LED 将正常工作。
如果是独立启动、则 LED 不工作、因为 some _const 可能为0。
[实验3]使用 DATA_SECTION (排列)
从基本工程中添加新变量定义。
===
#pragma SET_DATA_SECTION ("my_section")
int some 变量;
const int sone_const = 10;
#pragma SET_DATA_SECTION ()
===
构建后、我检查了映射文件。
"some _const"符号映射到 ROM 中。
===
0 000901c0 _some _const
1 0000b800 _some 变量
=
如果通过 CCS Debug 运行、LED 将正常工作。
如果是独立启动、则 LED 工作正常。
[问题1]
spru514p 6.12.2中有以下一句话。
"您可以使用 DATA_SECTION pragma 将变量放置在.econst 以外的段中。"
因此、[实验2]似乎是正确的。
为了在此映射中独立使用、需要在启动时创建并加载具有初始值的 ROM 数据。
我该怎么做?
[问题2]
我预期[实验2]和[实验3]是相同的。
为什么不呢?