我知道我可以通过将它声明为"const"来强制将数组放入ARM中的FLASH中.但这并不是真正的一系列内容:我希望能够定期写信给它.我有三个大型阵列占据了我所拥有的128kB SRAM中的约50k,但是我的闪存比我需要的数量级多了一个数量级.如何在不声明const的情况下强制将这三个数组强制转换为FLASH?使用IAR,BTW.
尝试使用__no_init关键字; 根据链接器映射文件,这没有任何影响.
要回答原始问题,您可以编写一个链接描述文件来强制任何变量驻留在预定的内存区域(声明它们const不会强制编译器将其放入FLASH中,这只是一个强烈的建议).
另一方面,过多的FLASH本身并不是将非const阵列保持在闪存中的好理由.其中的原因是:1),这取决于在芯片上,接入到FLASH存储器可以比RAM存取(特别是用于写入)2)FLASH只能改写的次数是有限的慢得多:它不是一个偶然的一个问题重写,但如果你的代码不断重写FLASH内存,你可以相当快速地毁掉它.3)有一些特殊的程序可以写入FLASH(ARM很容易,但它仍然不像写入RAM那么简单).