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.
您好!
我只想知道 IAR 编译器中用于保护 FRAM 存储器的默认 MPU 分段。
它是否从链接器文件获取输入? 我已经检查了是否可以在链接器文件中定义 MPU_B1和 MPU_B2边界、但我无法完全理解。
供参考我不会更改 IAR 中常规选项下的存储器保护单元(MPU)选项。
在这里添加我正在处理的链接器文件、
/
//----------------------------
//配置
//
//--------------------------------------------------------
//堆栈和堆大小
//
//取消注释以供命令行使用
//-D_STACK_SIZE=160
//-D_DATA16_Hap_size=160
//-D_DATA20_Hap_size=160
//-g?mpu2_init
//-g_IAR_430_IPE_signature
//定义应用程序区域
//-D_Appl_Start=0x5000
//-D_Appl_End=0xFF7F
//-D_FLEX 启动= 0x10000
//-D_FLEX 末端= 0x43FFF
//-D_BSTRP_Start=0x4000
//-D_BSTRP_END=0x4FFF
//--------------------------------------------------------
//定义 CPU
//
cmsp430
//--------------------------------------------------------
//支持将函数放置在读取/写入存储器中
//
-qcode_i=code_ID
//--------------------------------------------------------
//支持线程本地存储
//
-QTLS16_I=TLS16_ID
//--------------------------------------------------------
//硬件乘法器位置
//
-D__IAR_HWMUL=4C0
//----------------------------
//放置指令
//
//--------------------------------------------------------
// RAM 内存
//
-Z (DATA) TINYRAM=000A-001F
-Z (DATA) LEARAM=2C00-3AC7
-Z (数据) LEASTACK=3AC8-3BFF
-Z (data) DATA16_I、DATA16_Z、DATA16_N、TLS16_I=1C00-2BFF
-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=4000-4FFF
-Z (data) DATA16_heap+_DATA16_heap_size
-Z (data) DATA20_heap+_DATA20_heap_size
//--------------------
//内存保护单元(MPU)边界
//
-Z (const) MPU_B1
//--------------------
//常量数据
//
-Z (const) DATA16_C、DATA16_ID、TLS16_ID、DIFUNCT、校验和=4000-4FFF
//--------------------
//内存保护单元(MPU)边界
//
-Z (const) MPU_B2
//--------------------
//知识产权封装(IPE)
//
-Z (const) IPE_B1=4000-4FFF
-Z (data) IPEDATA16_N
-Z (代码) IPECODE16
-Z (const) IPEDATA16_C、IPE_B2
//--------------------
//代码
//
-Z (代码) CSTART、ISR_code、CODE16=4000-4FFF
//--------------------------------------------------------
//所有内存0-FFFFF
//
//--------------------
//代码
//
-P (code) code=4000-4FFF
-Z (code) code_pad
//--------------------
//常量数据
//
-Z (const) DATA20_C、DATA20_ID、CODE_ID = 4000-4FFF
//-Z (const) version=43FF0-43FF7
//-Z (const) LIB_version=43FF8-43FFF
//--------------------------------------------------------
//签名存储器和中断矢量
//
//-Z (const) JTAGSIGNATURE=FF80-FF83
//-Z (const) BSLSIGNATURE=FF84-FF87
//-Z (const) IPESIGNATURE=FF88-FF8F
-Z (代码) intvec=FF90-FFFF
-Z (代码) reset=FFFE-FFFF
/
对于上述链接器文件、如何定义3个段?
此致
Piyush
您好、Piyush、在 IAR 上的 MPU 设置中、请参阅 MSP430 FRAM 技术–操作方法和最佳实践(修订版 A)。
谢谢!
IAR 似乎自动从映射文件(如果我们没有明确定义)而不是从链接器文件中挑选 MPU 的值。
是这样吗?