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

 
 
> Как заполнить свободную память?, программная защита
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
Ответов
aaarrr
сообщение Sep 27 2007, 23:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Вставлю-ка я свои 5 копеек:
Как уже упоминалось ранее, значение 0xFFFF - это код команды SBRS R31, 7. Но никто почему-то не обратил внимания на то, что при R31.7=1 процессор может и не выйти на нулевой адрес. Так что заполнение имеет некоторый смысл (по крайней мере, заполнение последнего слова памяти).
Go to the top of the page
 
+Quote Post
defunct
сообщение Sep 28 2007, 10:35
Сообщение #3


кекс
******

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



Цитата(aaarrr @ Sep 28 2007, 02:27) *
Вставлю-ка я свои 5 копеек:
Как уже упоминалось ранее, значение 0xFFFF - это код команды SBRS R31, 7. Но никто почему-то не обратил внимания на то, что при R31.7=1 процессор может и не выйти на нулевой адрес.

Вы имеете в виду, выход на адрес 0x0001 вместо 0x0000. Да действительно возможно, но не проще ли будет по адресу 0x0001 поставить JMP туда же куда делается в инструкции по адресу 0x0000. Тем более вы упускаете тот факт, что процессор может прыгнуть в несуществующую область памяти, при чтении которой возвращается тот же 0xFFFF, вероятность прыжка в несуществующую область памяти прямопропорциональна количеству оной, например для M16 вероятность прыжка в несуществующую область памяти = (128 - 16)/128 = 7/8 = 0.875

Цитата(zltigo @ Sep 28 2007, 10:59) *
В принципе до этого эффекта Watchdog в этом софте размером порядка 300K даже не активировался. Давить программные ошибки Watchdog-ом чистый моветон sad.gif

Позволю себе несогласиться с вашим выводом.
Про моветон можете говорить в форуме по АРМ, у которого имеется возможность обработать или "задампить" крашевую ситуацию (DABT/PABT/UNDF). У AVR'ра нет обработчиков исключений и в промышленных изделиях только WDT может подстраховать в случае серьезного программного сбоя. WDT в AVR можно рассматривать как обработчик исключений. Считаю, что конечный продукт на AVR с отключенным WDT - дилетанство, такое же как если в изделии оставить чип в отладочном режиме (фуз OCDEN).
Go to the top of the page
 
+Quote Post
AndreyKeil
сообщение Jan 31 2008, 20:17
Сообщение #4


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

Группа: Свой
Сообщений: 96
Регистрация: 16-11-05
Из: г.Екатеринбург
Пользователь №: 10 930



Цитата(defunct @ Sep 28 2007, 15:35) *
... Считаю, что конечный продукт на AVR с отключенным WDT - дилетанство, такое же как если в изделии оставить чип в отладочном режиме (фуз OCDEN).


Не могли бы мне обьяснить назначение фуза OCDEN. Вроде бы официальное название его "разрешение отладки", но при любом значении, отладка по JTAGу всегла работает.
И почему плохо оставлять этот фуз включенным (OCDEN=0, как я понял)?
Go to the top of the page
 
+Quote Post
defunct
сообщение Jan 31 2008, 21:27
Сообщение #5


кекс
******

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



Цитата(AndreyKeil @ Jan 31 2008, 23:17) *
Не могли бы мне обьяснить назначение фуза OCDEN. Вроде бы официальное название его "разрешение отладки", но при любом значении, отладка по JTAGу всегла работает.
И почему плохо оставлять этот фуз включенным (OCDEN=0, как я понял)?

Работает JTAG, но например войдя в режим PowerSafe/PowerDown работа JTAG'a прекратится и вы словите "связь с чипом потеряна".

С включенной отладкой (OCDEN==0) такого не произойдет, т.к. режимы энергосбережения будут просто эмулироваться, цитата из даташита:

If the On-chip debug system is enabled by the OCDEN Fuse and the chip enter Power
down or Power save sleep mode, the main clock source remains enabled. In these
sleep modes, this will contribute significantly to the total current consumption.


Кроме того, включение OCDEN для некоторых AVR'ок подключает регистр OCDR (регистр для общения с отладчиком из отлаживаемой программы). Через этот регистр printf'ом можно выводить сообщения в консоль отладчика. Если вы пользуетесь IAR'овским компилятором и отладчиком, то вероятно уже сталкивались с "Terminal I/O" (и можете себе представить насколько без него хуже). smile.gif

Цитата из даташита:

The OCDR Register provides a communication channel from the running program in the
microcontroller to the debugger. The CPU can transfer a byte to the debugger by writing
to this location.
At the same time, an Internal Flag; I/O Debug Register Dirty – IDRD – is
set to indicate to the debugger that the register has been written. When the CPU reads
the OCDR Register the 7 LSB will be from the OCDR Register, while the MSB is the
IDRD bit. The debugger clears the IDRD bit when it has read the information.
In some AVR devices, this register is shared with a standard I/O location. In this case,
the OCDR Register can only be accessed if the OCDEN Fuse is programmed
, and the
debugger enables access to the OCDR Register. In all other cases, the standard I/O
location is accessed.
Refer to the debugger documentation for further information on how to use this register.



Итого с включенным OCD потребление всегда высокое, потребление больше чем обычно и имеется дырка для скачивания вашей прошивки из чипа. Стоит ли оставлять OCD включенным? Вывод можете сделать сами, а можно опять же довериться цитате из даташита:

Never ship a product with the OCDEN Fuse programmed regardless of the setting of
Lock bits and the JTAGEN Fuse.
A programmed OCDEN Fuse enables some parts of
the clock system to be running in all sleep modes. This may increase the power
consumption.
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   Цитата(namelos @ Sep 25 2007, 16:38) Добр...   Sep 27 2007, 15:27
|- - defunct   Цитата(Yuriy_AVR @ Sep 27 2007, 18:27) Со...   Sep 27 2007, 16:10
||- - Yuriy_AVR   Цитата(defunct @ Sep 27 2007, 20:10) У Ва...   Sep 27 2007, 20:57
|||- - Rst7   Цитата(Yuriy_AVR @ Sep 27 2007, 23:57) Де...   Sep 28 2007, 10:18
||||- - 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
|- - ae_   Цитата(aaarrr @ Sep 28 2007, 08:27) Встав...   Sep 28 2007, 02:09
|- - zltigo   Цитата(defunct @ Sep 28 2007, 13:35) Счит...   Sep 28 2007, 10:49
||- - defunct   Цитата(zltigo @ Sep 28 2007, 13:49) Речь ...   Sep 28 2007, 11:07
- - 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 Текстовая версия Сейчас: 21st July 2025 - 16:46
Рейтинг@Mail.ru


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