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.

[参考译文] MSP430FR6047:IAR 如何为存储器保护单元创建默认的 MPU 分段?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1004630/msp430fr6047-how-the-iar-create-default-mpu-segmentation-for-the-memory-protection-unit

器件型号:MSP430FR6047

您好!

我只想知道 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 的值。

    是这样吗?