NXP MCU 技术论坛
直播中

刘杰

7年用户 1274经验值
私信 关注
[问答]

MK60FN1M0VLQ12如果在该部分中声明了变量,则无法写入MK60内部闪存怎么解决?

我正在使用 NXP MK60FN1M0VLQ12  ,我有一些变量要存储在内部闪存中,因此我在链接描述文件中声明了一个单独的部分,并在其中声明了一个全局结构以供代码引用。然后对其进行编程,我使用 Processor Expert 的 FMC 驱动程序的略微修改版本来擦除该扇区,然后一次编程 8 个字节。
然而,无论何时声明全局变量,我都无法擦除/编程闪存,否则它工作正常。当然,在这种情况下,简单的解决方法是使用指向该部分的指针,但我还计划重写一个代码部分,但这是行不通的。这与 C 链接器/编译器有关,还是与 MK60 或驱动程序有关?
以下是相关的代码片段:
链接器脚本:
m_status_page (RX) : ORIGIN = 0x00040000, LENGTH = 0x00001000
.status_page :{ 。=对齐(4);保持(*(.STATUS_PAGE))。=对齐(4);} > m_status_page
全局变量声明:
StatusPage _status_page[TOTAL_STATUS_PAGE_NUMBER] __attribute__ ((section (".STATUS_PAGE")));
然后,当我执行以下命令时,它什么也不做,也不会抛出错误:
flashProgram8Bytes(bytes_to_program, _status_page);
但是,如果我不声明 _status_page 变量,例如以下命令有效:
flashProgram8Bytes(bytes_to_program,0x00040000);

更多回帖

发帖
×
20
完善资料,
赚取积分