恩智浦官方的技术人员你们好
我在开发S32K144芯片的过程中遇到了一个问题
以上述地址说明为例 我想单独开辟出一段地址 来存放一些全局变量
1.可以实现掉电保存 擦除和改写的功能
2.还有在程序运行的过程中还要可以参与逻辑运算
3.在编译生成srec文件后 可以将这段地址内容数据截取出来
我不清楚 将这些变量放在哪个地址段合适
地址分配的编程语法该怎么写 应该怎么改写工程内部的 Linker_files文件夹中的.ld文件
有没有 这方面的参考资料 提供学习
我对 S32K144芯片的开发还存在不懂的地方
对于 Linker_files文件夹中的.ld文件 flash分配 用语法该怎么写 为什么这么写 我还不知道
我想能得到这方面的知识 能有一个官方明确 正确的 语法规范和内部逻辑说明 以提供学习
衷心期待您的回复
万分感谢!
Hi@Ni_
请下次务必使用贵司的邮箱账户进行提问,对于通用邮箱,例如QQ,163,GMAIL等邮箱账户,我们不会优先处理。
我先回答你的第一个问题:
我以RTM版本提供的链接文件为例,其实在该链接文件中已经告知该如何实现划分独立的地址空间用于自定义数据存储。
细看“m_data_2”,其先在MEMORY定义地址空间范围
(这里你可以自己划分内存,例如你可以把m_text再划分为更多的其它自定义空间,注意其实地址和范围)
/* Specify the memory areas */
MEMORY
{
/* Flash */
m_interrupts (RX) : ORIGIN = 0x00000000, LENGTH = 0x00000400
m_flash_config (RX) : ORIGIN = 0x00000400, LENGTH = 0x00000010
m_text (RX) : ORIGIN = 0x00000410, LENGTH = 0x0007FBF0
/* SRAM_L */
m_data (RW) : ORIGIN = 0x1FFF8000, LENGTH = 0x00008000
/* SRAM_U */
m_data_2 (RW) : ORIGIN = 0x20000000, LENGTH = 0x00007000
}
其次在SECTIONS中定义:".customSection",其属于m_data_2。
/* Custom Section Block that can be used to place data at absolute address. */
/* Use __attribute__((section (".customSection"))) to place data here. */
.customSectionBlock ORIGIN(m_data_2) :
{
__customSection_start__ = .;
KEEP(*(.customSection)) /* Keep section even if not referenced. */
__customSection_end__ = .;
} > m_data_2
最后使用“customSection”的时候,可在程序中定义变量:
__attribute__((section (".customSection")) unsigned int i = 0;
变量“i”会被放置在“customSection”中,可以通过编译后的xx.map文件来查看变量“i‘所在的地址是否正确。
你的第二个问题是关于掉电保存数据,这个你完全可以通过S32K1的EEPROM实现,可参考该链接文章。