Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пропатчить ДУДКУ?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
drvlas
Уважаемые товарищи программисты софта!

Я ищу желающих и умеющих внести некоторые изменения в (глубоко уважаемую) AVRDUDE. Практически, требуется:

1) разобраться с существующим ключом -i

2) добавить режим "зацикливания посылки"

Сейчас поясню, что это нам даст.

Мы все любим время от времени сделать-купить новый программатор. Его первый запуск - это проверка и железки, и программы (все ли там дрова стоят, все ли пучком мы задали и т.д.), и соединений между компом и программатором, между программатором и таргет-девайсом... Всегда ли все с первого раза чики-пики? Смею утверждать, что чаще не с первого...

А ведь мы еще иногда усугубляем задачу одновременным запуском и таргет-платы! Тады уж полный капец - не знаешь, где же та причина, по которой комп матерится или просто огоньки, блин, не бегают по положенным дорожкам smile.gif
Посмотрите по форуму - такие ситуации часто-густо!

А добавьте еще одну программаторско-порожденную засаду: "умершие" МК. У каждого, небось, уже кладбище таких чипов. Что с ними не так? Часто не знаем. Шилось-шилось, не зашилось. И "бездыханность" не всегда признак летальности. Может его еще и можно оживить, да только как? Уже высоковольтный программатор искать али где?

Вот такие ситуации и сподвигнули меня на поиски способа творить с МК некоторые шаманские действия, причем именно те, которые ХОЧИЦЦА, на которые хватило фантазии, со скоростью, которую я сам выбираю.

Тут вариантов немеряно. Но я нафантазировал вот что.

Берем простой безмозглый битбанговый программатор. Или с мозгами, но они в этом случае только заменяют FT232, т.е. последовательности импульсов на ногах программирования определяются полностью софтом компа.
Обычно в таком программаторе с помощью стандартного софта, скажем любимой ДУДКИ, ноги RESET, SCK, MOSI дрыгаются для создания стандартных ISP-посылок на МК, а в ответ наблюдается нога MISO. Все прекрасно.
Но вот, когда что-то не так, мы и начинаем ломать голову, искать неконтакты, задавать вопросы недоумения и т.д.

А теперь представьте, что мы ничего не отключаем, аппаратно точненько все так подключено, но у ДУДКИ есть вот именно тот дополнительный режим, который я называю БитБанг тестер. В этом режиме на назначенные ноги СОМ-порта мы можем подать любую последовательность и в любом темпе (хоть до постоянного тока) и любое количество раз. А еще бы и режим пошаговой выдачи SPI-посылки (это уже перевыполнение мечт).

Это ж какой класс! Можно проверить тестером, что доходит до МК, можно зациклить посылку и рассмотреть осциллоскопом. Можно навеситься кучей светодиодов на сигналы SPI-программирования и детям в школе рассказывать, как работает SPI smile.gif

Как это сделать? Да фиг его знает! Знал бы - сделал. Думаю, что среди нас есть много ребят, которым такая задача по плечу. Во всяком случае, я обращался к одному из авторов ДУДКИ, товарищу Йоргу Вуншу - так он сказал, что дело плевое, исходники открыты, ваяй!

Кто готов наваять?

И последнее. Ключ -i очень нужен в таких тестер-применениях. У меня лично как-то не видно, чтобы он работал. Не удлиняются посылки. Йорг молчит по этому поводу. Может быть, им никто не пользуется. а он просто глючный? Или это только у меня такая нескладуха? Вот отсюда другая часть моего вопроса - разобраться с ключом.
ARV
для произвольного "ручного" дрыгания ножками LPT или COM, т.е. эмуляции бит-банговых последовательностей, существуют вполне простые и доступные независимые утилитки TCOM и LPTtest
для некоторой автоматизации ногодрыгания портами можно использовать Hardware Control

наделять avrdude несвойственными ему функциями как-то странно...
drvlas
Цитата(ARV @ Nov 8 2010, 13:45) *
для произвольного "ручного" дрыгания ножками LPT или COM, т.е. эмуляции бит-банговых последовательностей, существуют вполне простые и доступные независимые утилитки

Если ты их знаешь, то можешь сказать, какая из них удобна для задачи, описанной мною?
Дрыгнуть ногу вверх с помощью нескольких кликов, потом другую ногу - еще несколькими кликами... Нет уж, уволь, затрахаешься. Это я пробовал. Возьми последовательность длиной 1 байт и выдай РЕСЕТ, КЛОК, МОСИ вручную. И не забудь вовремя считывать и зарисовывать в тетрадку МИСО...
Есть среди них такая утилитка, чтобы "скушала" заданную последовательность комбинаций состояний выводов - и затем выдавала мне циклически или по шагам?
Если нет, то
Цитата(ARV @ Nov 8 2010, 13:45) *
наделять avrdude несвойственными ему функциями как-то странно...

наделять ДУДКУ функциями, тесно связанными с ее основной задачей - очень даже природно.

То есть, главное, что я хочу сказать: я достаточно уверен в актуальности задачи. Я готов рассмотреть варианты ее решения без ДУДКи. Решения, в котором эмбеддеру (даже начинающему) будет тепло и уютно smile.gif понятно и удобно найти причину не работы программатора и-или контроллера.

Но, как автор темы, не принимаю заявлений типа "а на фига?".
ARV
Цитата(drvlas @ Nov 8 2010, 14:08) *
Нет уж, уволь, затрахаешься. Это я пробовал. Возьми последовательность длиной 1 байт и выдай РЕСЕТ, КЛОК, МОСИ вручную. И не забудь вовремя считывать и зарисовывать в тетрадку МИСО...
в свое время так и делал - до сих пор жив. обычно надо добиться передачи/приема только одного байта, а остальное идет как по маслу без ногодрыганья вручнуюsmile.gif

Цитата(drvlas @ Nov 8 2010, 14:08) *
Есть среди них такая утилитка, чтобы "скушала" заданную последовательность комбинаций состояний выводов - и затем выдавала мне циклически или по шагам?
есть - Hardware Control позволит выдать на 12 линий LPT порта любую последовательность различным циклированием и, в том числе, в пошаговом режиме. правда на ввод битов она не способна...
drvlas
Цитата(ARV @ Nov 8 2010, 16:09) *
в свое время так и делал - до сих пор жив.

есть - Hardware Control позволит выдать на 12 линий LPT порта любую последовательность различным циклированием и, в том числе, в пошаговом режиме. правда на ввод битов она не способна...

Хорошо. Так твое предложение? Не делать вообще (и остаться в живых) или пользоваться Hardware Control, но без ввода битов?
За ссылку на Hardware Control конечно спасибо. Но пока я вкурю что там почем, все же буду ждать рыцаря на белом коне, который пропатчит ДУДКУ.
drvlas
Цитата(ARV @ Nov 8 2010, 16:09) *
есть - Hardware Control позволит выдать на 12 линий LPT порта ...

LPT становится экзотикой. Может еще чего знаешь?

По сабжу. Побродил по тамошней тусовке, посмотрел патчи. В одном из них, № 5708 предложено повторять команду синхронизации многократно (конкретно 10 раз). Там и файл показан, в котором это делается - stk500.c. НО мне это не много дало, т.к. не ясно, в этом ди файле на самом деле нужно изменять что-то, если мы рабоатем с битбангом. Да и сам процесс получения сборки ДУДКИ мне представляется чем-то чудовищным.

И все же, ДУДКУ пропатчить можно. Или, на худой конец, написать некую прогу-ТЕСТЕР, которая позволит, в случае проблем с конкретным битбанговым программатором или МК, выдавать в цикле на линиии программирования заданную последовательность, заодно и принимать ответ по линии MISO. Важно иметь возможность устанавливать ей частоту импульсов как угодно низкую (тогда и тестером можно посмотреть или светодиодами) и повторять посылку сколь угодно долго.
ARV
Цитата(drvlas @ Nov 11 2010, 23:10) *
LPT становится экзотикой. Может еще чего знаешь?
для Hardware Control я делал плагин СОМ-порта, т.е. теоретически можно дрыгать ножками точно так же, как PonyProg и иже с ним, только медленнее и, как уже было сказано, без ввода битов обратно.

а вообще проблема мне непонятна: ногодрыгание через любой порт компа отлаживается один раз, что можно сделать даже вручную, после чего код тупо используется и ни на какие другие алгоритмы не влияет. для чего надо "дудеть" медленно или с кучей повторов - не врубаюсь.

Цитата(drvlas @ Nov 11 2010, 23:10) *
на худой конец, написать некую прогу-ТЕСТЕР, которая позволит...
вот именно
drvlas
Цитата(ARV @ Nov 12 2010, 13:31) *
а вообще проблема мне непонятна: ногодрыгание через любой порт компа отлаживается один раз, что можно сделать даже вручную, после чего код тупо используется и ни на какие другие алгоритмы не влияет. для чего надо "дудеть" медленно или с кучей повторов - не врубаюсь.

Не внимательно читал мой постановочный пост. "Один раз" - это когда ты имеешь в виду? Когда заускаешь новый программатор, когда одеваешь новый шлейф, когда то и другое становятся не новыми и могут начать выбрыкивать, когда начинаешь программировать новую плату (или опять-таки, старую, но со своими новыми проблемами), когда вставляешь следующий МК для программирования? Когда меняешь комп и что-то с дровами может вылезть? Когда при всем исправном оборудовании и программе МК вдруг не хочет шиться именно здесь и сейчас - а на другой комбинации "комп-программа-программатор" ВНЕЗАПНО прошивается, а ты думаешь: Блин, а что же у меня не шилось? Что выбрасывать нах?
У весьма опытных людей читаю высказывания ТИПА "да, у меня что-то тинька 13 на ДУДКЕ на прошивалась". Потом эти люди берут другой программатор и шьют. Да, вопрос решился. А что там было не в порядке? Может исследовать можно? Можно, но нужна ДУДКА, которая чуть-чуть умнее, чем нужно для "просто шить"...

Если у тебя проблем не возникает - рад! Но, скорее всего, возникают и ты их лечишь обычным методом, то есть пер анус. А я не люблю так.
И я вижу на форумах достаточно много недоумений (да, чаще всего от начинающих) - почему не шьется? Хочу дать и другим удобный инструмент в руки. Ведь и делов-то здесь - гулькин хер. Программатор можно брать любой битбанговый (хотя у меня есть вариант, наиболее полно использующий замедление и зацикливание - но он ждет патча). ДУДКУ грамотный программист пропатчит быстрее, чем мы тут разберемся с актуальностью темы. Так что за спор?

Со всем уважением

ARV
offtopic: я не лечу проблемы, т.к. не страдаю ими. у меня все работает всегда - я наредкость консервативен в выборе инструмента, и он меня не подводит. более не спорю...
GDI
Это же opensource! Если Вам что-то надо, то сделайте это сами. Правда есть проблема: те кому надо, обычно не могут, а когда они дорастают до момента когда смогут, то им уже и не надо smile.gif. "Начинающие" могут только попробовать как-либо заинтересовать "Гуру", чтобы те допилили что-то. Как минимум надо составить грамотное ТЗ.
drvlas
Цитата(GDI @ Nov 12 2010, 13:52) *
Это же opensource! Если Вам что-то надо, то сделайте это сами. Правда есть проблема: те кому надо, обычно не могут, а когда они дорастают до момента когда смогут, то им уже и не надо smile.gif. "Начинающие" могут только попробовать как-либо заинтересовать "Гуру", чтобы те допилили что-то. Как минимум надо составить грамотное ТЗ.


Читайте тут. Обратился. Там ТЗ еще нет, но задача поставлена.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.