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.

[参考译文] CCS/MSP430F5659:.map 文件显示闪存段 isn#39;t 填充了 SET_DATA_SECTION ()设置的数据集

Guru**** 2198520 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/602882/ccs-msp430f5659-map-file-shows-flash-section-isn-t-populated-with-data-set-by-set_data_section

器件型号:MSP430F5659

工具/软件:Code Composer Studio

我使用的是 CCS 版本为6.1.0.00104的编译器 TI v17.3.0。 优化已禁用

我使用#pragma SET_DATA_SECTION 将数据数组存储在我的 cmd 文件中定义的段中。 在检查.map 文件时、段存在、但其中没有存储数据。 我正在更新一个项目、其中这段代码运行了很长时间、下面是我更改的内容:

  1. 我最近刚从 TI v4.4.5更新了编译器、以获得对 time.h 的额外支持  
  2. 我重定位了用于设置数据段的头文件

以下是我的.cmd、.map 和.h 文件的代码段:

命令  

部分
{
.bss :{}> RAM | RAM2 /*全局和静态变量 *
.data :{}> RAM | RAM2 /*全局和静态变量 *
.TI.noinit:{}> RAM | RAM2 /*用于#pragma noinit *
sysmem :{}> RAM /*动态内存分配区域*/
堆栈 :{}> RAM (高) /*软件系统堆栈 *
fl_start:{}> FL_JMP
fl_main:{}> fL_main
fl_version:{}> FL_VER

.... 

地图

秘书长的报告
MSP430链接器 PC v17.3.0
秘书长的报告
>> 2017年6月14日10:38:15日链接的 Wed

输出文件名: 
入口点符号:"_c_int00_noargs_noexit"地址:0000c8d4


存储器配置

名称 原点长度 已使用 未使用的属性填充
--- ---- ------ ---- ---- --------
SFR 00000000 00000010 00000000 00000010 RWIX
外设_8位 00000010 000000f0 00000000 000000f0 RWIX
外设_16BIT 00000100 00000100 00000000 00000100 RWIX
INFOD 00001800 00000080 00000000 00000080 RWIX
INFOC 00001880 00000080 00000000 00000080 RWIX
INFOB 00001900 00000080 00000000 00000080 RWIX
INFOA 00001980 00000080 00000000 00000080 RWIX
USBRAM 00001c00 00000800 00000000 00000800 RWIX
RAM 00002400 00004000 00000da0 00003260 RWIX
FL_JMP 00008000 00000200 00000000 00000200 RWIX
FL_VER 00008200 00000200 00000000 00000200 RWIX
FL_MAIN 00008400 00004000 00000000 00004000 RWIX......

头文件

#pragma SET_DATA_SECTION (".fl_start")
const char FL1[]={0x32、0xC2、...};
#pragma SET_DATA_SECTION ()

#pragma SET_DATA_SECTION (".fl_version")
const char fl_ver[]={0x01、0x00、0x6、0x00、0xpragma
SECTION


(#pragma SET_SECTION)...}#pragma FAST_SECTION (#pragma #pragma fl_SET_SECTION (#pragma #pragma #.000")
#pragma SET_DATA_SECTION ()

如果你能指出正确的方向、我将不胜感激。

谢谢、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我想出了一个我认为可以强制包含数组的方法。 启动时、我读取数组 FL1[]、fl_ver[]和 FL2[]的第一个元素。

    这就引出了一个问题:为什么在禁用优化的情况下不使用这些数组时会忽略这些数组?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很高兴听到您可以为您的设置找到一个简单的 Hack、我不确定如果优化真正被禁用、为什么不会初始化数组。 这个问题很可能会直接出现在 TI C/C++编译器论坛上。

    此致、
    Ryan