Главная » Микроконтроллеры
Призовой фонд
на июль 2017 г.
1. Осциллограф DSO138
Паяльник
2. Регулируемый паяльник 60 Вт
Паяльник
3. 200 руб.
От пользователей

Самоуничтожение программы

В загрузчике можно реализовать один “трюк”, который позволяет при выполнении определенного условия полностью ликвидировать прикладную программу, включая свой собственный код. Ниже приведен фрагмент программы из 12 слов, которая последовательно стирает все страницы FLASH-памяти. Сама программа должна быть расположена в последней странице, которая и будет удалена в последнюю очередь. Перейти на метку flush_mem можно из любого места программы любой инструкцией перехода либо вызова подпрограммы.

   .
   rjmp  flush_mem  ;запускаем отчистку FLASH-памяти
   .   

;     Код для отчистки FLASH-памяти программ

     .org FLASHEND - 12
		  
flush_mem:		
     ldi   ZH,high(-2*PAGESIZE) ;инициализируем указателю Z
     ldi   ZL,low(-2*PAGESIZE)        
fm1: in    R16,SPMCR  ;ожидаем пока не закончится действие
     sbrc  R16,SPMEN  ;предыдущая инструкции spm
	 rjmp  fr1
fm2: sbic  EECR,EEWE  ;ожидаем пока не закончится 
	 rjmp  fr2        ;запись в EEPROM-память
     subi  ZL,low(-2*PAGESIZE)  ;увеличиваем текущий адрес 
     sbci  ZH,high(-2*PAGESIZE) ;на величину PAGESIZE слов
	 ldi   R16,(1<< PGERS)|(1<< SPMEN)
	 out   SPMCR,R16  ;заносим регистр SPMCR команду стирания
	 spm              ;в течении 4-х циклов выполняем команду spm
     rjmp  fr1        ;переходим к очистки очередной страницы  

Перейти к следующей части:

Теги:

Котов Игорь Юрьевич Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (0) | Я собрал (0) | Подписаться

Статью еще никто не комментировал. Вы можете стать первым.
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется сила тока?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
МиниПК MK809V - 4 ядра, Android 4.4.2 FM-модуль RDA5807M
вверх