您好!
我的客户在项目中使用 FR6972。 他们希望使用0x4400-0x5eff 作为 RAM、但失败了。 您能帮我检查他们修订的 XCL 吗? 是否有任何文档可以说明如何将 FRAM 操作到 RAM?
这是他们对 XCL 进行的修订。
/********
//
// MSP430FR6972的 XLink 配置文件
//
//版权所有1996-2015 IAR Systems AB。
//
//有关详细信息,请参阅文件430/doc/licenses/IARSourceLicense.txt
//许可证信息。
//
//$Revision:13028美元
//
/********
//----------------------------
//说明
//
//
//用法:
//
// xlink [文件...] f lnk430fr6972.xcl
//
//--------------------------------------------------------
//设备摘要
//
//
//内核:MSP430Xv2
//
//中断向量:56
//
//签名存储器:16字节
//
// JTAG 签名存储器:4字节
//
// BSL 签名存储器:4字节
//
// IPE 签名存储器:8字节
//
//外设单元:00100-00FFF
//
//信息存储器(FRAM):01800-019FF // 0.5K
//
//读/写存储器(RAM):01C00-023FF //2K
//
//读/写存储器(TINYRAM):00006-0001F
//
//持久存储器(FRAM):04400-0FFFF //47k
// 10000-13FFF //16k
//
//--------------------------------------------------------
//段
//
//--------------------------------------------------------
//数据读取/写入段
//
//
//以下两个段都可用
// DATA16和 DATA20段组。
//
//段使用
//---- ----------------
//数据 _Z 数据初始化为零
//数据 _I 通过从数据复制初始化数据 ID
//数据 使用__no_init 定义的_N 数据
//数据 _P 使用_persistent 定义的数据
//数据 堆'malloc'和'free'使用的堆
//
//段使用
//---- ----------------
// CSTACK 运行时堆栈
//针对主线程的 TLS16_I 线程本地存储
//
//--------------------------------------------------------
//编程和数据只读段
//
//
//以下两个段都可用
// DATA16和 DATA20段组。
//
//段使用
//---- ----------------
//数据 _C 常量数据、包括字符串字面量
//数据 _ID 数据初始化程序 _I
//
//段使用
//---- ----------------
//信息内存
// INFOA 信息内存,组 A
// INFOB 信息内存,组 B
// INFOC 信息内存,组 C
// INFOD 信息内存,组 D
// CSTART 程序启动代码
//编写程序代码
//中断服务例程的 ISR_code 程序代码
// C++使用的 DIFUNCT 动态初始化矢量
//由-J 选项生成的校验和字节
//签名签名存储器
// JTAGSIGNATURE JTAG 签名存储器
// BSLSIGNATURE BSL 签名存储器
// IPESIGNATURE IPE 签名存储器
// intvec 中断向量
//复位复位向量
//主线程的 TLS16_ID 线程本地初始化程序
// MPU_B 存储器保护单元边界
// IPE_B 知识产权封装边界
// IPECODE16 IPE 代码
// IPEDATA16_C IPE 常量数据
//
//注意:
//
//*段 CSTART、ISR_code 和 DIFUNCT 以及中的段
//必须将 DATA16和 TLS16段组放置在范围内
// 0000-FFFD。
//
//* INFox 和 INFO 段重叠,这允许数据为
//放置在特定的存储库中或信息存储器中的任何位置。
//
//* INTVEC 和复位段重叠。 这允许应用程序执行
//使用运行时库提供的复位矢量,或
//通过定义相关的中断函数来提供复位函数
//与复位矢量。
//
//*要使用内存保护单元,符号?mpu2_init 应为
//包括在应用程序中。 符号'_IAR_430_MPU_base'应为
//定义到 MPU 外设寄存器的位置、和
//将寄存器'_IAR_430_MPUSAM_Value'和'_IAR_430_MPUCTL0_Value'添加到
//应将寄存器 MPUSAM 和 MPUCTL0的值初始化为、
//。
//
//*要包括知识产权封装(IPE)库
//应用中必须包含标签'_IAR_430_IPE_signature'。
//(一种方法是使用-g XLink 命令行选项。) 。
//符号'_IAR_430_MPUIPC0_Value'必须定义为值
// MPUIPC0寄存器应初始化为。
//
//*在知识产权封装中包含自定义句段
//(IPE)区域、将它们放置在 IPE_B1和 IPE_B2段之间。
//
//----------------------------
//配置
//
//--------------------------------------------------------
//堆栈和堆大小
//
//取消注释以供命令行使用
//-D_STACK_SIZE=160
//-D_DATA16_Hap_size=160
//-D_DATA20_Hap_size=160
//-g?mpu2_init
//-g_IAR_430_IPE_signature
//--------------------------------------------------------
//定义 CPU
//
cmsp430
//--------------------------------------------------------
//支持将函数放置在读取/写入存储器中
//
-qcode_i=code_ID
//--------------------------------------------------------
//支持线程本地存储
//
-QTLS16_I=TLS16_ID
//--------------------------------------------------------
//硬件乘法器位置
//
-D__IAR_HWMUL=4C0
//----------------------------
//放置指令
//
//--------------------------------------------------------
//信息内存
//
-Z (const) info=1800-19FF
-Z (const) INFOA = 1980 - 19FF
-Z (const) INFOB =1900-197F
-Z (const) infoc=1880-18FF
-Z (const) INFOD = 1800-187F
//--------------------------------------------------------
// RAM 内存
//
-Z (DATA) TINYRAM=0006-001F
-Z (data) DATA16_I、DATA16_Z、DATA16_N、TLS16_I=1C00-23FF、4400-5EFF //加2816字节的RAM
-Z (data) code_i
-Z (data) DATA20_I、DATA20_Z、DATA20_N
-Z (data) CSTACK+_STACK_SIZE#
//--------------------------------------------------------
// FRAM 存储器
//
//--------------------------------------------------------
//低内存0-0FFFF
//
//--------------------
//在 FRAM 中读取/写入数据
//
-Z (const) DATA16_P、DATA20_P=8000-FF7F //改wfjP =7000-FF7F
-Z (data) DATA16_heap+_DATA16_heap_size
-Z (data) DATA20_heap+_DATA20_heap_size
//--------------------
//内存保护单元(MPU)边界
//
-Z (const) MPU_B1
//--------------------
//知识产权封装(IPE)
//
-Z (const) IPE_B1=8000-FF7F //改//改wfjP =7000-FF7F
-Z (data) IPEDATA16_N
-Z (代码) IPECODE16
-Z (const) IPEDATA16_C、IPE_B2
//--------------------
//内存保护单元(MPU)边界
//
-Z (const) MPU_B2
//--------------------
//常量数据
//
-Z (const) DATA16_C、DATA16_ID、TLS16_ID、DIFUNCT、校验和= 8000 - FF7F /改 μ C//改wfjP μ=7000 - FF7F
//--------------------
//代码
//
-Z (code) CSTRT、ISR_code、CODE16=8000-FF7F //改 μ s/改wfjP μ=7000-FF7F
//--------------------------------------------------------
//所有内存0-FFFFF
//
//--------------------
//代码
//
P (改) code=8000-FF7F、10000-13FFF //改wfjP μ//μ s=7000-FF7F
-Z (code) code_pad
//--------------------
//常量数据
//
-Z (const) DATA20_C、DATA20_ID、CODE_ID = 8000-FF7F、10040-13FFF /改 μ C//改wfjP μ=7000-FF7F
//--------------------------------------------------------
//签名存储器和中断矢量
//
-Z (const) signature=FF80-FF8F
-Z (const) JTAGSIGNATURE=FF80-FF83
-Z (const) BSLSIGNATURE=FF84-FF87
-Z (const) IPESIGNATURE=FF88-FF8F
-Z (代码) intvec=FF90-FFFF
-Z (代码) reset=FFFE-FFFF