Assembly 在运行时写入AVR ATmega16的程序内存?

Assembly 在运行时写入AVR ATmega16的程序内存?,assembly,avr,atmega,Assembly,Avr,Atmega,运行时是否可以写入Atmel的Atmega16的程序内存?我正试图编写一个程序,对程序内存中给定的一组数字进行排序,我必须交换数据,因此我确实需要使用SPM(存储程序内存),但我不确定在运行程序时是否可以更改程序内存的内容! 我想写操作必须在程序内存的启动部分这样的地方实现,但我找不到这样做的方法。有什么帮助吗?谢谢。您可以,尤其是像引导加载程序这样的低级系统模块确实(需要)写入程序内存 请注意,一些AVR允许对PM进行逐字写入,其他AVR只允许替换完整的flash页面。显然,您的代码需要确保在

运行时是否可以写入Atmel的Atmega16的程序内存?我正试图编写一个程序,对程序内存中给定的一组数字进行排序,我必须交换数据,因此我确实需要使用SPM(存储程序内存),但我不确定在运行程序时是否可以更改程序内存的内容!
我想写操作必须在程序内存的启动部分这样的地方实现,但我找不到这样做的方法。有什么帮助吗?谢谢。

您可以,尤其是像引导加载程序这样的低级系统模块确实(需要)写入程序内存

请注意,一些AVR允许对PM进行逐字写入,其他AVR只允许替换完整的flash页面。显然,您的代码需要确保在重新编程时当前未使用该单词或页面


不过,一般来说,在程序内存中对数字进行排序听起来是个坏主意。您将很快耗尽闪存周期,主要问题仍然是:为什么不在写入闪存之前进行排序?

可以,但您不想,这是个坏主意。将数据复制到ram中,并在那里进行排序。