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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Глюк симулятора в AVR Studio v4.16 build 628, А вот в v3.56 всё было нормально
alag57
сообщение May 27 2010, 15:36
Сообщение #31


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

Группа: Участник
Сообщений: 130
Регистрация: 26-06-06
Из: Березовский
Пользователь №: 18 355



Цитата(galjoen @ May 27 2010, 15:15) *
Пока не проверил я АВРСИМУЛЯТОР2 - нет доступа к широкому каналу интернета, чтобы последнюю версию AVR Studio скачать.

Да нет там вашего кристалла. Я пробовал воспроизвести глюк на версии 700 - ничего не получается, отрабатывает нормально и с блоком 100 слов и 1000. Пробовал только на одном блоке. Кстати, посмотрите версию вашего кристалла при открытом проекте - Help->About->Version. У меня - AT90CAN128 170.
Go to the top of the page
 
+Quote Post
=GM=
сообщение May 27 2010, 15:50
Сообщение #32


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(aleksey_g @ May 27 2010, 14:18) *
Посмотрел у себя. Студия 4.18 Build 692. Для АВРСИМУЛЯТОР2 Ваш контроллер недоступен

Странно, у меня студия 4.18 Build 692, а проц AT90CAN128 почему-то доступен.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
aleksey_g
сообщение May 28 2010, 06:17
Сообщение #33


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

Группа: Свой
Сообщений: 151
Регистрация: 11-01-06
Из: Украина Ровно
Пользователь №: 13 066



Цитата(=GM= @ May 27 2010, 18:50) *
Странно, у меня студия 4.18 Build 692, а проц AT90CAN128 почему-то доступен.

Для AVRSIMULATOR - доступен. А для AVRSIMULATOR2 - нет.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
galjoen
сообщение May 28 2010, 08:15
Сообщение #34


Знающий
****

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



Цитата(alag57 @ May 27 2010, 19:36) *
Да нет там вашего кристалла. Я пробовал воспроизвести глюк на версии 700 - ничего не получается, отрабатывает нормально и с блоком 100 слов и 1000. Пробовал только на одном блоке. Кстати, посмотрите версию вашего кристалла при открытом проекте - Help->About->Version. У меня - AT90CAN128 170.

У меня так:
Цитата
AVR Studio 4.16.628
GUI Version 4, 16, 0, 626
AVR Simulator 1, 0, 2, 1
AT90CAN128 170

Operating System
Major 5
Minor 1
PlatformID 2
Build 2600
Service Pack 3

Plugins:

AvrPluginAvrAsmObject 1, 0, 0, 47
AvrPluginavrgccplugin 1, 0, 0, 10
Stk500Dll 1, 0, 1, 11


А в доступных для АВРСИМУЛЯТОР 2 кристаллах не вижу ни одного с 128 кбайт флеша и чтобы у него RAMPZ0 был bit0 по адресу 0x3B.

А м.б. 1000 слов мало для сбоя? Вот у меня на 2-м блоке сбивается: 0x7E...0x1CB6 - это 0x1C38 = 7224 слов 14448 байт.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 28 2010, 09:00
Сообщение #35


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Предлагаю уважаемым модераторам вычленить из этой темы разговоры
о целостности прошивки в отдельную тему например "Как и когда стоит защищать программу"


Цитата(=GM= @ May 27 2010, 01:53) *
Не скажите, уже и в MD5 нашли дырки,
Простите, а каков размер вашего бинарника?
Цитата
так что у меня еще и seed буфер стоит и динамически меняется этой самой федерацией автомотоспорта на ходу.
А что такое "seed буфер"?
Цитата
Ну вообще-то да, но как вы догадались?
Автомобили - моя страсть. Сам на Subaru зажигаю... И вообще, иногда я очень сообразителен:-)

Цитата(galjoen @ May 27 2010, 13:15) *
Раз уж зашла речь по автомобили, то там как раз это нужно. Допустим кто-то написал прошивку для ЭБУ, откатал на машине, и не хочет чтобы другие таблицы его настроек меняли (тюнинговали). А прошивку эту зашифровать в принципе невозможно - ну нет в загрузчике у стандартного ЭБУ никакого шифрования. И таблицы скрыть/зашифровать тоже невозможно, т.к. прошивка на 70% из них состоит. Да на расшифровывание и времени нет. Вот тут как раз проверка приложением собственной целостности и нужна.
Это вы о внешнем еепром толкуете? То это несколько другая тема и решаться ИМХО она может иначе. Я предпочитаю при разработке устройства заранее об этом подумать, чтобы потом не заморачиваться с изысками, а сосредоточится лишь на сути...

И у меня складывается впечатление, что Вы не читаете того, что я уже написал:
Цитата(demiurg_spb @ May 24 2010, 14:08) *
На мой взгляд - никакого практического смысла нет. И пусть даже оно работает месяцами без перезагрузки - шансы успеть отловить такую бяку на лету очень малы (по моим оценкам сильно меньше 1%).
Что есть сказать на сей счёт? А разговоры о MD5 - это уже вторично...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
galjoen
сообщение May 28 2010, 09:30
Сообщение #36


Знающий
****

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



Цитата(demiurg_spb @ May 28 2010, 13:00) *
Это вы о внешнем еепром толкуете? То это несколько другая тема и решаться ИМХО она может иначе. Я предпочитаю при разработке устройства заранее об этом подумать, чтобы потом не заморачиваться с изысками, а сосредоточится лишь на сути...

Не только внешний eeprom, я о тех случаях, когда программа пишется для уже имеющегося устройства, причём чужой разработки.
Цитата(demiurg_spb @ May 28 2010, 13:00) *
И у меня складывается впечатление, что Вы не читаете того, что я уже написал:
Что есть сказать на сей счёт?

Не знаю, как вы считаете шансы, м.б. объясните, но у меня получается более 50%.
1. Запорчен код исполняемой команды, которая выполнилась не правильно -> ватчдог, зацикливание на подсчёте CRC.
2. Запорчен код исполняемой команды, которая не выполнилась -> зацикливание на подсчёте CRC.
3. Запорчены данные в таблице -> зацикливание на подсчёте CRC.

В моём случае это была защита от продолжительной работы с испорченными данными в таблице. Вот это самое страшное, что может случится. Цикл подсчёта CRC32, которая считается по байту за раз, для всего флеша составляет 1..2 секунды. Ну вот и получается, что через 2 секунды такая ситуация будет отловлена. А за 2 секунды ничего страшного в принципе случится не может.

Ну а самый главный аргумент, это то, что такая защита делается очень просто. Побитное вычисление CRC32 по слову за раз, с вызовами, таблицами и т.д. - у меня это 88 строчек на асме, и 6 байт ОЗУ. И кочует из проекта в проект. Не понимаю, о чём тут спорить?
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 28 2010, 09:53
Сообщение #37


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(galjoen @ May 28 2010, 13:30) *
Не знаю, как вы считаете шансы, м.б. объясните, но у меня получается более 50%.
Пусть даже вы считаете CRC по нескольку байт за раз посещения фоновой программы, а результат валидности флеша получаете лишь когда прошлись по нему целиком.
Пример с потолка: 32К флеша проверяем по 8 байт за проход: 32K/8 = 4K.
Грубо вероятность выполнения битой программы равна (100 - 100/4К) = 99,975%

Единственное что может иногда утешить:
Цитата(galjoen @ May 28 2010, 13:30) *
А за 2 секунды ничего страшного в принципе случится не может.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
=GM=
сообщение May 28 2010, 09:59
Сообщение #38


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(demiurg_spb @ May 28 2010, 08:00) *
1) Простите, а каков размер вашего бинарника?

2) А что такое "seed буфер"?

Памяти у меня 128 КБ, забито под 100 КБ, но MD5 алгоритм тестирует всю память.
Seed buffer это двойное слово (64 бита), которое вгрубе пристыковывается к началу тестируемой памяти и т.о. влияет на выходной context. Алгоритм работает в фоне, непрерывно вычисляя MD5, а посев никто не знает, я его получаю по кану от FIA, которая имеет весь мой код и может самостоятельно посчитать MD5.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 28 2010, 10:07
Сообщение #39


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(=GM= @ May 28 2010, 13:59) *
Памяти у меня 128 КБ, забито под 100 КБ, но MD5 алгоритм тестирует всю память.
Seed buffer это двойное слово (64 бита), которое вгрубе пристыковывается к началу тестируемой памяти и т.о. влияет на выходной context. Алгоритм работает в фоне, непрерывно вычисляя MD5, а посев никто не знает, я его получаю по кану от FIA, которая имеет весь мой код и может самостоятельно посчитать MD5.
Жёстко там у Вас...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
galjoen
сообщение May 28 2010, 10:38
Сообщение #40


Знающий
****

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



Цитата(demiurg_spb @ May 28 2010, 13:53) *
Пусть даже вы считаете CRC по нескольку байт за раз посещения фоновой программы, а результат валидности флеша получаете лишь когда прошлись по нему целиком.
Пример с потолка: 32К флеша проверяем по 8 байт за проход: 32K/8 = 4K.
Грубо вероятность выполнения битой программы равна (100 - 100/4К) = 99,975%

Не понял, вы считаете, что между проверками выполняется ВСЯ программа?

Да собственно, и не так важно однократное выполнение битой команды. На 80% это приведёт к срабатыванию ватчдога. Так же может сработать контроль стека, основных регистров и т.д. Но важно, чтобы работа при наличии ошибки не продолжалась.
Кстати, у меня всё в лог пишется. Так я ещё ни одного запуска процессора по срабатыванию ватчдога там не видел, тем более ошибки CRC. Но это не значит, что ватчдог не нужен.
Цитата(=GM= @ May 28 2010, 13:59) *
Памяти у меня 128 КБ, забито под 100 КБ, но MD5 алгоритм тестирует всю память.

У меня в той программе пришлось несколько таблиц во второй половине FLASH отдать пользователю, соответственно CRC32 там не считается. CRC32 я считаю по самодельному производящему многочлену, чтобы зная многочлен не изменили область памяти так, что общая CRC32 останется такой же.

Цитата(=GM= @ May 28 2010, 13:59) *
посев никто не знает, я его получаю по кану

Странно, а что почитать из кана никто не может? Пусть там даже и зашифровано всё. Поставить фильтр не некоторые ID, и подменять их...
Go to the top of the page
 
+Quote Post
=GM=
сообщение May 28 2010, 10:47
Сообщение #41


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(demiurg_spb @ May 28 2010, 09:07) *
Жёстко там у Вас...

Те ещё зверюги..сколько крови у меня попили. К примеру, ещё потребовали цифровую фильтрацию Баттерворта устроить для аналогового выхода, пришлось поставить 3 биквада и использовать 64-битные коэффициенты.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 28 2010, 10:49
Сообщение #42


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(galjoen @ May 28 2010, 14:38) *
Не понял, вы считаете, что между проверками выполняется ВСЯ программа?
Иногда вся, иногда (чаще) нет поэтому я и не настаиваю на сотых долях процента, а говорю о величине порядка процента.
Цитата
Да собственно, и не так важно однократное выполнение битой команды. На 80% это приведёт к срабатыванию ватчдога.
Это оценить сложно, всё от логики программы сильно зависит и от размера стека...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
=GM=
сообщение May 28 2010, 11:10
Сообщение #43


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(galjoen @ May 28 2010, 09:38) *
Странно, а что почитать из кана никто не может? Пусть там даже и зашифровано всё. Поставить фильтр не некоторые ID, и подменять их...

А толку? Ну прочитал кто-то посев, дальше-то что делать? У меня MD5 для 128 КБ считается за 0.3 сек в фоне, и хотя флеш-память неизменна, но выдавать запомненный digest нет смысла, т.к. посев его изменяет. Как и с помощью чего изменить память так, чтобы MD5 был одинаковым? А ещё надо полезную работу делать, у меня основной цикл 300 мкс.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
alag57
сообщение May 28 2010, 14:08
Сообщение #44


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

Группа: Участник
Сообщений: 130
Регистрация: 26-06-06
Из: Березовский
Пользователь №: 18 355



Цитата(galjoen @ May 28 2010, 14:15) *
А м.б. 1000 слов мало для сбоя? Вот у меня на 2-м блоке сбивается: 0x7E...0x1CB6 - это 0x1C38 = 7224 слов 14448 байт.

Попробую 2-3 блока. Сначала данных было маловато. Я уж подумал - 1000 слов - куда уж больше smile.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 16th July 2025 - 10:13
Рейтинг@Mail.ru


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