2017-04-06 38 views
0

运行时可以写入Atmel Atmega16的程序存储器吗?我正在尝试编写一个程序来对程序存储器中给定的一组数字进行排序,并且我必须交换数据,所以我需要使用SPM(存储程序存储器),但是我不知道是否可以更改内容程序内存,而我正在运行程序! 我猜写操作必须在程序存储器的BOOT SECTION之类的地方执行,但我无法找到一种方法来做到这一点。任何帮助?谢谢。在运行时写入AVR ATmega16的程序存储器?

+0

你可以,但你不想,这是一个坏主意。将数据复制到内存中,并在那里进行分类。 – Jester

回答

1

您可以,尤其是像引导加载程序这样的底层系统模块(需要)写入程序存储器。

请注意,某些AVR允许以字面方式写入PM,其他AVR仅允许替换完整的Flash页面。显然,你的代码需要确保当前没有使用该单词或页面,而重新编程。

一般来说,排序程序内存中的数字听起来像一个坏主意,但。你会很快耗尽你的闪存周期,主要问题仍然存在:为什么你不写之前闪光?