|
Защита секция кода во FLASH в ATmega, Как защититься от несанкционированного выполнения кода |
|
|
|
Feb 11 2008, 17:42
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
А кто как защищает код в MCU от несанкционированного выполнения в результате случайного перехода из одной точки программы в другую от воздействия помехонесущего электромагнитного поля (искажения записанного в счётчике команд значения). А? Приведу пример -------------------- lab_1_input: ldi R16 , $00 mov R16 , $98 ... lab_1_output: mov R17 , R5 ----------------------- lab_2_1_input: mov R18, R17 Т.е. допустим программа предусматривает переход к выполнению кодового фрагмента, начинающегося с метки lab_2_1_input только после отработки до конца фрагмента [lab_1_input;lab_1_output] А представим , что от помехи произошёл случайный переход из произвольной точки 1-го фрагмента кода в произвольную точку 2-го фрагмента кода.... Как вы ПРОГРАММНО отлавливаете такие ситуации? Т.е. как Вы реализовываете в своих программах для микроконтроллеров ATmega механизм защиты FLASH-памяти от несанкционированного выполнения кода. Ну т.е. как контролировать, что в данный фрагмент кода вошли не где попало, а через строго определённые на этапе проектирования программы, точки Цитата(Дон Амброзио @ Feb 11 2008, 20:36)  А кто как защищает код в MCU от несанкционированного выполнения в результате случайного перехода из одной точки программы в другую от воздействия помехонесущего электромагнитного поля (искажения записанного в счётчике команд значения). Кстати, причины такого случайного джампа могут быть не только в разрушении PC. Может также случайным образом измениться содержимое ячейки FLASH или содержимое хранимой в ОЗУ таблицы переходов... В любом случае МОЖЕТ произойти переход в точку некоторого логического сегмента кода, которая не предусмотрена данным логическим сегментом FLASH
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
 |
Ответов
|
Feb 12 2008, 16:18
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Цитата(Kris2007 @ Feb 12 2008, 16:21)  А че такое бывает чтобы из-за электромагнитных помех грохнулся счетчик команд? Бывает, бывает. Молодой человек. Я написал тестовую прогу для ATmega8 которая представляет собой следующее: .cseg .org 0 ;----------------- .set Number = 0 ;----------------- Begin_Loop : .set Number = Number +1 ldi R16 , Number nop ... nop cpi R16 , Number breq PC+0x02 rjmp Crash ;----------------- .set Number = Number +1 ldi R16 , Number nop ... nop cpi R16 , Number breq PC+0x02 rjmp Crash ;----------------- .set Number = Number +1 ldi R16 , Number nop ... nop cpi R16 , Number breq PC+0x02 rjmp Crash ;----------------------- ...... ...... ...... ;----------------- .set Number = Number +1 ldi R16 , Number nop ... nop cpi R16 , Number breq PC+0x02 rjmp Crash ;----------------------- rjmp Begin_Loop ;----------------------- Crash : ; Зажечь светодиод ... ; Остановиться ;------------------------ После подачи помехи в виде электромагнитной наводки от пьёзозажигалки мне удавалось как зажечь светодиод Цитата(Kris2007 @ Feb 12 2008, 16:21)  Импульсник на 3квт делали на атмеге. Там тАкие помехи идут и все ок. Я уж не говорю о других устройствах. Если некая помеха по питанию и на пине это еще понятно но случайная запись в PC .. У меня тоже в условиях эксплуатация все девайсы работают нормально. А когда я над ними "издеваюсь" с помощью пьезозажигалки, то порой такие "чудеса" наблюдаю Цитата(SasaVitebsk @ Feb 12 2008, 16:36)  А с какими ты работал? Сейчас практически все AVR "такие" Не звизди.. "Все такие" говоришь? А как же ATmega 8, 8515, 8535, 64, 128..А? Цитата(Дон Амброзио @ Feb 12 2008, 18:54)  А как же ATmega 8, 8515, 8535, 64, 128..А? В них по WDT происходит полноценный сброс, а не прерывание Цитата(SasaVitebsk @ Feb 12 2008, 16:36)  Просто к моменту когда ты начал обдумывать свои "правильные" методики борьбы, человечество с этим уже работало и над этим думало не один десяток лет. И WDT оказался одним из самых эффективных методов борьбы с зависаниями и сбоями. Дык с зависаниями или сбоями? Вы уж определитесь.. Ибо понятие "сбой" гораздо шире понятия "зависание" Цитата(SasaVitebsk @ Feb 12 2008, 16:36)  раз уж ты уходишь от переписывания моей процедуры. Странный ты.. Ну на тебе твою переделанную процедуру (хотя я же объяснял тебе выше как это сделать. Неужели для тебя это так сложно?  ) ... ldi R25 , high ( Border_Counter) ldi R24 , low ( Border_Counter) ReadLptEPP: sbiw R25:R24 , 1 breq Crash sbic pinc,LptSTB ; Строб пришёл? rjmp ReadLptEPP ; иначе повторить ...
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
Feb 12 2008, 17:00
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Дон Амброзио @ Feb 12 2008, 20:18)  Не звизди.. "Все такие" говоришь? А как же ATmega 8, 8515, 8535, 64, 128..А? В них по WDT происходит полноценный сброс, а не прерывание Используйте m88, m165, m1281... Цитата Дык с зависаниями или сбоями? Вы уж определитесь.. Ибо понятие "сбой" гораздо шире понятия "зависание" А что по вашему есть "зависание"? Цитата Странный ты.. Ну на тебе твою переделанную процедуру (хотя я же объяснял тебе выше как это сделать. Неужели для тебя это так сложно?  ) ... ldi R25 , high ( Border_Counter) ldi R24 , low ( Border_Counter) ReadLptEPP: sbiw R25:R24 , 1 breq Crash sbic pinc,LptSTB ; Строб пришёл? rjmp ReadLptEPP ; иначе повторить ... На частоте 14745600 максимальное время - 22мс. При 4-ёх байтном счётчике ~ 40 минут. Итак вопрос чем ваш вариант лучше применения WDT? Не будем здесь обсуждать 1.5 кратное увеличение длины кода и прочие нюансы. Вчём прелесть? Я действительно хочу понять вашу мысль. Дело в том, что некоторые применяют как раз противоположные подходы. К примеру, для перехода в 0 инициализируют WDT и делают цикл. Вот как раз отрывок из Atmel-овского avr231 Код case TYPE_RESET: busReplyByte(ERROR_OK); for(;;);
|
|
|
|
|
Feb 12 2008, 17:14
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Цитата(SasaVitebsk @ Feb 12 2008, 20:00)  К примеру, для перехода в 0 инициализируют WDT и делают цикл. Это не для "перехода в 0" делается , а для перевода микроконтроллера в определённое исходное состояние, именуемого сбросом Цитата(SasaVitebsk @ Feb 12 2008, 20:00)  Используйте m88, m165, m1281... Не я выбираю MCU: что мне дали, то я и юзаю ( я последнее время больше программером работаю, хотя я могу и платы разводить, и схемы проектировать). Мне дают готовый девайс и я пишу для него прогу Цитата(SasaVitebsk @ Feb 12 2008, 20:00)  А что по вашему есть "зависание"? Вы точно не читаете то, что уже написано. Я же написал выше, что " понятие "сбой" гораздо шире понятия "зависание"". Из чего следует, что зависание - это частный случай сбоя и зависание далеко не исчерпывает все возможные виды сбоев
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
Feb 12 2008, 19:16
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Дон Амброзио @ Feb 12 2008, 21:14)  Вы точно не читаете то, что уже написано. Я же написал выше, что " понятие "сбой" гораздо шире понятия "зависание"". Из чего следует, что зависание - это частный случай сбоя и зависание далеко не исчерпывает все возможные виды сбоев А что именно здесь читать? Вы считаете что вы ответили на вопрос? С моей точки зрения вы его обошли. Правда не удачно. "Зависание" - это не частный случай сбоя, а это частный результат сбоя. Их (результатов) может быть всего два вида. Первый - вылет на сброс, второй - "зависание" (зацикливание). Причём понятно, что проц не сразу туда попадает, а с момента сбоя - попадает в ближайший цикл, который не может пройти. Видете как просто? По объёму написанного - столько же. Так почему просто не ответить на поставленный вопрос? Далее - исходя из этого - WDT лучше помогает чем ваши ограничители. Какой в них смысл? Таймауты применяют при работе с внешним оборудованием, для того, чтобы диагностировать сбой в работе оного. Диагностировать, для того чтобы обработать ошибку определённым образом. Например если не получили ответа от rs485, посылаем повторный запрос, если произошёл сбой при работе с ЖКИ - сбрасываем и перерисовываем. Но если в результате "не ответа" нечего делать? Если уровень сбоя превышает возможности его обработки, в этом случае идёт полная перезагрузка процессора. И аппаратный аварийный рестарт - всегда был более лучшим средством чем программный.
|
|
|
|
|
Feb 12 2008, 19:56
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Цитата(SasaVitebsk @ Feb 12 2008, 22:16)  Их (результатов) может быть всего два вида. Первый - вылет на сброс, второй - "зависание" (зацикливание). Очень упрощённый взгляд на проблему. Результатом сбоя явлются либо материальный ущерб, либо (в худшем случае) человеческие жертвы Цитата(SasaVitebsk @ Feb 12 2008, 22:16)  Причём понятно, что проц не сразу туда попадает, а с момента сбоя - попадает в ближайший цикл, который не может пройти.
Видете как просто? Такая простота хуже воровства и граничит с полной профессиональной некомпетентностью Цитата(SasaVitebsk @ Feb 12 2008, 22:16)  попадает в ближайший цикл, который не может пройти. Да нет таких в нормальной продуманной программе. Сколько раз Вам повторять Цитата(SasaVitebsk @ Feb 12 2008, 22:16)  Таймауты применяют при работе с внешним оборудованием А в многопоточных RTOS не применяется? У меня наприммер в моих программах работающих в среде моей же RTOS я контролирую до 50-ти таймаутов различных внешних и внутренних событий
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
Сообщений в этой теме
Дон Амброзио Защита секция кода во FLASH в ATmega Feb 11 2008, 17:42 Liseev А как вы будете защищать "механизм защиты от ... Feb 11 2008, 18:05 Дон Амброзио Цитата(Liseev @ Feb 11 2008, 21:05) Испол... Feb 11 2008, 18:40  Liseev Цитата(Дон Амброзио @ Feb 11 2008, 21:40)... Feb 11 2008, 19:32  SasaVitebsk Цитата(Дон Амброзио @ Feb 11 2008, 22:40)... Feb 11 2008, 21:34   Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 00:34) ... Feb 11 2008, 21:52    SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 01:52)... Feb 11 2008, 22:45     Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 01:45) ... Feb 11 2008, 23:08      SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 03:02)... Feb 11 2008, 23:11       Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 02:11) ... Feb 11 2008, 23:31        SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 03:31)... Feb 12 2008, 08:41         Дон Амброзио Цитата(SasaVitebsk @ Feb 12 2008, 11:41) ... Feb 12 2008, 12:01        defunct Цитата(Дон Амброзио @ Feb 12 2008, 01:31)... Feb 13 2008, 12:47         Дон Амброзио Цитата(defunct @ Feb 13 2008, 15:47) это ... Feb 13 2008, 16:08          defunct ЦитатаА кто как организует код программы, чтобы пр... Feb 13 2008, 23:51           Дон Амброзио Цитата(defunct @ Feb 14 2008, 02:51) Дете... Feb 14 2008, 00:30            defunct Цитата(Дон Амброзио @ Feb 14 2008, 02:13)... Feb 14 2008, 00:33             Дон Амброзио Цитата(defunct @ Feb 14 2008, 03:33) Пото... Feb 14 2008, 00:49              defunct Цитата(Дон Амброзио @ Feb 14 2008, 02:49)... Feb 14 2008, 00:55               Дон Амброзио Цитата(defunct @ Feb 14 2008, 03:55) Вооб... Feb 14 2008, 01:26                defunct Цитата(Дон Амброзио @ Feb 14 2008, 03:21)... Feb 14 2008, 01:34                 Дон Амброзио Цитата(defunct @ Feb 14 2008, 04:34) Поче... Feb 14 2008, 01:40                  defunct Цитата(Дон Амброзио @ Feb 14 2008, 03:40)... Feb 14 2008, 01:43                singlskv Цитата(Дон Амброзио @ Feb 14 2008, 04:26)... Feb 14 2008, 09:38             Дон Амброзио Цитата(defunct @ Feb 14 2008, 03:33) А во... Feb 14 2008, 01:05              defunct Цитата(Дон Амброзио @ Feb 14 2008, 02:56)... Feb 14 2008, 01:06             galjoen Цитата(defunct @ Feb 14 2008, 03:33) Ну и... Feb 14 2008, 07:11              defunct Цитата(galjoen @ Feb 14 2008, 09:11) Сове... Feb 14 2008, 15:18              Дон Амброзио Цитата(galjoen @ Feb 14 2008, 10:11) У AR... Feb 14 2008, 15:35               singlskv Цитата(Дон Амброзио @ Feb 14 2008, 18:35)... Feb 14 2008, 18:10                Дон Амброзио Цитата(singlskv @ Feb 14 2008, 21:10) Ой.... Feb 14 2008, 18:45                 singlskv Цитата(Дон Амброзио @ Feb 14 2008, 21:35)... Feb 14 2008, 18:51            Дон Амброзио Цитата(Дон Амброзио @ Feb 14 2008, 03:30)... Feb 14 2008, 00:35            defunct Цитата(Дон Амброзио @ Feb 14 2008, 02:30)... Feb 14 2008, 00:45      galjoen Цитата(Дон Амброзио @ Feb 12 2008, 02:08)... Feb 12 2008, 00:33   galjoen Цитата(Дон Амброзио @ Feb 11 2008, 20:42)... Feb 11 2008, 22:05 Непомнящий Евгений Ну как вариант - расставить assert-ы по всей проге... Feb 11 2008, 19:26 Дон Амброзио Цитата(Непомнящий Евгений @ Feb 11 2008, 22... Feb 11 2008, 20:15 arttab Средства должны оправдывать цели.
уровень защиты о... Feb 12 2008, 01:45 Дон Амброзио Цитата(arttab @ Feb 12 2008, 04:45) Средс... Feb 12 2008, 05:05  VladimirYU Цитата(Дон Амброзио @ Feb 12 2008, 08:05)... Feb 12 2008, 06:23   Дон Амброзио Цитата(VladimirYU @ Feb 12 2008, 09:23) К... Feb 12 2008, 06:35  adc Цитата(Дон Амброзио @ Feb 12 2008, 08:05)... Feb 12 2008, 12:49   Дон Амброзио Цитата(adc @ Feb 12 2008, 15:49) Вот вот.... Feb 12 2008, 13:03    SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 17:03)... Feb 12 2008, 13:36  tyro Цитата(Дон Амброзио @ Feb 12 2008, 08:05)... Feb 13 2008, 07:56   Дон Амброзио Цитата(tyro @ Feb 13 2008, 10:56) Обсужда... Feb 13 2008, 09:39    zltigo Цитата(Дон Амброзио @ Feb 13 2008, 12:36)... Feb 13 2008, 09:42     Dog Pawlowa Цитата(zltigo @ Feb 13 2008, 13:42) За те... Feb 13 2008, 09:49      zltigo Цитата(Dog Pawlowa @ Feb 13 2008, 12:49) ... Feb 13 2008, 10:02       Дон Амброзио Цитата(zltigo @ Feb 13 2008, 13:02) Для н... Feb 13 2008, 10:51 Непомнящий Евгений ИМХО, стратегия поведения после обнаружения ошибки... Feb 12 2008, 06:39 VladimirYU Цитата(Непомнящий Евгений @ Feb 12 2008, 09... Feb 12 2008, 06:43      SasaVitebsk Цитата(Дон Амброзио @ Feb 12 2008, 23:56)... Feb 12 2008, 21:34       Дон Амброзио Цитата(SasaVitebsk @ Feb 13 2008, 00:34) ... Feb 12 2008, 21:44  adc Цитата(Дон Амброзио @ Feb 12 2008, 19:18)... Feb 13 2008, 06:12   Дон Амброзио Цитата(adc @ Feb 13 2008, 09:12) Всегда п... Feb 13 2008, 09:26    adc Цитата(Дон Амброзио @ Feb 13 2008, 12:26)... Feb 13 2008, 09:39     Дон Амброзио Цитата(adc @ Feb 13 2008, 12:39) Как можн... Feb 13 2008, 09:57      galjoen Цитата(Дон Амброзио @ Feb 13 2008, 12:57)... Feb 13 2008, 10:19       galjoen Цитата(galjoen @ Feb 13 2008, 13:19)
Я т... Feb 13 2008, 10:53       adc Цитата(galjoen @ Feb 13 2008, 13:19) Цита... Feb 13 2008, 11:25        galjoen Цитата(adc @ Feb 13 2008, 14:25) Но ведь ... Feb 13 2008, 12:24   galjoen Цитата(adc @ Feb 13 2008, 09:12) Всегда п... Feb 13 2008, 09:41 Rst7 ЦитатаНе я выбираю MCU: что мне дали, то я и юзаю ... Feb 12 2008, 18:23 Дон Амброзио Цитата(Rst7 @ Feb 12 2008, 21:23) Если не... Feb 12 2008, 18:50 arttab хорошо что не подрались...
может для начала оп... Feb 13 2008, 02:02 Schtirlitz Надо отделить мух от котлет. Ибо проблема надежнос... Feb 13 2008, 09:31 Дон Амброзио Цитата(Schtirlitz @ Feb 13 2008, 12:31) И... Feb 13 2008, 09:41 Дон Амброзио Цитата(Schtirlitz @ Feb 13 2008, 12:31) Н... Feb 13 2008, 09:44  Schtirlitz Цитата(Дон Амброзио @ Feb 13 2008, 12:44)... Feb 13 2008, 10:01   Дон Амброзио Цитата(Schtirlitz @ Feb 13 2008, 13:01) А... Feb 13 2008, 11:14 mig2002 Возвращаясь к первоначальному вопросу могу посовет... Feb 13 2008, 11:01 mig2002 В принципе, однозначного решения данного вопроса б... Feb 13 2008, 11:43 Дон Амброзио Цитата(mig2002 @ Feb 13 2008, 14:43) В пр... Feb 13 2008, 12:09  mig2002 Цитата(Дон Амброзио @ Feb 13 2008, 14:09)... Feb 13 2008, 13:20 Дон Амброзио Вообще сейчас скажу крамольную мысль (только чур н... Feb 13 2008, 12:16 Rst7 ЦитатаА у вас как с ЭМС? С наносекундными импульса... Feb 13 2008, 12:50 galjoen Цитата(Rst7 @ Feb 13 2008, 15:50) У меня ... Feb 13 2008, 14:34  defunct Цитата(galjoen @ Feb 13 2008, 16:34) Може... Feb 13 2008, 15:12   Дон Амброзио Цитата(defunct @ Feb 13 2008, 18:12) угу,... Feb 13 2008, 15:51    defunct Цитата(Дон Амброзио @ Feb 13 2008, 17:51)... Feb 13 2008, 17:16     Дон Амброзио Цитата(defunct @ Feb 13 2008, 20:16) Я же... Feb 13 2008, 18:35      galjoen Цитата(Дон Амброзио @ Feb 13 2008, 21:35)... Feb 13 2008, 19:17 IgorKossak Считаю своим долгом всем напомнить, что неплохо бы... Feb 13 2008, 13:26 adnega Недавно дорабатывал текстовое информационное табло... Feb 13 2008, 13:50 defunct ЦитатаПосле аппаратных доделок табло перестало лов... Feb 13 2008, 14:09 Rst7 ЦитатаУ меня-то пластмассовый корпус 120*60*32 мм.... Feb 13 2008, 14:41 galjoen Цитата(Rst7 @ Feb 13 2008, 17:41) И в под... Feb 13 2008, 15:53  Rst7 Цитата(galjoen @ Feb 13 2008, 17:53) Объя... Feb 14 2008, 06:25 Дон Амброзио Не секрет, что стоимость простых MCU упала до стои... Feb 14 2008, 15:56 zltigo Цитата(Дон Амброзио @ Feb 14 2008, 18:56)... Feb 14 2008, 16:05 Rst7 ЦитатаСтранно.. Я читал совершенно другие "ме... Feb 14 2008, 17:35
3 страниц
1 2 3 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|