2017-04-06 1 views
0

Est-il possible d'écrire dans la mémoire programme de l'Atmega16 d'Atmel lors de l'exécution? J'essaye d'écrire un programme pour trier un ensemble donné de nombres dans la mémoire de programme et je dois échanger les données ainsi j'ai besoin d'employer SPM (mémoire de programme de magasin), mais je ne suis pas sûr que je peux changer le contenu de la mémoire de programme pendant que je cours le programme! Je suppose que l'opération d'écriture doit être implémentée quelque part comme la section BOOT de la mémoire du programme, mais je ne trouve pas un moyen de le faire. De l'aide? Merci.Écrire dans la mémoire de programme de AVR ATmega16 en cours d'exécution?

+0

Vous pouvez, mais vous ne voulez pas, c'est une mauvaise idée. Copiez vos données dans RAM, et le trier là. – Jester

Répondre

1

Vous pouvez, et en particulier les modules système de bas niveau comme les chargeurs de démarrage, écrire (doivent) dans la mémoire programme.

Notez que certains AVR autorisent l'écriture de mots sur PM, d'autres autorisent uniquement le remplacement de pages flash complètes. Évidemment, votre code doit s'assurer qu'il n'utilise pas ce mot ou cette page pendant la reprogrammation.

Généralement, le tri nombres dans la mémoire de programme sonne comme une mauvaise idée, cependant. Vous allez épuiser vos cycles de flash assez rapidement, et la question principale demeure: Pourquoi ne pas trier avant d'écrire au flash?