工具/软件:Code Composer Studio
CCS版本:7.0 Win10上运行的Win.0.0.0043万
我在链接程序命令文件中创建了一个数据段,如下所示:
PARAM_DATA10 :原点= 0x26E00,长度= 0x0200
链接程序cmd文件的sections部分:
章节
{
.bss :{}> RAM/* 全局和静态vars */
数据 :{}> RAM/* 全局和静态vars */
.TI.noinit :{}> RAM /*用于#pragma noinit */
sysmem :{}> RAM/* 动态内存分配区域 */
堆栈 :{}> RAM (高) /*软件系统堆栈 */
#ifndef __larate_data_model__
text :{}> flash /* Code */
#否则
.text :{}>> FLASH2 | FLASH /* Code */
#endif
text:_isr :{}> FLASH /* ISR代码空间 */
.cinit :{}> flash /* Initialization Tables */
#ifndef __larate_data_model__
const :{}> flash /*常量数据 */
#否则
const :{}>> FLASH2 /*常量数据 */
#endif
CIO :{}> RAM/* C I/O Buffer */
.Pinit :{}> flash /* C++构造函数表 */
binit :{}> flash /* boot-time Initialization tables */
init_array :{}> flash /* C++构造函数表 */
.mspabi.exidx :{}> flash /* C++构造函数表 */
.mspabi.extab :{}> flash /* C++构造函数表 */
#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>= 1500.9万
#ifndef __larate_data_model__
.TI.ramfunc :{} load=flash, run=ram, table(BINIT)
#否则
.TI.ramfunc:{} load=flash | FLASH2,run=RAM,table (BINIT)
#endif
#endif
#endif
infoA :{}> INFOA /* MSP430信息闪存段*/
信息B :{}> INFOB.
INFoC :{}> INFOC.
信息D :{}> INFOD.
.param_data1 :{}> Param_Data1.
.param_data2:{}> Param_DATA2.
.param_data3:{}> Param_DATA3.
.param_data4:{}> Param_DATA4.
.param_data5:{}> Param_Data5.
.param_data6:{}> Param_DATA6.
.param_data7:{}> Param_DATA7
.param_data8:{}> Param_DATA8.
.param_data9:{}> Param_DATA9
.param_data10:{}> Param_DATA10.
param_data11:{}> Param_DATA11.
.param_data12:{}> Param_DATA12.
.param_data13:{}> Param_DATA13.
.param_data14:{}> Param_DATA14.
.param_data15:{}> Param_DATA15.
.param_data16:{}> Param_DATA16.
.param_data20:{}> Param_DATA20.
.param_data21:{}> Param_DATA21.
用于访问数据部分的变量声明为:
#pragma data_section(VarName,".param_data10")
T_typename VarName;
当我尝试将元素(char)从结构传递到IO端口(使用全部8位)时,编译器会发出警告
说明 资源 路径 位置 类型
<ahref="processors.wiki.ti.com/.../1.7003万"> 从函数"FunctionName"重定位到符号"VarName"溢出;重定位的18位地址0x26e00太大,无法在16位字段中进行编码(类型='R_MSP430X_ABS16'(15),文件="./main.obj",偏移= 0x0.0003万e,部分=".text:FunctionName"+ FileName.h ProjectC++ Probean")
(是的,我更改了一些名称以保护无辜者)
我还尝试使用本地temp变量从结构中接收值,然后将其放到IO端口,但错误移动到带有temp变量的行中。
我已在项目中指定使用大型代码和大型数据模型。 与此警告一起的是警告:
说明 资源 路径 位置 类型
#1.0015万-D输出文件“ProjectName.out”不能在目标系统 ProjectName上加载和运行 C/C++问题
对我来说,这不仅仅是一个警告!
从IAR编译并运行良好的代码
有什么想法?
