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

 
 
> Как заполнить свободную память?, программная защита
namelos
сообщение Sep 25 2007, 12:38
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 77
Регистрация: 4-08-06
Пользователь №: 19 324



Доброе время суток, господа эмбеддеры.
Написал программу в AVRStudio-WinAVR 20070525(avr gcc 4.1.2) . В целях защиты хотелось бы заполнить сводное место Flash-памяти "rjmp 0" и посчитать CRC всего кода программы для проверки целостности. Подскажите пожалуйста, как мне это реализовать. Если можно поподробнее. Заранее спасибо.

Сообщение отредактировал namelos - Sep 25 2007, 13:31
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Yuriy_AVR
сообщение Sep 27 2007, 15:27
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 12-01-07
Из: Крым
Пользователь №: 24 378



Цитата(namelos @ Sep 25 2007, 16:38) *
Доброе время суток, господа эмбеддеры.
Написал программу в AVRStudio-WinAVR 20070525(avr gcc 4.1.2) . В целях защиты хотелось бы заполнить сводное место Flash-памяти "rjmp 0" и посчитать CRC всего кода программы для проверки целостности. Подскажите пожалуйста, как мне это реализовать. Если можно поподробнее. Заранее спасибо.

Чтобы проц поменьше слетал , очень важно !!! сделать правильную разводку питания на проц.
Как показывает опыт , при правильной разводке питания может даже не потребоваться собака ( если конечно же речь не идёт о сверхмощьных ЭМ помехах вблизи ) . Это первое .
Если хочется побольше надёжность , - совет - не жмитесь и ставьте внешний тактовый генератор . В крайнем случае , если такой возможности нет , то включите у проца бит максимальной амплитуды тактового сигнала . Но внешний генератор вне конкуренции .
Не жмитесь на фильтрацию по питанию .
Очень непомешает внешний супервизор с отличным от Brown-out проца значением . Т.е. например Brown-out проца заводишь на 4 вольта , а внешний применяешь со значением 4,5 вольта ( например MCP-450 производства Microchip ).
Если внешний сброс не применяешь , то через 1 килоом вывод сброса на питание проца , и его же через 0,1 микрофарата об землю.
Собаку я включал последний раз лет 5 назад . При тысячах едениц выпущенной продукции вроде бы нареканий нет.
Что касается rjmp 0 , то как правильно уже было замечено , должно быть jmp 0 , но смысл в этом нулевой .
При старте можно сделать проверку CRC кода (ATMEL в одном из app. показывает как это сделать ) , и если битая память , то заставить девайс перепрошить .
Если всё это делаешь , то забываешь о rjmp 0 и о jmp 0
Удачи
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 27 2007, 16:10
Сообщение #3


кекс
******

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



Цитата(Yuriy_AVR @ Sep 27 2007, 18:27) *
Собаку я включал последний раз лет 5 назад . При тысячах едениц выпущенной продукции вроде бы нареканий нет.

У Вас либо очень простая программа, либо Вы один из немногих гениев которые не допускают ошибок.
WDT не защищает от помех, WDT может защитить от программных ошибок - зацикливания, тупиковых состояний КА и т.п.
Go to the top of the page
 
+Quote Post
Yuriy_AVR
сообщение Sep 27 2007, 20:57
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 12-01-07
Из: Крым
Пользователь №: 24 378



Цитата(defunct @ Sep 27 2007, 20:10) *
У Вас либо очень простая программа, либо Вы один из немногих гениев которые не допускают ошибок.
WDT не защищает от помех, WDT может защитить от программных ошибок - зацикливания, тупиковых состояний КА и т.п.

Ни то , ни другое . Что касается программ , то по обьёму кода программы конечно же разные , но как правило не менее 30-40К памяти программ ( все программы пишу на асме ) Так что не очень они маленькие , я вас уверяю . И проц шуршит аж воротник заворачивается - прерывание на прерывании . И пожалуйста только не надо приводить старые как мир догмы - писали бы на Си . . . Я и на Си могу , но для меня асм комфортнее .
Гением конечно же себя не считаю , и ошибки бывают , кто не грешен ?
WDT не защищает от помех, WDT может защитить от программных ошибок - зацикливания, тупиковых состояний КА и т.п.
biggrin.gif wink.gif cool.gif
Это что же получается - производители вводят в проц апаратные вещи для защиты от кривых программистов ? Неожиданная мысль , очень неожиданная .
На самом деле это не совсем так . Вы не задумывались почему некоторые процы (рядовые) ( например MSC-51) работают на 50 MHz , а у AVRов пока планка в 20-24 MHz ? Дело в том , что у AVRов выборка команды производится за 1 такт генератора , но за 4 внутренних такта , которые формируются специальной внутренней аппаратной схемой .Так вот - сбой хотя бы по одному из этих подтактов приводит к разным непредсказуемым последствиям (и подвисаниям в том числе ) . Именно поэтому важна хорошая форма тактовых импульсов , так как на основании её формируются внутренние подтакты . Некоторые производители ( NEC например) применяют для защиты от такого рода вещей специальный аппаратный механизм правильной выборки команды из памяти программ. Именно для подобных вещей держат псов , а не для защиты от программистов !!! .
Небольшое лирическое отступление-: когда - то давно , когда я ещё был студентом , нас то и дело доставал препод по программированию составлением алгоритмов . Всех это уж очень достало , и я один раз в сердцах спросил - когда же вместо вской ерунды мы начнём изучать языки программирования ?.
На что получил ответ , который оценил позднее - язык программирования это инструмент , а программа - это исскусство и часть души . В корявых руках и скрипка Страдивари будет не более чем куском дерева
.
Умный был ( надеюсь ещё есть ) препод .

Лет 10 назад делал одну програмку . Писал , она работала , дописывал , она опять работала , пока в один момент всё не стало работать очень коряво . . . ( справедливости ради надо сказать что у неё была очень сложная структура ) . Разбираться в огромном куске кода небыло никакого желания - крышу срывало.
Было принято волевое решение - взять и разрисовать прогу на блоки , сначала крупные , потом помельче , потом ещё мельче . В итоге ( после месяца спания по 4-5 часов за ночь ) - получилась структурная схема программы. Она была очень тщательно осмыслена и проверена на логику работы .
Меня тогда удивило - по структурной схеме мне только и оставалось что просто тупо подставлять ассемблерные операторы , что у меня получалось очень и очень быстро ( за неделю одолел 32К ). Кстати , предыдущий кусок весил 36К .
Первое включение после компиляции и прошивки и . . . . . каково же было моё удивление , что программа заработала сразу , и без малейших шороховатостей . Я после включения не изменил в программе ни одной буквы , так до сих пор и работает . После этого случая я любую программу пишу именно так - сначала хорошо обдумываю всю структуру программы , тратя на это прилично времени , затем начинаю на бумаге делать наброски , потом всё чётче и чётче вырисовывается программа , нечто наподобе проявки фотографии , или прорисовки художника. Совет - хотите писать хорошие программы - делайте именно так - я вас уверяю - времени в итоге тратится меньше , сохраняется "бумажная копия" работы программы ( в которой может разобраться при необходимости практически любой грамотный человек , даже далёкий от программирования ). А ошибки ищются на ура . И никакой язык программирования не сравнится по наглядности ( Си в том числе ) . . . Поэтому лично для меня какие из операторов подставить в программу - асм или Си особого значения не имеет .
От кривых рук программиста не спасёт ни собака , ни другие аппаратные вещи .
Go to the top of the page
 
+Quote Post
Rst7
сообщение Sep 28 2007, 10:18
Сообщение #5


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

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



Цитата(Yuriy_AVR @ Sep 27 2007, 23:57) *
Дело в том , что у AVRов выборка команды производится за 1 такт генератора , но за 4 внутренних такта , которые формируются специальной внутренней аппаратной схемой


Это откуда же такое тайное знание? Вы видели исходник? wink.gif


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

Сообщений в этой теме
- namelos   Как заполнить свободную память?   Sep 25 2007, 12:38
- - GDI   А в чем защита если заполнить всю память джампами?...   Sep 25 2007, 12:50
- - namelos   ЦитатаА в чем защита если заполнить всю память джа...   Sep 25 2007, 13:00
|- - defunct   Цитата(namelos @ Sep 25 2007, 16:00) Испо...   Sep 25 2007, 14:26
- - Kuzmi4   2 namelos - а что для вас означают слова - ...   Sep 25 2007, 13:50
- - namelos   Цитата(defunct @ Sep 25 2007, 18:26) Пров...   Sep 25 2007, 14:58
|- - defunct   Цитата(namelos @ Sep 25 2007, 17:58) Сраз...   Sep 25 2007, 16:31
- - Kuzmi4   В приведённом вами примере собачка - идеальный вар...   Sep 25 2007, 15:02
- - namelos   Цитата(Kuzmi4 @ Sep 25 2007, 19:02) В при...   Sep 25 2007, 15:09
- - bodja74   Какова гарантия ,что не слетят начальные адресса к...   Sep 25 2007, 15:37
- - Т.Достоевский   Цитата(namelos @ Sep 25 2007, 16:38) В це...   Sep 25 2007, 16:46
- - GDI   Да зачем это делать то? Стертая флешь имеет вполне...   Sep 26 2007, 07:27
|- - Сергей Борщ   Цитата(GDI @ Sep 26 2007, 10:27) Другое д...   Sep 26 2007, 08:43
|- - Maik-vs   Цитата(Сергей Борщ @ Sep 26 2007, 12:43) ...   Sep 26 2007, 12:12
|- - Сергей Борщ   Цитата(Maik-vs @ Sep 26 2007, 15:12)...   Sep 26 2007, 14:39
- - namelos   Разобрался с Intel-hex файловым форматом, но в кон...   Sep 26 2007, 14:47
- - GDI   0d 0a = \r\n - это перевод строки   Sep 26 2007, 15:07
- - namelos   GDI, спасибо.   Sep 26 2007, 15:57
||||- - Yuriy_AVR   Цитата(Rst7 @ Sep 28 2007, 14:18) Это отк...   Sep 28 2007, 11:45
||||- - defunct   Цитата(Yuriy_AVR @ Sep 28 2007, 14:45) За...   Sep 28 2007, 11:47
||||- - Petka   Цитата(Yuriy_AVR @ Sep 28 2007, 15:45) Да...   Sep 28 2007, 11:57
||||- - IceS   Цитата(Petka @ Sep 28 2007, 15:57) не при...   Sep 28 2007, 12:56
||||- - Yuriy_AVR   Цитата(Petka @ Sep 28 2007, 14:57) не при...   Sep 28 2007, 13:28
||||- - Petka   Цитата(Yuriy_AVR @ Sep 28 2007, 17:28) Ес...   Sep 28 2007, 14:03
||||- - Yuriy_AVR   Цитата(Petka @ Sep 28 2007, 17:03) Тако...   Sep 30 2007, 09:41
||||- - Petka   Цитата(Yuriy_AVR @ Sep 30 2007, 13:41) А ...   Sep 30 2007, 18:29
|||- - Flasher   Поддерживаю. Только при таком подходе языки высоко...   Dec 2 2007, 21:43
||- - zltigo   Цитата(defunct @ Sep 27 2007, 19:10) WDT ...   Sep 28 2007, 07:59
|- - Petka   Цитата(Yuriy_AVR @ Sep 27 2007, 19:27) Ес...   Sep 28 2007, 08:51
|- - WHALE   Цитата(Petka @ Sep 28 2007, 12:51) В кото...   Sep 28 2007, 09:17
|- - Yuriy_AVR   Цитата(Petka @ Sep 28 2007, 12:51) В кото...   Sep 28 2007, 11:22
|- - Rst7   Цитата(Yuriy_AVR @ Sep 28 2007, 14:22) ...   Sep 28 2007, 11:39
- - CD_Eater   ЦитатаПосле этого случая я любую программу пишу им...   Sep 27 2007, 22:56
- - aaarrr   Вставлю-ка я свои 5 копеек: Как уже упоминалось ра...   Sep 27 2007, 23:27
|- - ae_   Цитата(aaarrr @ Sep 28 2007, 08:27) Встав...   Sep 28 2007, 02:09
|- - defunct   Цитата(aaarrr @ Sep 28 2007, 02:27) Встав...   Sep 28 2007, 10:35
|- - zltigo   Цитата(defunct @ Sep 28 2007, 13:35) Счит...   Sep 28 2007, 10:49
||- - defunct   Цитата(zltigo @ Sep 28 2007, 13:49) Речь ...   Sep 28 2007, 11:07
|- - AndreyKeil   Цитата(defunct @ Sep 28 2007, 15:35) ... ...   Jan 31 2008, 20:17
|- - defunct   Цитата(AndreyKeil @ Jan 31 2008, 23:17) Н...   Jan 31 2008, 21:27
- - aaarrr   AVR Studio декодирует так. Можно эмулятором провер...   Sep 28 2007, 02:24
|- - ae_   Цитата(aaarrr @ Sep 28 2007, 11:24) AVR S...   Sep 28 2007, 02:47
|- - aaarrr   Цитата(ae_ @ Sep 28 2007, 06:47) ".....   Sep 28 2007, 08:56
- - GDI   Цитатазначение 0xFFFF - это код команды SBRS R31, ...   Sep 28 2007, 06:42
- - AlexG   В процессе отладки с JTAG-ICE на ATmega128 сам наб...   Sep 28 2007, 07:26
- - _Pasha   Цитата(Yuriy_AVR @ Sep 28 2007, 00:57) Эт...   Sep 28 2007, 08:49
- - Kuzmi4   2 WHALE - не совсем. я так подозверваю что Petka и...   Sep 28 2007, 09:41
|- - Petka   Цитата(Kuzmi4 @ Sep 28 2007, 13:41) 2 WHA...   Sep 28 2007, 09:51
- - _Pasha   Цитата(defunct @ Sep 28 2007, 14:35) Вы и...   Sep 28 2007, 11:18
|- - defunct   Цитата(_Pasha @ Sep 28 2007, 14:18) для M...   Sep 28 2007, 11:38
- - _Pasha   Цитата(defunct @ Sep 28 2007, 15:38) да е...   Sep 28 2007, 11:55
- - Kuzmi4   2 Yuriy_AVR @ Sep 28 2007, 14:45 - и всё же, расск...   Sep 28 2007, 14:16
|- - Petka   Цитата(Kuzmi4 @ Sep 28 2007, 18:16) 2 Yur...   Sep 28 2007, 14:20
|- - Yuriy_AVR   Цитата(Kuzmi4 @ Sep 28 2007, 17:16) 2 Yur...   Sep 30 2007, 20:30
|- - xemul   Цитата(Yuriy_AVR @ Oct 1 2007, 00:30) 1) ...   Sep 30 2007, 20:49
|- - defunct   Цитата(Yuriy_AVR @ Sep 30 2007, 23:30) се...   Sep 30 2007, 22:34
|- - Petka   Цитата(Yuriy_AVR @ Oct 1 2007, 00:30) 3) ...   Oct 1 2007, 07:01
|- - Yuriy_AVR   Цитата(Petka @ Oct 1 2007, 10:01) Дело в ...   Oct 1 2007, 20:04
|- - defunct   Цитата(Yuriy_AVR @ Oct 1 2007, 23:04) Есл...   Oct 1 2007, 20:57
|- - xemul   Цитата(Yuriy_AVR @ Oct 2 2007, 00:04) Бр....   Oct 1 2007, 21:44
||- - galjoen   Цитата(xemul @ Oct 2 2007, 00:44) Можно п...   Feb 11 2008, 19:04
||- - Дон Амброзио   Цитата(galjoen @ Feb 11 2008, 22:04) +1 У...   Feb 11 2008, 20:34
||- - galjoen   Цитата(Дон Амброзио @ Feb 11 2008, 23:34)...   Feb 11 2008, 21:05
|- - CD_Eater   Цитата(Yuriy_AVR @ Oct 2 2007, 00:04) Воо...   Oct 2 2007, 03:01
- - Kuzmi4   Тогда вопрос многоуважаемого Yuriy_AVR - почему б...   Sep 28 2007, 14:23
|- - mdmitry   Цитата(Kuzmi4 @ Sep 28 2007, 18:23) Тогда...   Sep 28 2007, 20:18
|- - Proton   Цитата(mdmitry @ Sep 29 2007, 03:18) Очен...   Sep 29 2007, 04:41
- - namelos   Немного оффтопа, но хочется поблагодарить всех за ...   Sep 30 2007, 20:39
- - WHALE   х.. с ним с кварцем,насчет RC цепочки по сбросу хо...   Oct 1 2007, 14:29
|- - defunct   Цитата(WHALE @ Oct 1 2007, 17:29) насчет ...   Oct 1 2007, 15:50
- - namelos   Не хочется заводить новую тему, но раз зашел разго...   Nov 29 2007, 11:47
- - SasaVitebsk   Интересная деталь. Может быть поможет вам в споре....   Nov 29 2007, 12:19
- - _Pasha   Цитата(SasaVitebsk @ Nov 29 2007, 15:19) ...   Nov 29 2007, 14:49
- - Дон Амброзио   Цитата(namelos @ Sep 25 2007, 15:38) В це...   Feb 11 2008, 17:21


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 14:46
Рейтинг@Mail.ru


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