Удаление прошивки програмным путем
- Войдите на сайт для отправки комментариев
Чт, 05/04/2012 - 16:28
Подскажыте, есть ли метод удаления прошивки (залитого скетча) из памяти. Тоесть функция которую можно вставить в код программы и которая при вызове очищала бы флеш (не епром) память и завершала работу мк. Ну и естественно чтоб после резета ничего не происходило.
Очистить флеш память или после ресета ничего не происходит?. Как будете вызывать функцию?
Представьте себе функцию которая работает как киллер и самоубийца.
Ето как раз и нужно. Задача: мк работает без присмотра. в определенное время его работу нужно прекратить. к епром обращаться нельзя. после прикращения работы на мк не должно оставаться программы. Ну примерно так.
Мож кто знает как ето сделать или натыкался на подобное в нете.
Или на крайняк тупо очистить флеш каким то способом.
Если после такой очистки МК уже не нужен "заметаем следы" то лучшим вариантом будет встроить в код управление каким нибудь реле которое при срабатывании подаст например 12 вольт (или больше если есть) на заранее определённые выводы МК, при управлении реле нужно использовать схему включения самоблокировки реле.
Возникают две идеи.
- мудрить с bootloader что-то
- подключать вторую Arduino, дергать ресет на первой и лить новый, пустой скетч.
подавать с помощью реле питание на все ноги - сжечь...
Почему нельзя обращаться?
1. Записать в EPROM набор набор байт подлиннее.
2. При старте программы сравнить EPROM и работать если совпало содержимое.
3. Когда надо - просто стереть EPROM
(Естественно выставить LOCK BITS на процессор)
И после рестарта можно даже долго и нудно пищать бузером...
А программу пусть стирает тот, кому понадобится кусок железа-процессор.
Можно его даже опустить (или поднять?) до уровня параллельного программирования запретив ресет и режим ISP .
Ну и в качестве совсем изуитской меры- поставить в корпус прибора фоторезистор на ножку процессора.
Откроет кто-то крышку на ярком свету- последствия описаны выше...
Ну прям иезуиты все :)
Процессоры АВР поддерживают режим самопрограммирования (тут за подробностями - в даташит :) )
Бутлодырь - яркий пример программы, которая программирует флеш. Ничего сложного в том, чтобы стереть програму нет, есть сложность стереть стиратель :)
Бутлодырь - яркий пример программы, которая программирует флеш.
Логично! Спасибо что подсказали в какую сторону двигатся, сам как то не сообразил.
возможно ли запускать кусок кода в оперативной памяти:?
туда загнать прогу стирающую флеш, потом ресет, и оперативка тоже очищается
в результате чистый флеш и чистая оперативка) обозвать скрипт HackZoneArduino)
возможно ли запускать кусок кода в оперативной памяти:?
Хитренький какой ;) Это тебе не STM, здесь нет единого адресного пространства, а оперативка - суть набор регистров.
Но есть ардуино и на STM32
так левую оперативку присобачить и передать управление её, на асем. jmp ram,1024
Ну... это уже будет специальная версия ардунины, писать придется на асме или на gcc... кажется это немножко выходит за рамки "создать скетч для адуино"
По-моему, будет достаточно програмно стереть критичный блок программы, можно еще бутлодырь потететь. И перед применением установить бит защиты программы через ICP-разъем программатором. Тогда и работать перестанет, и не прочитать ничего.
может быть, хотя не понимаю почему назвали СКЕТЧ, а не программа, или прошивка,
как-то не обычно звучит. Хотя я пока не пишу под ардуино, хочу мегу взять. Пока есть 2 мотор-шилда, пытаюсь их с ЛПТ порта запустить. И изучаю руководства. Виртуальные проги (для кода и для самоделок шилдов)
Все просто. Используется "местная" терминология в рамках используемого IDE. Смысл в том, чтобы использовать лайфрей ардуино (железяку и прилагаемые IDE и библиотеки) - максимально упрощенная для пользователя система, удобная для человека, плохо знакомого с программированием. Тут даже отладка не предусмотрена :)