工具/软件:TI-RTOS
大家好、
我对超过64K 字节的内部闪存访问有疑问。
背景:
我使用的 MSP430F5438A 芯片具有256K 字节内部闪存和 TI-RTOS。
由于我们需要使用 XDCTool 来配置 TI-RTOS,因此我们只能使用编译器的小数据模型(IAR 7.11.1)。
(XDCTool 不支持大型或中型数据模型)。
我正在尝试访问整个闪存区域。 但地址似乎被限制在16位、然后不能大于0xFFFF。
可能的解决方案:
我已经对这一问题进行了一些调查,网上提出了三种可能的解决办法。
1)使用大数据模型(在本方案中不受支持)。
2) 2)使用汇编代码来访问大于0xFFFF 的地址。 (尚未证明)。
3) 3)使用 IAR 提供的__DATA20内在函数来定义指针或数据。 (小型数据模型不支持)。
4)是否有其他解决方案??
我们似乎只能使用选项2)? 我不太熟悉汇编语言、谁可以提供一些示例代码?
这是来自互联网、但存在一个编译错误:
/*
对闪存 func 进行* 20位写入访问
*
静态内联空 FlashWriteByte (uint32_t 地址、uint8_t 字节)
{
unsigned int SR、flash;
_asm volatile ("mov R2、%0":"=r"(SR):);
_dint();
_asm volatile ("movx.a %1、%0":"=r"(FLASH):"m"(地址));
_asm volatile ("movx.b %1、@%0":"=r"(FLASH):"m"(Byte));
_asm volatile ("mov %0、R2":"r"(SR));
_NOP();
_EINT();
}
或者、我想知道 TI-RTOS 是否有一些可以在这种情况下工作的存储器/闪存管理系统或 API?
谢谢
艾伦