Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

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

В загрузчике можно реализовать один “трюк”, который позволяет при выполнении определенного условия полностью ликвидировать прикладную программу, включая свой собственный код. Ниже приведен фрагмент программы из 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

Программатор Pickit3
Программатор Pickit3
Паяльник с регулировкой температуры Солнечная панель 10Вт 12В поликристаллическая
вверх