В догонку по кернельному модулю для переходника I2C-USB

Nov 16, 2024 18:10

Попробовал собрать готовый, который для ch341a. Куча ошибок, да оно и понятно: судя по дате, еще, небось, для четвертого ядра писали. На шестом не работает ( Read more... )

рукожопие, железяки

Leave a comment

ardelfi November 16 2024, 15:52:58 UTC
> самопальный протокол

Вот это наш метод. Гадость гадская этот ваш айтуси, зомби-мутант. Даже в спецификацию записано что устройство может зависнуть, и тогда циклируйте шине питание (ачотакова да). В спецификации записана аксиома что мастер формирует тактовую, а потом улучшатели дописали что устройство может закоротить линию тактовой на землю неограниченно долго, потому что оно тупое и не успевает что-то там, потому вся шина подождёт. Этот стандарт был нормальным в своей первой версии, которую потом извратили до безумия. Безумие - это версия с тактовой до 3.4МГц. В общем, чем проще метод использования этого зомби-мутанта, тем меньше нервов будет потрачено - возможно к этой мысли пришли и авторы вашего кода.

Когда делал свой модуль айтуси для плиса, начал с мысли "сделаю по полной программе". По мере делания и усложнения автомата, пришёл к мысли "да гори оно огнём! резать! непременно резать!"

Reply

eddy_em November 16 2024, 16:03:41 UTC
Питание дергать - не проблема, хоть каждый раз при инициализации. Можно вообще даже завести отдельную команду.
Но хочется иметь "ядреную" поддержку. Чтобы просто воткнул свое устройство, и у тебя /dev/i2c-xxx появилось, с которым работай теми же методами, что и на одноплатнике. Ну и в ядре есть модули для некоторых попсовых вещей, того же BME280 - подключил к переходнику, воткнул в комп, инициировал устройство - бдыщь, кернельный модуль обслуживает, тебе ничего самому писать не надо…

А что I2C - адское говнище, я согласен. Но, с другой стороны, аналога ведь вообще нет! Как сотню устройств посадить на одну шину, не ведя к каждому отдельный кабель CS? Не на CAN же всю эту примитивщину вешать, в конце-то концов!

Reply

ardelfi November 16 2024, 16:26:41 UTC
Аналоги есть, но похоже все сделали выводы и придумали самопальные шины и протоколы - CAN тому пример, других нишевых и самопальных тоже полно. Айтуси остался лишь на всеобщей привычке: он был, потому есть, потому продолжают ставить в новые чипы. Выбора же нет: вот нужный чип, и у него айтуси или спай, или просто айтуси - выбирай из одного ( ... )

Reply

eddy_em November 16 2024, 17:03:40 UTC
Ну, были и попытки сделать "короткую физику" тех же CAN или 485 на одном проводе. Получился убогий 1-wire, который вообще ничем аппаратно не поддерживается, и народ с ним страдает по сей день…
Хотя, казалось бы: в чем проблема это аппаратно реализовать? Просто добавь ты к выходам Rx/Tx CAN'а низкоуровневый преобразователь на один провод, а не на витуху. Нет никого в шине - подтяжка к питанию, начали передавать единичку - прижали к нулю… Думаю, появились бы и дискретные преобразователи из этого в дифференциальный сигнал. То бишь, хочешь на небольшом расстоянии работать - используй голое подсоединение. Нужно увеличить - ставь мелкосхемку и выходи на общую витуху.
А тут еще и оптика подоспела, которая сейчас значительно подешевела. Разве что очень тяжело на оптике шину сделать: каждый узел по сути будет ретранслятором, и если помрет, то и дальнейший сегмент шины отвалится…

Reply

ardelfi November 16 2024, 18:24:10 UTC
Тут следует вспомнить откуда выросли ноги айтуси. Это гениальное решение времён n-MOS транзисторов и корпусов DIP: резистор в подтяжке позволял сэкономить на p-MOS транзисторе, а два вывода на шину позволяли сэкономить на корпусе. Гениальное решение одного дня, которое пережило свою полезность лет на 30 минимум. С тех пор появились PLCC, потом BGA и всякие мелкошаговые корпусы с каким угодно количеством выводов. Пример физики FireWire показывает как легко достичь 400Мб/с на обычной логике 30-летней давности, без трансиверов, с гениально простым и надёжным аналоговым(!) арбитражем шины ( ... )

Reply

eddy_em November 16 2024, 18:37:16 UTC
Пушпул в шине чреват замыканиями в случае аварии какого-нибудь узла. Ну и автоматом убивает мультимастер. Хотя бы "очень сильная", но подтяжка нужна ( ... )

Reply

ardelfi November 16 2024, 22:04:41 UTC
Мультимастер на шине, соединяющей устройства на одной плате, и задуманной для одного мастера (генератора тактовой) - это была ошибка уровня "бить палкой с гвоздём". Нет никакого разумного обоснования для существования более одного мастера на айтуси, а негативных последствий полно. Вот так всё в айтуси - 40+ лет негативных последствий ( ... )

Reply


Leave a comment

Up