реклама на сайте
подробности

 
 
19 страниц V  « < 5 6 7 8 9 > »   
Closed TopicStart new topic
> Защита секция кода во FLASH в ATmega, Как защититься от несанкционированного выполнения кода
galjoen
сообщение Feb 14 2008, 07:11
Сообщение #91


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(defunct @ Feb 14 2008, 03:33) *
Ну и Вы сами говорите что 100% нельзя отловить, а раз 100% нельзя отловить то зачем их ловить?!

CRC тоже 100% защиты не даёт. CRC16 не более чем в 65536 раз защищённость повышает, а CRC32 не более чем в 0x100000000 раз. Что тогда и CRC не пользоваться? Это-же не 100%!
Цитата(defunct @ Feb 14 2008, 03:45) *
Конечно сбой надо продетектить,

+1
Цитата(defunct @ Feb 14 2008, 03:45) *
Речь о том, что до сброса мы не сможем отдетектить нарушение FLASH. Ну это просто очень накладно пересчитывать CRC флеша постоянно в процессе работы.

Совершенно не накладно. В задаче с наименьшим приоритетом по 1-му слову за раз. У меня это основной цикл. У вас это idle таск. Только срабатывать это должно не сразу. А например, когда 2 раза подряд CRC не совпало.
Цитата(defunct @ Feb 14 2008, 04:06) *
Так в чем вопрос - переходите на ARM с MMU. В старших моделях (920T и выше) мало того, что каждому килобайту памяти можно настроить параметры доступа, так еще определяется и "выровнянность" кода. А если прыгнули внутри одного блока - то DATA_ABORT обеспечен, т.к. сбой произойдет из-за искаженных данных. Но и в младших моделях некоторые прелести MMU есть, а цена такая же как и на меги.

У ARM код из ОЗУ берётся. А в ОЗУ код гораздо больше изменениям от помехи подвержен, чем во FLASH. Хотя-бы при переписывании его туда.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 14 2008, 09:38
Сообщение #92


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Дон Амброзио @ Feb 14 2008, 04:26) *
Странная логика... Но ведь если не применить эти методы то вероятность этих фатальных последствий возрастёт в 10 раз....

Клевые у Вас помехи, не подскажите где Вы их берете ? smile.gif
И прыгают они у Вас исключительно на код, а на данные размещенные во флеш
видимо никогда не прыгают, и на 32битные команды прыгают исключительно с
выравниванием по началу команды, в середину команды ни-ни, незя... 07.gif

Не отсыпите пару кило таких помех для прикручивания к своим проектам ?
А то, все как-то больше, непослушные помехи попадаються, так и норовят прыгнуть
куда-нить не туда... biggrin.gif
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 14 2008, 15:18
Сообщение #93


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(galjoen @ Feb 14 2008, 09:11) *
Совершенно не накладно. В задаче с наименьшим приоритетом по 1-му слову за раз. У меня это основной цикл. У вас это idle таск. Только срабатывать это должно не сразу. А например, когда 2 раза подряд CRC не совпало.

Это вариант. Только я считаю, что это лишнее..
Ну просто не будет программа работать нормально если часть флеша слетит по причине прыжка на erase sequence в бутлоадере, не вернемся мы оттуда в ОС... Следовательно тут как раз WDT помощник.
Ну а если предположить, что мы все-таки вернулись после erase sequence в ОС и продетектили нарушение флеш в основной программе, что дальше? Выход ведь тот же самый - сброс и запуск бутлоадера.

Цитата
У ARM код из ОЗУ берётся. А в ОЗУ код гораздо больше изменениям от помехи подвержен, чем во FLASH. Хотя-бы при переписывании его туда.

У мелких АРМов (конкурентов мег) есть FLASH. Хотите размещайте во флеш, не хотите - копируйте и запускайте в RAM.
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Feb 14 2008, 15:35
Сообщение #94


Местный
***

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



Цитата(galjoen @ Feb 14 2008, 10:11) *
У ARM код из ОЗУ берётся.

Ээээ...Тогда они однозначно менее надёжны, поскольку ОЗУ попортить помехе гораздо легче чем ПЗУ

Цитата(singlskv @ Feb 14 2008, 12:38) *
И прыгают они у Вас исключительно на код, а на данные размещенные во флеш
видимо никогда не прыгают

Прыгают и на данные, но я данные храню в специальном дезактивированном формате, поэтому если даже проц запрыгнет на данные ничего ужасного не произойдёт...

Цитата(Rst7 @ Feb 14 2008, 09:25) *
Просто выполнено как положено, не раз тут методики правильного проектирования обсуждали.


+


Цитата(Rst7 @ Feb 14 2008, 09:25) *
до сих пор поражаюсь, там такая петля была по земле, жуть...



Странно.. Я читал совершенно другие "методики правильного проектирования". Что наооборот землю надо пускать кольцом по краю платы


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Feb 14 2008, 15:56
Сообщение #95


Местный
***

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



Не секрет, что стоимость простых MCU упала до стоимости одного транзистора. Т.е. менее 1$.
Для разработчиков открылась возможность использования в ОДНОМ устройстве сразу несколько MCU.
Использовали ли Вы в своих разработках многопроцессорные конфигурации. Но не с целью добавить функциональность, а конкретно с целью увеличения надёжности работы устройства (горячее резервирование, мажоритарное голосование и т.д.)

Интересует что конкретно вы реализовывали в многопроцессорных конфигурациях и за счёт чего увеличивали надёжность.. Интересуют использованные вами принципы и нюансы реализации


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 14 2008, 16:05
Сообщение #96


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Дон Амброзио @ Feb 14 2008, 18:56) *
Не секрет...

Для затравки 5 эпизод. http://www.iosifk.narod.ru/engineer_storys.htm

Moderator:
Перенес эту тему в существующую ветку. Если получится хоть сколь-нибудь конструктивное обсуждение - обещаю выделить в отдельную тему.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Rst7
сообщение Feb 14 2008, 17:35
Сообщение #97


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Странно.. Я читал совершенно другие "методики правильного проектирования". Что наооборот землю надо пускать кольцом по краю платы


Я немного не так выразился, видимо. Там просто минус питания проца был присоединен в такую точку, на которой потенциал сильно подпрыгивал при попадании на внешний интерфейс испытательного импульса (или непосредственно в минус этого интерфейса, соединенного с землей, или в плюс, который соединен с минусом через суппрессор). Надежно было убрано организацией пути тока мимо этого отростка. Так что там не совсем петля была...


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 14 2008, 18:10
Сообщение #98


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Дон Амброзио @ Feb 14 2008, 18:35) *
Прыгают и на данные, но я данные храню в специальном дезактивированном формате, поэтому если даже проц запрыгнет на данные ничего ужасного не произойдёт...
Ой..., а Вы не просветите нас про Ваш дезактивированный формат ? или еще
не придумали как это должно выглядеть... biggrin.gif
Ну и как-то вопрос про 32бит команды был обойден, не нравятся неудобные вопросы ?
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Feb 14 2008, 18:45
Сообщение #99


Местный
***

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



Цитата(singlskv @ Feb 14 2008, 21:10) *
Ой...

Да ничо, ничо lol.gif

Цитата(singlskv @ Feb 14 2008, 21:10) *
а Вы не просветите нас про Ваш дезактивированный формат ? или еще
не придумали как это должно выглядеть...

Почему же...Придумал.. И давно уже юзаю...У меня данные храняться в команде CPI Rd , K.
Как Вы, конечно же знаете, код этой команды 0011KKKK ddddKKKK. Отсюда 12 из 16 бит ячейки флэшь можно заюзать под данные. Т.е. 25% объёма флешь мы теряем в случае такого способа хранения данных.. Но зато !!!! Если в результате случайного джампа проц попадёт на область данных, то он просто выполнить цепочку команд CPI Rd , K а в конце области данных у меня стоит джамп JMP CRASH

Сообщение отредактировал Дон Амброзио - Feb 14 2008, 18:56


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 14 2008, 18:51
Сообщение #100


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Дон Амброзио @ Feb 14 2008, 21:35) *
Почему же...Придумал.. И давно уже юзаю...У меня данные храняться в команде CPI Rd , K.
Как Вы, конечно же знаете, код этой команды 0011KKKK ddddKKKK. Отсюда 12 из 16 бит ячейки флэшь можно заюзать под данные. Т.е. 25% объёма флешь мы теряем в случае такого способа хранения данных.. Но зато !!!! Если в результате случайного джампа проц попадёт на область данных, то он просто выполнить цепочку команд CPI Rd , K а в конце области данных у меня стоит джамп JMP CRASH
Хотелось бы увидеть реальный пример хранения ну например таблиц CRC16 modbus в
"дезактевированном" состоянии.... laughing.gif
Цитата
Нет в ATmega-х таких команд
Ээээ..., Вы правда знаете все команды ATmega ?
LDS,STS это какие-то другие команды ? не 32 бит ?
Ну уж просветите, наш Гуру...
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Feb 14 2008, 18:58
Сообщение #101


Местный
***

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



Цитата(singlskv @ Feb 14 2008, 21:51) *
Ээээ..., Вы правда знаете все команды ATmega ?
LDS,STS это какие-то другие команды ? не 32 бит ?

Глюк в голове произошёл.. с кем не бывает biggrin.gif


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 14 2008, 19:13
Сообщение #102


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Дон Амброзио @ Feb 14 2008, 21:58) *
Глюк в голове произошёл.. с кем не бывает biggrin.gif
Ну дык и как насчет предоставления "дезактевированного" варианта хранения таблиц
CRC16 ?
или за свои слова мы не очень отвечаем ?

P.S. Очень советаю Вам придумать ходы для отступления, у меня есть что Вам предложить и по
поводу просто переходов, ну там то же может оказаться не все гладко....
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Feb 14 2008, 19:37
Сообщение #103


Местный
***

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



Цитата(singlskv @ Feb 14 2008, 22:13) *
у меня есть что Вам предложить и по
поводу просто переходов...

Класс yeah.gif

Я уже весь в предвкушении 08.gif

Цитата(singlskv @ Feb 14 2008, 22:13) *
Ну дык и как насчет предоставления "дезактевированного" варианта хранения таблиц
CRC16 ?

Пжалуста (блин, все свои Ноу-Хау задарма раздаю smile.gif )

............................... Блок данных №1 ....................
$0F00: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$0F08: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$0F10: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$0F18: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$0F20: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$0F28: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$0F30: rjmp Crash
............
............................... Блок данных №4 ....................
$1000: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$1008: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$1010: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$1018: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$1020: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$1028: 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx 3xxx
$1030: rjmp Crash
............

где вместо крестиков Вы и пишите свою данные (хоть таблицу, хоть... что хошь)

Сообщение отредактировал Дон Амброзио - Feb 14 2008, 19:44


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 14 2008, 20:17
Сообщение #104


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Дон Амброзио @ Feb 14 2008, 22:37) *
.............

Не, не пойдет....
давайте реальный пример использования, пусть будеть например модбас и соответственно рассчет
CRC16 через таблицы...
Ну и конечно со всеми ловлями всех непредсказуемых переходов...

Цитата(Дон Амброзио @ Feb 14 2008, 22:37) *
где вместо крестиков Вы и пишите свою данные (хоть таблицу, хоть... что хошь)
Кстати, еще хотелось бы услышать Ваше объяснение на тот случай если одновременно со сбоем
PC произойдет сбой при считывании данных из области флеш...


Цитата(Дон Амброзио @ Feb 14 2008, 22:37) *
Класс yeah.gif
Я уже весь в предвкушении 08.gif
Ну а что бы Вам думалось веселее, давайте рассмотрим в заявленном
контексте две инструкции: ICALL и IJMP...
Никаких мыслей еще не появилось ?
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Feb 14 2008, 20:21
Сообщение #105


Местный
***

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



Цитата(singlskv @ Feb 14 2008, 22:59) *
Не, не пойдет....
давайте реальный пример использования, пусть будеть например модбас и соответственно рассчет
CRC16 через таблицы...
Ну и конечно со всеми ловлями всех непредсказуемых переходов...

Ага..Щаззз....А Вы потом этот код в свой проектик или в свою кандидатскую... А мне , как изобретателю кушиш с маслом biggrin.gif

А если серьёзно, то мне кажется тут и так всё прозрачно.. Я Вам пищу принёс..А Вы ещё требуете чтоб я разжевал, да ещё и в рот положил? Да я бы сделал и это, но мне сейчас нЕкогда..Работы много

Цитата(singlskv @ Feb 14 2008, 22:59) *
Кстати, еще хотелось бы услышать Ваше объяснение на тот случай если одновременно со сбоем
PC произойдет сбой при считывании данных из области флеш...

Давайте всё же не будем валить всё в одну кучу и будем "отделять мух от котлет". Здесь тема только про "ловлю" случайных джампов


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post

19 страниц V  « < 5 6 7 8 9 > » 
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 10:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.0149 секунд с 7
ELECTRONIX ©2004-2016