Попробовал собрать готовый, который для ch341a. Куча ошибок, да оно и понятно: судя по дате, еще, небось, для четвертого ядра писали. На шестом не работает
( Read more... )
Аналоги есть, но похоже все сделали выводы и придумали самопальные шины и протоколы - CAN тому пример, других нишевых и самопальных тоже полно. Айтуси остался лишь на всеобщей привычке: он был, потому есть, потому продолжают ставить в новые чипы. Выбора же нет: вот нужный чип, и у него айтуси или спай, или просто айтуси - выбирай из одного.
Была FireWire, но яблочный засранец её закопал своей гениальностью - очень нужно было бабло в моменте, потому он решил выставить счёт за каждый порт всем соавторам. Соавторы его послали, на этом будущее закончилось. А так было то что надо: единая шина что на плате, что между ящиками, и абсолютно всем лучше чем все остальные последовательные шины в своё время. 100Мбит/с минимальная скорость была в руках, когда USB мог целых 12. Потом FireWire взяли за основу самопальных проектов, выкинули лишнее, добавили недостающее, и получили высоконадёжную изохронную AS5643, которая пошла в кучу военного и космического железа. А если ещё заменить ей физический порт на свой, что и сделали, можно получить единую простую шину-сеть для замены всего старья, начиная с UART и подобных ему (ARINC и прочее).
Ну, были и попытки сделать "короткую физику" тех же CAN или 485 на одном проводе. Получился убогий 1-wire, который вообще ничем аппаратно не поддерживается, и народ с ним страдает по сей день… Хотя, казалось бы: в чем проблема это аппаратно реализовать? Просто добавь ты к выходам Rx/Tx CAN'а низкоуровневый преобразователь на один провод, а не на витуху. Нет никого в шине - подтяжка к питанию, начали передавать единичку - прижали к нулю… Думаю, появились бы и дискретные преобразователи из этого в дифференциальный сигнал. То бишь, хочешь на небольшом расстоянии работать - используй голое подсоединение. Нужно увеличить - ставь мелкосхемку и выходи на общую витуху. А тут еще и оптика подоспела, которая сейчас значительно подешевела. Разве что очень тяжело на оптике шину сделать: каждый узел по сути будет ретранслятором, и если помрет, то и дальнейший сегмент шины отвалится…
Тут следует вспомнить откуда выросли ноги айтуси. Это гениальное решение времён n-MOS транзисторов и корпусов DIP: резистор в подтяжке позволял сэкономить на p-MOS транзисторе, а два вывода на шину позволяли сэкономить на корпусе. Гениальное решение одного дня, которое пережило свою полезность лет на 30 минимум. С тех пор появились PLCC, потом BGA и всякие мелкошаговые корпусы с каким угодно количеством выводов. Пример физики FireWire показывает как легко достичь 400Мб/с на обычной логике 30-летней давности, без трансиверов, с гениально простым и надёжным аналоговым(!) арбитражем шины.
А вот FireWire и был такой шиной из ретрансляторов: каждый узел был ретранслятором, но в упомянутом выше апгрейде шину закольцевали с протокольным разрывом кольца (иначе в кольце шина не работает). При физическом разрыве в любом месте шина сама перенастраивалась. Плюс вояки себе сделали тройное резервирование нормой (не стандартом, просто трёхпортовые чипы), чтобы ничего не отваливалось даже в крайних случаях. Кстати, PCIe тоже такая, вся из ретрансляторов.
Первый тезис в том что предпосылки существования айтуси давно исчезли: экономия выводов корпуса и p-MOS транзистора, и это общее правило для очень переживших свою эпоху конструкций. Вместо того чтобы зафиксировать стандарт и дать ему спокойно помереть (и потерять какую-то там власть и финансовые потоки в промышленности), трупы гальванизируются десятилетиями. Вот зачем существует 60-летний UART - вообще полу-аналоговый порт, придуманный для телефонии во времена вьетнамской войны? Два асинхронных порта никогда не имеют точно совпадающие тактовые, и гарантированно теряют данные на длинных передачах, с чем по сей день кувыркаются инженеры (и откуда я знаю, да) - эту мертвечину давно следовало закопать, но нет.
Второй тезис в том что всё это можно делать как нужно, если делать своё, а не носиться со стандартами, где 100500 ценных мнений сводятся к зомби-мутантному концу вроде ненышней айтуси. При выборе технологии для бортовой сети, чтобы заменить паутину всяких старых и уникальных портов, вояки перебрали ВСЁ на тот момент, и выбрали FireWire со списком обязательных упрощений и апгрейдов. Вот уж кому плевать на мнения корпоративной бюрократии и экономию, а выбрали коммерческий FireWire, заменили ему физику и арбитраж на изолированную дифференциальную пару и детерминированный изохронный протокол, плюс ещё некоторые мелочи, и получили свою отличную шину, которая останется такой на десятилетия. При этом физику порта можно менять - шине безразлично; оптика туда тоже годится.
Я себе взял это за основу, так чтобы была единая сеть шин (исходная и нереализованная модель FireWire) внутри плис, на плате, между платами, и между блоками, с возможностью разной физики для каждой шины. Между ящиками может быть 10Гб/с оптикой, на плате может быть широкая (1-2-4-16... линий) шина на 1Гб/с линиях, а внутри плис может быть максимально широкая (64) шина с малой скоростью для простоты синтеза. А узлы везде одинаковые, и протокол вообще не знает что там внизу - нужно лишь создать расписание для мастера шины. В FireWire сделали автоматику, в результате она получилась недетерминированной в асинхронном режиме, а аналоговый арбитраж не позволял делать гальванически изолированные соединения, в том числе оптику. Это было полезно некоторое время, а потом вредно, но в версии на 800Мб/с уже исправлено.
Пушпул в шине чреват замыканиями в случае аварии какого-нибудь узла. Ну и автоматом убивает мультимастер. Хотя бы "очень сильная", но подтяжка нужна. Что до firewire, вообще без понятия, что это, т.к. никогда в жизни это чудо-юдо не встречал, и, надеюсь, не встречу. Когда-то давным-давно слышал об этом, но более перспективные вещи взяли свое. Так что, когда не хватит USB3, ему на смену придет USB4. Но это - для p2p. Если же нужно на одну шину посадить уйму устройств, то все очень печально, увы. В реальной жизни приходится выбирать: либо CAN со своими ограничениями на длину линии и скорость, либо RS-485 со своими ограничениями (тут совсем жопа, т.к. мультимастер на его физике невозможен), либо… Ну, для более-менее больших расстояний этим все и заканчивается. Т.к. тот же ethernet - это уже гребаный p2p (т.к. на один кабель больше одного устройства не посадишь). Аналогично с оптоволокном. Радиоканал - фу, мерзость (ни скорости связи, ни дальности, ни надежности)!
В общем, получается, что единственная надежная шина - витая пара. И CAN поверх нее. А вот на малых расстояниях приходится всякой тряхомудией страдать, типа тех же I2C или 1-wire.
Мультимастер на шине, соединяющей устройства на одной плате, и задуманной для одного мастера (генератора тактовой) - это была ошибка уровня "бить палкой с гвоздём". Нет никакого разумного обоснования для существования более одного мастера на айтуси, а негативных последствий полно. Вот так всё в айтуси - 40+ лет негативных последствий.
FireWire и был перспективным, пока его не убили. Потом на его основе придумали разные, в том числе яблочный Thunderbolt, автомобильный FlexRay, может даже PCIe вдохновлялся им. Это был прорыв: последовательная системная шина, когда системные шины были параллельными; ну и задумана была как сеть шин, то есть с мостами получается сеть, а не просто шина. Мосты там не доделали даже на уровне стандарта. Функциональный эквивалент "мультимастера" там достигался мостами: один мастер на шине, но на шине второго уровня этот мастер (другой его порт) был устройством, так что на шине второго уровня мастер один. Мастер управляет шиной и конфигурирует её, раздаёт ресурсы, в том числе для изохронных каналов - двух мастеров быть не может принципиально.
Была FireWire, но яблочный засранец её закопал своей гениальностью - очень нужно было бабло в моменте, потому он решил выставить счёт за каждый порт всем соавторам. Соавторы его послали, на этом будущее закончилось. А так было то что надо: единая шина что на плате, что между ящиками, и абсолютно всем лучше чем все остальные последовательные шины в своё время. 100Мбит/с минимальная скорость была в руках, когда USB мог целых 12. Потом FireWire взяли за основу самопальных проектов, выкинули лишнее, добавили недостающее, и получили высоконадёжную изохронную AS5643, которая пошла в кучу военного и космического железа. А если ещё заменить ей физический порт на свой, что и сделали, можно получить единую простую шину-сеть для замены всего старья, начиная с UART и подобных ему (ARINC и прочее).
Reply
Хотя, казалось бы: в чем проблема это аппаратно реализовать? Просто добавь ты к выходам Rx/Tx CAN'а низкоуровневый преобразователь на один провод, а не на витуху. Нет никого в шине - подтяжка к питанию, начали передавать единичку - прижали к нулю… Думаю, появились бы и дискретные преобразователи из этого в дифференциальный сигнал. То бишь, хочешь на небольшом расстоянии работать - используй голое подсоединение. Нужно увеличить - ставь мелкосхемку и выходи на общую витуху.
А тут еще и оптика подоспела, которая сейчас значительно подешевела. Разве что очень тяжело на оптике шину сделать: каждый узел по сути будет ретранслятором, и если помрет, то и дальнейший сегмент шины отвалится…
Reply
А вот FireWire и был такой шиной из ретрансляторов: каждый узел был ретранслятором, но в упомянутом выше апгрейде шину закольцевали с протокольным разрывом кольца (иначе в кольце шина не работает). При физическом разрыве в любом месте шина сама перенастраивалась. Плюс вояки себе сделали тройное резервирование нормой (не стандартом, просто трёхпортовые чипы), чтобы ничего не отваливалось даже в крайних случаях. Кстати, PCIe тоже такая, вся из ретрансляторов.
Первый тезис в том что предпосылки существования айтуси давно исчезли: экономия выводов корпуса и p-MOS транзистора, и это общее правило для очень переживших свою эпоху конструкций. Вместо того чтобы зафиксировать стандарт и дать ему спокойно помереть (и потерять какую-то там власть и финансовые потоки в промышленности), трупы гальванизируются десятилетиями. Вот зачем существует 60-летний UART - вообще полу-аналоговый порт, придуманный для телефонии во времена вьетнамской войны? Два асинхронных порта никогда не имеют точно совпадающие тактовые, и гарантированно теряют данные на длинных передачах, с чем по сей день кувыркаются инженеры (и откуда я знаю, да) - эту мертвечину давно следовало закопать, но нет.
Второй тезис в том что всё это можно делать как нужно, если делать своё, а не носиться со стандартами, где 100500 ценных мнений сводятся к зомби-мутантному концу вроде ненышней айтуси. При выборе технологии для бортовой сети, чтобы заменить паутину всяких старых и уникальных портов, вояки перебрали ВСЁ на тот момент, и выбрали FireWire со списком обязательных упрощений и апгрейдов. Вот уж кому плевать на мнения корпоративной бюрократии и экономию, а выбрали коммерческий FireWire, заменили ему физику и арбитраж на изолированную дифференциальную пару и детерминированный изохронный протокол, плюс ещё некоторые мелочи, и получили свою отличную шину, которая останется такой на десятилетия. При этом физику порта можно менять - шине безразлично; оптика туда тоже годится.
Я себе взял это за основу, так чтобы была единая сеть шин (исходная и нереализованная модель FireWire) внутри плис, на плате, между платами, и между блоками, с возможностью разной физики для каждой шины. Между ящиками может быть 10Гб/с оптикой, на плате может быть широкая (1-2-4-16... линий) шина на 1Гб/с линиях, а внутри плис может быть максимально широкая (64) шина с малой скоростью для простоты синтеза. А узлы везде одинаковые, и протокол вообще не знает что там внизу - нужно лишь создать расписание для мастера шины. В FireWire сделали автоматику, в результате она получилась недетерминированной в асинхронном режиме, а аналоговый арбитраж не позволял делать гальванически изолированные соединения, в том числе оптику. Это было полезно некоторое время, а потом вредно, но в версии на 800Мб/с уже исправлено.
Reply
Что до firewire, вообще без понятия, что это, т.к. никогда в жизни это чудо-юдо не встречал, и, надеюсь, не встречу. Когда-то давным-давно слышал об этом, но более перспективные вещи взяли свое. Так что, когда не хватит USB3, ему на смену придет USB4. Но это - для p2p. Если же нужно на одну шину посадить уйму устройств, то все очень печально, увы. В реальной жизни приходится выбирать: либо CAN со своими ограничениями на длину линии и скорость, либо RS-485 со своими ограничениями (тут совсем жопа, т.к. мультимастер на его физике невозможен), либо… Ну, для более-менее больших расстояний этим все и заканчивается. Т.к. тот же ethernet - это уже гребаный p2p (т.к. на один кабель больше одного устройства не посадишь). Аналогично с оптоволокном. Радиоканал - фу, мерзость (ни скорости связи, ни дальности, ни надежности)!
В общем, получается, что единственная надежная шина - витая пара. И CAN поверх нее.
А вот на малых расстояниях приходится всякой тряхомудией страдать, типа тех же I2C или 1-wire.
Reply
FireWire и был перспективным, пока его не убили. Потом на его основе придумали разные, в том числе яблочный Thunderbolt, автомобильный FlexRay, может даже PCIe вдохновлялся им. Это был прорыв: последовательная системная шина, когда системные шины были параллельными; ну и задумана была как сеть шин, то есть с мостами получается сеть, а не просто шина. Мосты там не доделали даже на уровне стандарта. Функциональный эквивалент "мультимастера" там достигался мостами: один мастер на шине, но на шине второго уровня этот мастер (другой его порт) был устройством, так что на шине второго уровня мастер один. Мастер управляет шиной и конфигурирует её, раздаёт ресурсы, в том числе для изохронных каналов - двух мастеров быть не может принципиально.
Reply
Leave a comment