singlskv 0 14 февраля, 2008 Опубликовано 14 февраля, 2008 · Жалоба Ага..Щаззз....А Вы потом этот код в свой проектик или в свою кандидатскую... А мне , как изобретателю кушиш с маслом Ну что, наша амброзия похоже сдулась окончательно ? Вы эта.., всерьез думаете что Ваш код мне за чем то нужен ? :07 Да я бы сделал и это, но мне сейчас нЕкогда..Работы многоДык Вы уже определитесь со своей ориентацией... Ну или не постите глупости.... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Don_Ambrosio 0 14 февраля, 2008 Опубликовано 14 февраля, 2008 · Жалоба Ну что, наша амброзия похоже сдулась окончательно ? Вы эта.., всерьез думаете что Ваш код мне за чем то нужен ? :07 Дык Вы уже определитесь со своей ориентацией... Ну или не постите глупости.... Давайте всё же эмоции держать при себе. Я не обязан тут сидеть целыми днями и всем разжёвывать как надо проектировать программы для обнаружения случайных джампов. По-моему я и так достаточно уже написал (перечитайте внимательно ещё раз всю тему и 90% вопросов у Вас отпадут). Также как и остальных я не заставляю тут отписываться. А потом, без обид, есть же вещи, как ноу-хау и интеллектуальная собственность, и которые не предназначены для всеобщего пользования. Тем более что некоторые идеи я Вам уже выложил, а всё выкладывать я не обязан. "Мудрец по фантику от конфеты сможет понять устройство вселенной, а ..."(с) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
singlskv 0 14 февраля, 2008 Опубликовано 14 февраля, 2008 · Жалоба Давайте всё же эмоции держать при себе.А при чем здесь эмоции ? Вы автор топика, и я Вам задал кучу вопросов, и ни на один из них вы толком не ответили... Ну дык, как? Инструкции AVR мы уже изучили ? примеры применения будут ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба to Дон Амброзио: Почитал ваши предложения. На мой взгляд, все они крайне запутанны, сложны, плохо расширяемы, непереносимы между процессорами, требуют полного знания ассемблера и "неподключаемы" к сторонним библиотекам. Т.е., если у вас есть прошивка, которая тиражируется на миллионы изделий, и относительно "проста", то в ней все это можно использовать. Однако если тираж небольшой, то все это крайне затруднительно... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба Я Дон Амброзио за формат таблиц cpi Rd,K благодарен. Поэтому вам, 'singlskv', за него отвечу. Хотя 'Дон Амброзио' уж вам и так всё подробно расписал. давайте реальный пример использования, пусть будеть например модбас и соответственно рассчет CRC16 через таблицы... Вот как я бы написал (специально пишу не оптимально, а просто чтобы работало - оптимальный код он денег стоит): in ZL,UDR ; прочли данные из USART st X+,ZL ; сохранили в ОЗУ ; Дальше собственно CRC считаем. ; R3, R2 - CRC аккумулятор, RG00 - любой регистр =0 eor ZL,R3 ; проксорим данные с.б. старого CRC add ZL,ZL ; *2 (потом ещё на 2 итого на *4) ldi ZH,high(T_CRC) ; таблица CRC (c 0bXXXXXXX000000000) adc ZH,RG00 ; прибавим C (перенос) add ZL,ZL ; *2 (переходим к словам) rol ZH ; Z - ук-ль на соотв. слово lpm R3,Z ; это старший байт т.к. таблица переставлена adiw ZL,2 ; передвинем ук-ль на ст. байт eor R3,R2 ; получили ст. байт нового CRC lpm R2,Z ; м.б. нового CRC просто из таблицы ; итого R3,R2 обновлённое CRC .org 0x400 T_CRC: ; У ModBuss какой-то паршивый производящий многочлен был. Типа 0x1C0C1- но не уверен. ; Если что подправьте. Но именно 0x1C0C1, а не 0xC0C1. Насчёт 1 это я не ошибся! .dw 0x3000, 0x3000, 0x30C1, 0x30C0 ... rjmp Crash Если кто это применять будет. При получении зарплаты прошу меня не забывать! (шутка) С CRC всё элементарно ведь. Сам-то вы, 'singlskv', рассчёт CRC из аппноутов берёте что-ли? Или вы хитрее гораздо. Типа шпион промышленный? Секреты у всех выведываете... Вы автор топика, и я Вам задал кучу вопросов, и ни на один из них вы толком не ответили... Один д. может столько вопросов задать, что 100 умных не ответят. Только без обид! 'singlskv' - заранее прощения прошу. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба to Дон Амброзио: Почитал ваши предложения. На мой взгляд, все они крайне запутанны, сложны, плохо расширяемы, непереносимы между процессорами, требуют полного знания ассемблера и "неподключаемы" к сторонним библиотекам. Т.е., если у вас есть прошивка, которая тиражируется на миллионы изделий, и относительно "проста", то в ней все это можно использовать. Однако если тираж небольшой, то все это крайне затруднительно... Я вам больше скажу. Все эти извращения можно применять. Возможно, в каком-то очень маловероятном случае, они даже спасут. Но! Такие способы требуют написания проекта исключительно на ассемблере, можно конечно, кое-что и на C сделать, но тут будет "программа на ассемблере, написаная на C" (по аналогии с "я вам программу на Фортране на любом языке напишу"). И, для большого и сложного проекта, такая реализация будет скорее всего глючная сама по себе, из-за ошибок в алгоритмах и прочем. Исключительно из-за сложности реализации больших проектов на ассемблере. Там что, по моему мнению, все, о чем тут говорили, представляет исключительно теоретический интерес. Хотя, на диссер не тянет, все придумано до нас :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба Это вариант. Только я считаю, что это лишнее.. В принципе могу с вами и согласится. Т.к. сам всегда CRC32 FLASH в основном цикле считаю (по слову за раз - см. мои предыдущие посты). Но ни разу не сработало. Ну просто не будет программа работать нормально если часть флеша слетит по причине прыжка на erase sequence в бутлоадере, не вернемся мы оттуда в ОС... Следовательно тут как раз WDT помощник. Ну а если предположить, что мы все-таки вернулись после erase sequence в ОС и продетектили нарушение флеш в основной программе, что дальше? Выход ведь тот же самый - сброс и запуск бутлоадера. Насчёт защиты от несанкционированного запуска бутлоадера. Я бы предложил написать так: ; до последней проверки ldi R17,Tag ; что такое Tag думаю объяснять не надо ; начинается последняя проверка. В ней R17 не используется. ... ; последняя проверка закончена. Дальше пошли аварийно опасные команды. .... ; дальше пример от 'Дон Амброзио'. Чуть переделанный OUT SPMCR , R16 ; --------------- cpi R17 , Tag brne CRASH ;----------------- SPM Если предположить, что аварийно опасных команд 8 шт. А у R17, в остальных частях программы, значения от 0 до FF равновероятны. То вероятность "не попорчивания" FLASH при случайном прыжке для AVR с 128 кБайт памяти будет: (1-(8/65536)/256)*100%=99.9999523%. Что существенно выше, чем надёжность CRC16 с производящим многочленом 0x11021, которая составляет 99.9984% для пакетов данных длиной более 17 бит (Р.Л. Хаммел "Последовательная передача данных"). У мелких АРМов (конкурентов мег) есть FLASH. Хотите размещайте во флеш, не хотите - копируйте и запускайте в RAM. Если код во флеш разместить, то он и выполнятся медленно будет. Примерно с той-же скоростью, как у AVR. А у мелких АРМов разве защита кода есть? Я считал, что нет. Но м.б. у каких-то и есть - просветите. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tyro 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 (изменено) · Жалоба Я вам больше скажу. Все эти извращения можно применять. :) Это Вы говорите как специалист по части применения поледних?(шутка) :) Было бы интересней, если бы Вы привели код или пути решения поставленной задачи [deleted] Изменено 15 февраля, 2008 пользователем IgorKossak Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 15 февраля, 2008 Опубликовано 15 февраля, 2008 (изменено) · Жалоба Это Вы говорите как специалист по части применения поледних?(шутка) Конечно. (не шутка). Если в меру, можно и поизвращаться. Иногда результаты хорошие получаются. Было бы интересней, если бы Вы привели код или пути решения поставленной задачи, Задача сия точного решения не имеет. Можно только итерациями бесконечно приближаться, асимптотически, к прямой, которая есть "надежность 100%". Хотя полсотни резисторов, рассыпаные по плате имеют вероятность выхода больше, чем камень ;) Рассмотрите необходимость решения данной задачи с точки зрения расчета надежности. [deleted] Изменено 15 февраля, 2008 пользователем IgorKossak Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorKossak 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба По теме ещё будут сообщения? Или давайте закроем тему. Модератор. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба С CRC всё элементарно ведь. Кстати насчёт CRC. Если, например, иногда нужно бывает 1 слово в защищённом CRC блоке ОЗУ изменить. Я CRC всего блока не пересчитаваю - это долго. Я просто ещё одно слово завожу рядом. И его одновременно меняю, так чтобы CRC всего блока не изменился. Это хакерский приём конечно. И кусок программы которая так делает я принципиально демонстрировать не буду. Ток кто в CRC разбирается - сам запросто такое напишет. А тому, кто не разбирается - такое лучше и не знать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба Извините конечно :bb-offtopic: но никогда не могу пройти мимо подобных заявлений - "Ток кто в CRC разбирается - сам запросто такое напишет. А тому, кто не разбирается - такое лучше и не знать". 2 galjoen - НУ чтож гордитесь! Вы гениальный! Не думаете , что если все так будут делать - но всё мы в конечном итоге деградируем ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Sam_ 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба Можна ещё один маленький уточняющий вопрос? Здесь тема только про "ловлю" случайных джампов А какова вероятность того, что помеха собъёт только PC??? Видимо PC из особого теста леплен. А если сбивается не только PC(т.е. возможен не только случайный джамп) в чём смысл темы? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 · Жалоба Извините конечно :bb-offtopic: но никогда не могу пройти мимо подобных заявлений - "Ток кто в CRC разбирается - сам запросто такое напишет. А тому, кто не разбирается - такое лучше и не знать". 2 galjoen - НУ чтож гордитесь! Вы гениальный! Не думаете , что если все так будут делать - но всё мы в конечном итоге деградируем ? Прошу прощения если меня не так поняли. Не хотел никого обидеть. Я имел в виду, что хакеров-крекеров и так хватает. Это они в программах (для компьютера) таким способом защиту кода с помощью CRC ломают. И мою защиту так сломали (когда-то давным-давно когда я еще молодой-неопытный был). И помогать им в этом я не хочу. В смысле тем, которые этого не знают (пока). А по моему мнению, хакеров со знаниями теории - мало. Ещё раз простите - в следующий раз при написании поста буду осмотрительней. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 15 февраля, 2008 Опубликовано 15 февраля, 2008 (изменено) · Жалоба Мда-с... Как защититься от случайного выполнения записи в boot-loader. Это не то,что приснопамятное засорение EEprom - тут у нас по питанию все ОК. 1. Заводим в основной программе себе нулевой регистр и не трогаем его ни при каких обстоятельствах. Только clr NullReg после сброса. 2. Кусок кода по записи в SPMCR не имеет точки входа. Fl_write_by_boot: COM NullReg; assuming ==0 just before this cmd RET; pre-initialized stack content HERE FL_write_entry: LDI R16,Spmcr_value; abstract command AND R16,NullReg OUT SPMCR,R16 SPM CLR NullReg 3. Как безопасно запихнуть в стек адрес входа ? Вопрос открытый, хотя я загружал с порта в теле команды для записи страницы. Некрасиво, но луше не придумал. Изменено 15 февраля, 2008 пользователем _Pasha Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться