Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Своими руками

Своими руками Завершенные и текущие проекты, хард & софт

Ответ
 
Опции темы Опции просмотра
Старый 10.02.2010, 18:33   #26
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от DL36 Посмотреть сообщение
Набросал по быстрому, версия для тестирования
Спасибо, к вечеру постараюсь потестить.
Цитата:
Командная строка выглядит так
Код:
"C:\#Work\#Project\Project58\Cod\calcCrc32\calcCrc32.exe" -o C:\#Work\#Project\Project58\Cod\PICC18\Test.crc -e -q
Путь к программе обязательно обрамлять кавычками.
А путь к файлу проекта не надо в кавычки? Он же может содержать пробелы. У меня не содержит (еще со старых версий мплаба привычка), но в общем случае они там могут быть.

Цитата:
В качестве разделителя только один пробел. Особо контроль ошибок не делал.
Ну и побочный эффект образовался компилировать надо два раза изменения файла crc32.h МПЛАБ не видит.
Чтобы видел, надо сам h-файл включить в проект.
tester вне форума   Ответить с цитированием
Старый 10.02.2010, 18:39   #27
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/102
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от tester Посмотреть сообщение
А путь к файлу проекта не надо в кавычки? Он же может содержать пробелы. У меня не содержит (еще со старых версий мплаба привычка), но в общем случае они там могут быть.
Да думаю пробелы можно, там пока лог есть, несколько несуразный но
1 строка это то что получает программа в качестве командной строки
2
3
4
5 Имя файла настроек ХХХ.crc[/QUOTE]
Чтобы видел, надо сам h-файл включить в проект.[/QUOTE]
Включен но видимо в момент компиляции изменения не контролируются.
DL36 вне форума   Ответить с цитированием
Старый 11.02.2010, 01:13   #28
Алексей
Senior Member
 
Регистрация: 25.02.2007
Сообщений: 465
Вес репутации: 578/56
Алексей is a name known to allАлексей is a name known to allАлексей is a name known to allАлексей is a name known to allАлексей is a name known to allАлексей is a name known to all
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от DL36 Посмотреть сообщение
В названии рабочего я много лет первым символом # ставлю в этом случае при сортировке каталогов по имени он всегда вверху и искать не потребуется.
Хм, а я для этого использую символ "!". Такой не заметненький. Надо подумать, может в каких-то случаях будет удобно использовать и !, и #... , но "!" удобен тем, что не надо переключать раскладку клавиатуры на англ. язык.
Алексей вне форума   Ответить с цитированием
Старый 12.02.2010, 16:53   #29
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/102
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от Алексей Посмотреть сообщение
Хм, а я для этого использую символ "!". Такой не заметненький. Надо подумать, может в каких-то случаях будет удобно использовать и !, и #... , но "!" удобен тем, что не надо переключать раскладку клавиатуры на англ. язык.
А я и не переключаю, все файлы/ привычке на английском и называю.
DL36 вне форума   Ответить с цитированием
Старый 13.02.2010, 10:17   #30
photocanon
Senior Member
 
Регистрация: 08.04.2007
Адрес: Новосибирск!
Сообщений: 151
Вес репутации: 166/49
photocanon has a spectacular aura aboutphotocanon has a spectacular aura about
Отправить сообщение для photocanon с помощью ICQ Отправить сообщение для photocanon с помощью Skype™
По умолчанию Re: Самодиагностика PIC'ов

люди реально идея крутая!
вот подумал я сейчас и пришел к мнению что такое использовать хорошо против код-грабберов, если например отсылаешь прошивку комуто, он ее прошивает все работает, и вдруг у него ручки зачесались он чтото поменял и все кирдык вуаля не работает, т.е. по сравнению CRCшек идет команда бесконечного цикла с отключением прерываний, либо выполнение нормальное.
__________________
Нет ничего лучше когда апрель и -10 на дворе !
photocanon вне форума   Ответить с цитированием
Старый 13.02.2010, 10:19   #31
IgorV
Senior Member
 
Аватар для IgorV
 
Регистрация: 25.02.2007
Адрес: всем пока
Возраст: 49
Сообщений: 4,100
Вес репутации: 1883/106
IgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant futureIgorV has a brilliant future
Отправить сообщение для IgorV с помощью Skype™
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от photocanon Посмотреть сообщение
люди реально идея крутая!
вот подумал я сейчас и пришел к мнению что такое использовать хорошо против код-грабберов, если например отсылаешь прошивку комуто, он ее прошивает все работает, и вдруг у него ручки зачесались он чтото поменял и все кирдык вуаля не работает, т.е. по сравнению CRCшек идет команда бесконечного цикла с отключением прерываний, либо выполнение нормальное.
успокойся. Это не поможет. Наличие hex позволяет дизасмить (иначе как собираешься изменить прогу?) а в дизасме если уж разобрался что к чему настолько что можно изменить прогу, то выявить контрольную проверку уже не так сложно.
IgorV вне форума   Ответить с цитированием
Старый 13.02.2010, 13:20   #32
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/102
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от photocanon Посмотреть сообщение
люди реально идея крутая!
вот подумал я сейчас и пришел к мнению что такое использовать хорошо против код-грабберов, если например отсылаешь прошивку комуто, он ее прошивает все работает, и вдруг у него ручки зачесались он чтото поменял и все кирдык вуаля не работает, т.е. по сравнению CRCшек идет команда бесконечного цикла с отключением прерываний, либо выполнение нормальное.
Надо использовать свой загрузчик и хекс шифровать. От дилетантов спасет, стоимость взлома должна быть соизмерима с написанием нового кода. Crc поможет от некорректной работы загрузчика, сбоев при записи, утекания заряда...

Шифрование хекса планируется ... со временем.
DL36 вне форума   Ответить с цитированием
Старый 14.02.2010, 14:06   #33
DL36
Senior Member
 
Регистрация: 25.02.2007
Адрес: Херсон
Сообщений: 3,642
Вес репутации: 1983/102
DL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant futureDL36 has a brilliant future
По умолчанию 1.0.0.43

Очередное обновление.

Причесал пробелы, екзешник не запускался по этой причине.
Окультурил вывод в окно МПЛАБ теперь это выглядит так.
Код:
    calcCrc32 version 1.0.0.43 
 
Load CRC file C:\#Work\#Project\Project58\Cod\PICC18\Test.crc
 
Crc32Addr          = 0x600     Crc32 =0x6FDAA07D
Result for Rom     = 0xD6F3B9F2
Configuration Bits = 00 CE 11 1E 00 87 C0 00 0F C0 0F E0 0F 40
Добавил осмысленную информацию в лог.
Сделал обработку ошибок командной строки.

Ограничение. Запускать компиляцию про открытом екзешнике нельзя, будут ошибки поскольку все пишется в один лог.

Пока требуется следить за адресом Crc32A и прописывать его вручную.
Со временем будет поиск в хексе по сигнатуре.

Если появляется окно с ошибкой " Не найдена строка с адресом crc32" надо сохранить файл настроек с новіми данными и перекомпилировать проект.

Последний раз редактировалось DL36; 14.02.2010 в 14:12.
DL36 вне форума   Ответить с цитированием
Старый 03.08.2010, 15:05   #34
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

2 DL36: не занимаешься ли ты случайно расширением программы для PIC32? (Что-то я поздно спохватился, скоро программу сдавать, а CRC еще не сделал.)
tester вне форума   Ответить с цитированием
Старый 03.08.2010, 15:42   #35
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 48
Сообщений: 1,785
Вес репутации: 3611/100
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от DL36 Посмотреть сообщение
Для повышения надежности устройств часто применяют самодиагностирование контроллера, в ходе которого производится проверка целостности ROM, RAM и работоспособности внешних модулей. Предлагаемый модуль crc32.c предназначен для диагностирования ROM-памяти методом подсчета контрольной суммы ее содержимого и сравнения с зашитой константой. К нему прилагается утилита calcCrc32.exe для управления HEX-файлом: подсчета исходной контрольной суммы и упаковки ее в HEX-файл. Подробности - в файле readme.txt
http://www.remexpert.com/ipb/index.p...&showentry=168
Только увидел данную тему и очень удивился.
На мой взгляд (конечно субьективный) здесь спутаны цели и средства.
Конролировать CRC содержимого ROM программой, лежащей в ROM
и сравнивать с опорной CRC, также лежащей в ROM,
совершенно бессмысленно. Здесь есть очень и очень
мизерный смысл, если возможны какие то действия в случае несовпадения этих сумм.
И рассчитывать на соотношение размер контроля/размер прошивки
нет смысла.
Реально нужно считать общий CRC прошивки в буте.
И то !!! Если есть возможность расположить принимаемую прошивку
в пустой области ROM, далее проверить ее общую CRC а затем
переносить по адресам исполнения.
Если свежая прошивка больше, чем свободная область памяти -
даже в этом нет смысла. Можно контролировать CRC16 или CRC64
блока и требовать передачу блока повторно при несовпадении -
это дело. Или уж контролировать CRC всей прошивки в конце
и требовать повторную прошивку при несовпадении - тоже вариант.
В любом случае это вопрос качества реализации бута.
Но контроль CRC прошивки при старте - полный абсурд.
Реальны ситуации неправильного чтения ROM (без физ. порчи содержимого) при понижении питания контроллера ниже доп. предела.
Но это вопрос к использованию BOR или внешнего супервизора.
И контроль при старте также не имеет смысла.
Возможна порча ROM (как уже было сказано) от ионизирующего излучения,
температурных ударов, прямого попадания подкалиберного снаряда.
Но и тут этот контроль не имеет смысла.
Что делать если испорчен блок контроля ?
Или не совпадает CRC ?
Вариант - несанкционированно сработал кривой бут и прошил блок
мусором. Сработал контроль. И что он сделает ?
В чем смысл ?
Почему мы уверенны, что этот кривой бут не испортил блок контроля ?
Еще вариант - и бут(криворукий) и блок контроля лежат в
защищенном от записи блоке флеши.
Ок. Но остается вопрос - контроль выявил ошибку и решать в принципе не может.

А вот самотестирование как таковое - имеет реальный смысл.
RAM - тестирование косвенно проверяет и плату (когда RAM внешняя)
и контакты (если она в разьеме)
Модули - тестируется их работоспособность, поскольку
их можно пожечь статикой. Но при этом схемотехнически
делают режим кольцевой проверки (для RS232/485 к примеру)
или пишут/читают некое устройство хранения.
При этом тестируется и механика (если она есть) и БП (при записи флеши растет потребление) и частично плата и даже ПО (и ROM,
где оно лежит) устройства хранения.
Смысл тут ясен и очевиден.

В применении к однокристалкам это все просто надумано.
Хотя работа сделана хорошо, если бы видел смысл -
обязательно воспользовался бы, спасибо.
Petr вне форума   Ответить с цитированием
Старый 03.08.2010, 16:43   #36
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от Petr Посмотреть сообщение
Только увидел данную тему и очень удивился.
На мой взгляд (конечно субьективный) здесь спутаны цели и средства.
О, блин!.. Только на сахаре набодался по этой теме, теперь здесь

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

По поводу того, что делать, если CRC не сходится: тут зависит от назначения устройства, доступности, требований по надежности и отказоустойчивости, от обвеса и пр. Где-то (в самом-самом простом случае) можно поставить goto $. Но в большинстве случаев такое не прокатит (если бы виндоуз при ошибке делал goto $, это был бы полный п...) и нужен перевод в безопасный режим, код которого должен быть дважды (а иногда и трижды) прорезервирован в памяти (т.к. сбойным участком может оказаться именно этот код). В более сложных системах (сам пока не сталкивался, но разговаривал с людьми, которые такое делали) вся ROM разбита на "отсеки", для каждого из которых CRC вычисляется отдельно, и некоторые из них также прорезервированы.

(Прикольно... Я сейчас пишу материал на эту тему, а она сама собой поднимается на разных форумах. Помогает в структурировании изложения )
tester вне форума   Ответить с цитированием
Старый 03.08.2010, 16:56   #37
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 48
Сообщений: 1,785
Вес репутации: 3611/100
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от tester Посмотреть сообщение
О, блин!.. Только на сахаре набодался по этой теме, теперь здесь

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

По поводу того, что делать, если CRC не сходится: тут зависит от назначения устройства, доступности, требований по надежности и отказоустойчивости, от обвеса и пр. Где-то (в самом-самом простом случае) можно поставить goto $. Но в большинстве случаев такое не прокатит (если бы виндоуз при ошибке делал goto $, это был бы полный п...) и нужен перевод в безопасный режим, код которого должен быть дважды (а иногда и трижды) прорезервирован в памяти (т.к. сбойным участком может оказаться именно этот код). В более сложных системах (сам пока не сталкивался, но разговаривал с людьми, которые такое делали) вся ROM разбита на "отсеки", для каждого из которых CRC вычисляется отдельно, и некоторые из них также прорезервированы.

(Прикольно... Я сейчас пишу материал на эту тему, а она сама собой поднимается на разных форумах. Помогает в структурировании изложения )
Для любых систем, кроме однокристалок без внешней шины - соглашусь.
Но для оных не вижу смысла.
А вот безопасный режим - очень нужная вещь.
Туда можно вываливаться и в случае сбоев бута,
и в случае выявления недопустимых внешних условий и т.п.
Разве только и этот режим уже есть..... тогда, да, не будет лишним.
Petr вне форума   Ответить с цитированием
Старый 03.08.2010, 16:58   #38
timday
Senior Member
 
Регистрация: 07.03.2007
Адрес: Саратов
Возраст: 40
Сообщений: 385
Вес репутации: 308/53
timday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the roughtimday is a jewel in the rough
По умолчанию Re: Самодиагностика PIC'ов

ага... несовпало CRC, но мы на это забиваем и летим в космос... вот смысл ваших слов.
буть то небольшой сбой в чтении или электрон шальной залетел по флеш... неважно. но в ответственном устройстве - это должно быть аварийной ситуацией и устройство не должно запускаться... и тем более дергать лапками. Полность согласен c Tester-ом!
timday вне форума   Ответить с цитированием
Старый 03.08.2010, 17:05   #39
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от Petr Посмотреть сообщение
Для любых систем, кроме однокристалок без внешней шины - соглашусь.
Зря ты их отсекаешь. Уязвимое место - прошивка (или перепрошивка внутренним бутом). Во время прошивки произошла помеха, из-за чего один из транзисторов "недоинжектировал" заряд, но проверка ( при t=25Ц) прошла, и устройство пошло жить дальше. А попадет оно в t=-25Ц, или батарейка подсядет на 0.2В (этого может оказаться достаточно) - и этот "недозаряд" недосчитается.

Цитата:
Сообщение от Petr Посмотреть сообщение
Разве только и этот режим уже есть....
Ну, конечно, считается, что есть. Иначе проверку делать нет смысла.
tester вне форума   Ответить с цитированием
Старый 03.08.2010, 20:33   #40
vptr
Senior Member
 
Регистрация: 25.02.2007
Сообщений: 281
Вес репутации: 344/52
vptr is a jewel in the roughvptr is a jewel in the roughvptr is a jewel in the roughvptr is a jewel in the rough
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от timday Посмотреть сообщение
ага... несовпало CRC, но мы на это забиваем и летим в космос...
Правильно ли я понимаю, что здесь мы априори предпологаем, что испортится все что угодно в памяти, кроме той части флеши, где лежит прога тестирования и отработки чего-то там при не прохождении тестирования?
vptr вне форума   Ответить с цитированием
Старый 03.08.2010, 20:41   #41
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от vptr Посмотреть сообщение
Правильно ли я понимаю, что здесь мы априори предпологаем, что испортится все что угодно в памяти, кроме той части флеши, где лежит прога тестирования и отработки чего-то там при не прохождении тестирования?
Нет, неправильно. Испортиться может все. Просто, добавляя код проверки CRC программы, мы, во-первых, снижаем объем уязвимой части программы (вместо 64к - 0.5к), а во-вторых, если сбой не фатальный (т.е. при выполнении проверки не получим переход "хрен знает куда" или лишний return), то просто несрастется CRC, из-за чего можно будет принять решение, что с прошивкой непорядок (такой же нефалатьный сбой в остальной части программы, в отличие от функции подсчета CRC, может привести к фатальным последствиям).
tester вне форума   Ответить с цитированием
Старый 03.08.2010, 20:50   #42
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 48
Сообщений: 1,785
Вес репутации: 3611/100
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от tester Посмотреть сообщение
Зря ты их отсекаешь. Уязвимое место - прошивка (или перепрошивка внутренним бутом). Во время прошивки произошла помеха, из-за чего один из транзисторов "недоинжектировал" заряд, но проверка ( при t=25Ц) прошла, и устройство пошло жить дальше. А попадет оно в t=-25Ц, или батарейка подсядет на 0.2В (этого может оказаться достаточно) - и этот "недозаряд" недосчитается.
Вообще такая ситуация при использовании рекомендуемых алгоритмов
прошивки - абсолютно надуманная. Ибо эти алгоритмы(рекомендуемые) в большинстве
случаев довольно замысловаты и нацелены на исключение именно таких ситуаций.
Это я про программаторы. При самопрошивке это более реально.
Но !! Реальные технологические дефекты реальных микросхем
могут к такому приводить (ну там -25, -0,2В, кумулятивный снаряд и т.п.).
Так что - полностью убедил !
Petr вне форума   Ответить с цитированием
Старый 03.08.2010, 21:12   #43
vptr
Senior Member
 
Регистрация: 25.02.2007
Сообщений: 281
Вес репутации: 344/52
vptr is a jewel in the roughvptr is a jewel in the roughvptr is a jewel in the roughvptr is a jewel in the rough
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от tester Посмотреть сообщение
Нет, неправильно. Испортиться может все. Просто, добавляя код проверки CRC программы, мы, во-первых, снижаем объем уязвимой части программы (вместо 64к - 0.5к), а во-вторых, если сбой не фатальный (т.е. при выполнении проверки не получим переход "хрен знает куда" или лишний return), то просто несрастется CRC, из-за чего можно будет принять решение, что с прошивкой непорядок (такой же нефалатьный сбой в остальной части программы, в отличие от функции подсчета CRC, может привести к фатальным последствиям).
Это все правильно, но получаем следующее итого:
1. Прога самотестирования и отработки сбоя занимает мало места во Flash.
2. Вероятность ее повреждления низкая.
3. При выполнении п.1 и п.2 мы можем обнаружить сбой и отработать алгоритм защиты.
vptr вне форума   Ответить с цитированием
Старый 03.08.2010, 22:46   #44
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от vptr Посмотреть сообщение
Это все правильно, но получаем следующее итого:
1. Прога самотестирования и отработки сбоя занимает мало места во Flash.
2. Вероятность ее повреждления низкая.
3. При выполнении п.1 и п.2 мы можем обнаружить сбой и отработать алгоритм защиты.
1. Надо к этому стремиться с тем, чтобы снизить вероятность из п.2
2. Низкая, но не нулевая
3. Помимо вычисления общей CRC нужно иметь механизм проверки кода защищенного режима (и держать минимум две копии этого кода). Когда одна из этих копий прошла проверку, выставляется сигнатура в RAM. В случае обнаружения сбоя (не важно какого: общая CRC не сошлась, попали в обработчик трапа, в рантайме обнаружили несоответствие указателя стека ожидаемому значению и т.д. и т.п.) передаем управление правильной копии кода защищенного режима, предварительно проверив сигнатуру.

Это в двух словах. На первый взгляд - сложно и запутанно, но на самом деле ничего сложного.
tester вне форума   Ответить с цитированием
Старый 03.08.2010, 23:05   #45
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от Petr Посмотреть сообщение
Это я про программаторы. При самопрошивке это более реально.
Но !! Реальные технологические дефекты реальных микросхем
могут к такому приводить (ну там -25, -0,2В, кумулятивный снаряд и т.п.).
Так что - полностью убедил !
На программаторы меньше всего нареканий (если это, конечно, не какой-нибудь Понипрог или еще какой-то "Собери-на-коленке-прог"), самопрошивка - другое дело.
Но помимо самопрошивки есть еще уязвимые места: запредельные температуры, утечка заряда со временем (10 лет, 20 лет и т.д.), многократное переписывание (например первые 24F имели по даташиту 1000 циклов), радиация (не обязательно работать в условиях радиации, достаточно однажды оказаться под ее воздействием).
tester вне форума   Ответить с цитированием
Старый 03.08.2010, 23:11   #46
Art!P
Senior Member
 
Аватар для Art!P
 
Регистрация: 07.07.2008
Адрес: Татарстан
Возраст: 38
Сообщений: 627
Вес репутации: 175/49
Art!P has a spectacular aura aboutArt!P has a spectacular aura about
Отправить сообщение для Art!P с помощью ICQ
По умолчанию Re: Самодиагностика PIC'ов

проверка контрольной суммы осуществляется во время запуска МК
а можно во время работы проверять CRC памяти касающихся процедур, функции перед входом в них? )
Киньте пример или ссылку
Пасиб
Art!P вне форума   Ответить с цитированием
Старый 03.08.2010, 23:19   #47
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от Art!P Посмотреть сообщение
а можно во время работы проверять CRC памяти касающихся процедур, функции перед входом в них? )
Киньте пример или ссылку
Пасиб
В принципе, можно, если это для каких-то редких и очень ответственных функций в ответственном оборудовании. Перебарщивать тоже не надо. Пример кода посмотрите по ссылке DL36, но там пока только для PIC18.

Вы уверены, что Вам нужна защита такого уровня?
tester вне форума   Ответить с цитированием
Старый 04.08.2010, 00:55   #48
vptr
Senior Member
 
Регистрация: 25.02.2007
Сообщений: 281
Вес репутации: 344/52
vptr is a jewel in the roughvptr is a jewel in the roughvptr is a jewel in the roughvptr is a jewel in the rough
По умолчанию Re: Самодиагностика PIC'ов

Цитата:
Сообщение от tester Посмотреть сообщение
На программаторы меньше всего нареканий (если это, конечно, не какой-нибудь Понипрог или еще какой-то "Собери-на-коленке-прог"), самопрошивка - другое дело.
Но помимо самопрошивки есть еще уязвимые места: запредельные температуры, утечка заряда со временем (10 лет, 20 лет и т.д.), многократное переписывание (например первые 24F имели по даташиту 1000 циклов), радиация (не обязательно работать в условиях радиации, достаточно однажды оказаться под ее воздействием).
ОФФ-ТОП
Тема интересная, но выводы не однозначные.
Если есть высокие требования к надежности, то здесь проверкой Flash не обойтись. Полезно воспользоваться проверенными правилами, а именно в рамках требований (нормы, правила, ГОСТы) к серьезным приборам выпускалось ТУ, в котором прописывались требования к прибору и как их проконтролировать. Каждый выпускаемый прибор проходил приемо сдаточные испытания (ПСИ), которые включали в себя много разных воздействий на прибор и в том числе и испытания в климатической камере, с контролем работоспособности при отрицательной и положительной температуре. Естественно после этого никакие прошивки во Flash уже менять нельзя.
По тем же требованиям - при изменении программы (схемы) в приборе или технологии производства прибора, осуществляются квалификационные испытания. Здесь обычно прибор подвергается более жестким воздействиям (сравнительно с ПСИ) и после этого данный экземпляр уже не эксплуатируется (в музей или как писали - используется по согласованию)
Вот те требования которые нужны для получения надежного работающего изделия.

Использование бутлоадеров, самопальных программаторов без проведения описанных выше испытаний уже ничего не гарантирует. Тут может быть несколько потенциальных проблем для сбоя прошивки.

Понимаю людей, которые на конфе в сахаре не восприняли эту идею с определением сбоя FLASH. Возможно, для их приборов, которые выпускаются по указанным правилам, озвученные идеи не совсем понятны. После таких испытаний (квалификационные, ПСИ), вроде как и нечего уже переконтролировать, учитывая скользкий момент нахождения контролируемой программы в той же FLASh которую контролируют. Плюс к этому прибор имеет документ с условиями эксплуатации (температурный диапазон здесь указан). Если они нарушены, то уже не FLASH надо контролировать, а менять весь прибор, в нем может быть много потенциальных уязвимых мест, при нарушении условий эксплуатации. А если режимы эксплуатации не нарушены, то возникает вопрос - зачем контролировать только Flash (а не другие составляющие прибора).

Последний раз редактировалось vptr; 04.08.2010 в 01:06.
vptr вне форума   Ответить с цитированием
Старый 04.08.2010, 02:09   #49
tester
Super Moderator
 
Аватар для tester
 
Регистрация: 28.02.2007
Возраст: 42
Сообщений: 3,577
Вес репутации: 4386/125
tester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond reputetester has a reputation beyond repute
По умолчанию Re: Самодиагностика PIC'ов

Вовсе не оффтоп. Все правильно Вы написали.
Цитата:
Тема интересная, но выводы не однозначные.
Если есть высокие требования к надежности, то здесь проверкой Flash не обойтись.
Это так. Проверка Flash (и не обязательно Flash, может быть и просто ROM), а также RAM - это первый шаг. Шаг второй - анализ причин сброса. Далее должна следовать диагностика содержимого данных в энергонезависимой памяти (и по контрольным суммам, и по содержанию), внешних периферийных модулей, затем внешнего оборудования (если имеется). Далее - в ходе работы - постоянные проверки состояния программы, данных, результатов вычислений, адекватности работы внешних модулей, контроль стека и т.п. Также проверка настройки самого контроллера: разрешенные и запрещенные прерывания, конфигурация портов, конфигурация периферии, таймеров, памяти. Правильная настройка ловушек, контроль WDT, контроль времени выполнения отдельных узлов программы и т.д и т.п.

Все эти меры вкупе позволяют повысить отказоустойчивость ПО. Т.е., во-первых, недостаточно сделать просто диагностику ROM и считать, что ПО надежно, все меры нужны вкупе; во-вторых, все эти программные методы не заменят собой ни схемотехнические решения, ни испытания, а только дополнят их. Наконец, в-третьих, есть категории воздействия, которые не предусмотреть схемотехнически и не проверить при испытаниях; тривиальный пример - старение: автомобиль с контроллером на борту может прожить хоть 30 лет, а показатель Data Retention для Flash, например для PIC32, всего 20 лет; и не иметь в данном случае средств самодиагностики Flash - опасно для участников дорожного движения.

Конечно, надо адекватно выбирать меры защиты соответственно назначению прибора. Но исключать их совсем нельзя.
Цитата:
Полезно воспользоваться проверенными правилами, а именно в рамках требований к серьезным приборам (нормы, правила, ГОСТы) выпускалось ТУ, в котором прописывалось требование к прибору и как их проконтролировать.
Нет ГОСТов, регламентирующих написание программы. Вернее, они есть, но они предписывают "что" делать, а не "как" (к примеру МЭК 61508 ч.3). Я не очень себе представляю появление такого ГОСТа и что в нем может быть написано, ведь напортачить можно, и выполняя обычное сложение (например, сложить два положительных числа, а в результате получить отицательное).

Цитата:
Использование бутлоадеров, самопальных программаторов без проведения описанных выше испытаний уже ничего не гарантирует. Тут может быть несколько потенциальных проблем для сбоя прошивки.
Бутлоадер - вообще очень узкое место в устройстве (самопальные программаторы не рассматриваем, их можно применять только для домашних поделок). Но, как ни печально, бутлоадер в современных устройствах - явление очень частое, где-то навязанное конкуренцией на рынке, где-то обусловленное особенностями эксплуатации, где-то назначением устойства (пример - программатор ICD2, который постоянно обновляет свою прошивку для работы с разными микросхемами). И программа должна уметь предотвращать неправильную работу сбитой прошивки. Как минимум, не дать устройству работать в обычном штатном режиме.

Цитата:
Плюс к этому прибор имеет документ с условиями эксплуатации (температурный диапазон здесь указан). Если они нарушены, то уже не FLASH надо контролировать, а менять весь прибор, в нем может быть много потенциальных уязвимых мест, при нарушении условий эксплуатации. А если режимы эксплуатации не нарушены, то возникает вопрос - зачем контролировать только Flash (а не другие составляющие прибора).
Ну, с тепличными условиями (и нетепличными, но указанными и проверенными) все понятно. А если случается так, что устройство временно оказывается вне этих условий? Было как-то: в Сургут отправили партию устройств (80 шт.), а на ж/д сортировке случилась неразбериха, и девайсы простояли на морозе неделю или две (или месяц, не помню уже), после этого в 3х из них попортилась флеш. Да, условия хранения были нарушены, но если бы эти устройства были установлены и выполняли ответственные задачи (правда, конкретно у этих не было ответственных задач), то могли быть убытки, во много раз превышающие их стоимость. А так спасла диагностика (потом на всякий случай заменили всю партию).
tester вне форума   Ответить с цитированием
Старый 04.08.2010, 09:57   #50
Ecole
Senior Member
 
Регистрация: 13.03.2007
Возраст: 54
Сообщений: 132
Вес репутации: 734/55
Ecole is a splendid one to beholdEcole is a splendid one to beholdEcole is a splendid one to beholdEcole is a splendid one to beholdEcole is a splendid one to beholdEcole is a splendid one to beholdEcole is a splendid one to behold
По умолчанию Re: Самодиагностика PIC'ов

Еще один полу-офф.
Предлагаю для повышения надежности копию прошивки контроллера держать во внешней Flash или EEPROM (естественно с контр. суммами и даже можно с дублированием данных). При необходимости можно даже контроллер перешить, если окажется, что его flash испорчена.
Ecole вне форума   Ответить с цитированием
Ответ

Метки
контроль прошивки


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Имитатор DS18B20 Filya44 Вопросы начинающих 14 12.03.2012 17:39


Часовой пояс GMT +3, время: 05:12.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot