|
Как заполнить свободную память?, программная защита |
|
|
|
 |
Ответов
|
Sep 27 2007, 15:27
|
Участник

Группа: Участник
Сообщений: 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 Удачи
|
|
|
|
|
Sep 27 2007, 20:57
|
Участник

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

|
Цитата(defunct @ Sep 27 2007, 20:10)  У Вас либо очень простая программа, либо Вы один из немногих гениев которые не допускают ошибок. WDT не защищает от помех, WDT может защитить от программных ошибок - зацикливания, тупиковых состояний КА и т.п. Ни то , ни другое . Что касается программ , то по обьёму кода программы конечно же разные , но как правило не менее 30-40К памяти программ ( все программы пишу на асме ) Так что не очень они маленькие , я вас уверяю . И проц шуршит аж воротник заворачивается - прерывание на прерывании . И пожалуйста только не надо приводить старые как мир догмы - писали бы на Си . . . Я и на Си могу , но для меня асм комфортнее . Гением конечно же себя не считаю , и ошибки бывают , кто не грешен ? WDT не защищает от помех, WDT может защитить от программных ошибок - зацикливания, тупиковых состояний КА и т.п. Это что же получается - производители вводят в проц апаратные вещи для защиты от кривых программистов ? Неожиданная мысль , очень неожиданная . На самом деле это не совсем так . Вы не задумывались почему некоторые процы (рядовые) ( например MSC-51) работают на 50 MHz , а у AVRов пока планка в 20-24 MHz ? Дело в том , что у AVRов выборка команды производится за 1 такт генератора , но за 4 внутренних такта , которые формируются специальной внутренней аппаратной схемой .Так вот - сбой хотя бы по одному из этих подтактов приводит к разным непредсказуемым последствиям (и подвисаниям в том числе ) . Именно поэтому важна хорошая форма тактовых импульсов , так как на основании её формируются внутренние подтакты . Некоторые производители ( NEC например) применяют для защиты от такого рода вещей специальный аппаратный механизм правильной выборки команды из памяти программ. Именно для подобных вещей держат псов , а не для защиты от программистов !!! . Небольшое лирическое отступление-: когда - то давно , когда я ещё был студентом , нас то и дело доставал препод по программированию составлением алгоритмов . Всех это уж очень достало , и я один раз в сердцах спросил - когда же вместо вской ерунды мы начнём изучать языки программирования ?. На что получил ответ , который оценил позднее - язык программирования это инструмент , а программа - это исскусство и часть души . В корявых руках и скрипка Страдивари будет не более чем куском дерева . Умный был ( надеюсь ещё есть ) препод . Лет 10 назад делал одну програмку . Писал , она работала , дописывал , она опять работала , пока в один момент всё не стало работать очень коряво . . . ( справедливости ради надо сказать что у неё была очень сложная структура ) . Разбираться в огромном куске кода небыло никакого желания - крышу срывало. Было принято волевое решение - взять и разрисовать прогу на блоки , сначала крупные , потом помельче , потом ещё мельче . В итоге ( после месяца спания по 4-5 часов за ночь ) - получилась структурная схема программы. Она была очень тщательно осмыслена и проверена на логику работы . Меня тогда удивило - по структурной схеме мне только и оставалось что просто тупо подставлять ассемблерные операторы , что у меня получалось очень и очень быстро ( за неделю одолел 32К ). Кстати , предыдущий кусок весил 36К . Первое включение после компиляции и прошивки и . . . . . каково же было моё удивление , что программа заработала сразу , и без малейших шороховатостей . Я после включения не изменил в программе ни одной буквы , так до сих пор и работает . После этого случая я любую программу пишу именно так - сначала хорошо обдумываю всю структуру программы , тратя на это прилично времени , затем начинаю на бумаге делать наброски , потом всё чётче и чётче вырисовывается программа , нечто наподобе проявки фотографии , или прорисовки художника. Совет - хотите писать хорошие программы - делайте именно так - я вас уверяю - времени в итоге тратится меньше , сохраняется "бумажная копия" работы программы ( в которой может разобраться при необходимости практически любой грамотный человек , даже далёкий от программирования ). А ошибки ищются на ура . И никакой язык программирования не сравнится по наглядности ( Си в том числе ) . . . Поэтому лично для меня какие из операторов подставить в программу - асм или Си особого значения не имеет . От кривых рук программиста не спасёт ни собака , ни другие аппаратные вещи .
|
|
|
|
|
Sep 28 2007, 11:45
|
Участник

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

|
Цитата(Rst7 @ Sep 28 2007, 14:18)  Это откуда же такое тайное знание? Вы видели исходник?  Достаточно хотя бы посмотреть в документации на любой AVR тактирование ALU , и попытаться разобраться как вообще происходит работа за 1 такт . MSC-51 делили такты на 12 от нечего делать ? Сейчас MSC-51 как правило делят на 4 , или поступают аналогично AVR. Если верите больше своим глазам , то можите поставить эксперимент : берёте AVR , запускаете на 16 MHz например . Затем вместо 16 MHz запаивает например 27 MHz ( можно найти кристаллы , которые запустятся на этой частоте ) . Так вот работать они будут медленнее чем на 16 MHz . Почему надеюсь обьяснять ненадо ? Цитата(Rst7 @ Sep 28 2007, 15:39)  Проблема в том, что на сбросе этого диода НЕТ. Да , ошибся , извиняюсь . Так а кто его мешает поставить ? ( желательно Шоттки )
|
|
|
|
|
Sep 28 2007, 13:28
|
Участник

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

|
Цитата(Petka @ Sep 28 2007, 14:57)  не придумывайте велосипед. есть такой вид микросхем, ресеттеры/мониторы питания называются. размер их будет поменьше чем резистор + диод + конденсатор Если внимательно перечитаете что мной написано , то увидите что там как раз и предлагался преимущественно супервизор ( и даже назван какой например ( MCP-130 - 450 ), и написано что в случае . . . бедности применять "резистор + конденсатор + диод +. . ." . И никто и не спорил что интегральный супервизор на голову выше "резистор + конденсатор + диод +. . ." Но супервизору и самому нужна блокировочная ёмкость по питанию. А подтягивающий резюк уже встроен в этот супервизор . Моя фраза "Если внешний сброс не применяешь" задумывалась как "Если внешний супервизор не применяешь" , что возможно и вызвало некоторое недопонимание . Т.е под сбросом в данном случае подразумевался супервизор , а не пин проца .
|
|
|
|
|
Sep 30 2007, 09:41
|
Участник

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

|
Цитата(Petka @ Sep 28 2007, 17:03)   Такого вы не предлагали, это раз. Схему с конденсатором и диодом я не рекомендую использовать даже в "случае бедности" т.к. и в этом случае надёжность будет только хуже чем просто резистор 1-10кОм на питание.  Пожалуйста повнимательнее читайте !!!. Позволю себя процетировать : "Очень непомешает внешний супервизор с отличным от Brown-out проца значением . Т.е. например Brown-out проца заводишь на 4 вольта , а внешний применяешь со значением 4,5 вольта ( например MCP-450 производства Microchip )". Я это не писал ? Только немного ошибся в названии супервизора , вместо MCP-450 правильно должно быть MCP-100-450 ( машинальная ошибка ). Это во первых . А теперь приведите аргументы против резистор + конденсатор + диод. Аргументы типа нерекомендую не считаю аргументами . . .
|
|
|
|
Сообщений в этой теме
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     defunct Цитата(Yuriy_AVR @ Sep 28 2007, 14:45) За... Sep 28 2007, 11:47      IceS Цитата(Petka @ Sep 28 2007, 15:57) не при... Sep 28 2007, 12:56         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
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|