NavQ+, герой сегодняшнего рассказа
NavQ+, герой сегодняшнего рассказа

Я занимаюсь разработкой электроники. Шесть лет назад я написал свою первую статью начинавшуюся этими же словами и увидел неподдельное внимание. Все эти годы я продолжал оттачивать свое мастерство и на текущий момент я хочу перефразировать вступление:

Я занимаюсь разработкой электроники и мне этого мало.

Чтобы немного понять, что я имею ввиду, предлагаю заглянуть под кат.</cut>

Первые результаты, которыми можно поделиться.
Первые результаты, которыми можно поделиться.

Да, я фотографирую себя с помощью встраиваемого компьютера, который я разработал и для которого я собрал софт, на камеру, которую мне пришлось поднимать вручную (хехе, какая двусмысленность). Да, я покрыл полный стек разработки: от идеи до воплощения, включая отладку железа и софта.

А теперь небольшое отступление, как я вообще докатился до жизни такой. Около двух лет назад наш коллектив влился в разработку электроники и софта для одной международной компании. Проект оказался несколько нервным: заказчики меняли архитектуру железа на лету (например, мы меняли систему питания два раза, с выпуском прототипов в железе, меняли контроллер, с разрабкой софта и для старого и для нового, разумеется с отладкой в железе, а под конец, когда железка уже работала с DDR3L памятью нас попросили переделать под DDR4). Тем не менее, железка вышла в свет, и вы можете не только посмотреть непредвзятый обзор онлайн: тыц, но и купить ее по всему миру. К слову, как разработка схемы, так и трассировка печатной платы были выполнены лично мной. В этой истории есть масса интересных моментов, но не будем отвлекаться: в процессе работы над этим и другими проектами я получил серьезный опыт и у меня сформировалось понимание, как процесс разработки аппаратуры можно ускорить и улучшить. В двух словах: человек, который умеет как в железо, так и в софт, может ускорить этот процесс в разы. Например, отладка новой железки для программистов это кошмар: непонятные схемы, неизвестность, как изменения в софте отражаются в железе, соответственно, сложность с проверкой своего кода и полная потерянность. Отладка железки для железячника этот тот же кошмар, только в профиль: тонны кода, сложности навигации в нем и уж тем более сложности модификации этого кода, и как результат – потерянность. Сотрудничество двух команд это потерянность в большинстве случаев.

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

Плата в стадии EVT (Engineering Validation Test). На этой стадии проверятеся, что ТЗ вообще выполнимо.
Плата в стадии EVT (Engineering Validation Test). На этой стадии проверятеся, что ТЗ вообще выполнимо.
Платы в стадии DVT (Design Validation Test). На этой стадии дизайн доводится до ума.
Платы в стадии DVT (Design Validation Test). На этой стадии дизайн доводится до ума.

В результате, эта стратегия позволила мне многие разработки переиспользовать и начать вести собственные проекты в аналогичном оперативном и гибком темпе. Один такой пилотный проект вышел в свет и полностью доступен здесь: https://nxp.gitbook.io/8mmnavq/

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

Итак, в ходе работы мы установили множество трудовых отношений, в том числе и с компанией NXP (как вы уже увидели по ссылке на гитбук), и когда эти ребята выпустили новый процессор IMX8M Plus (ниже), мы решили что стоит взяться за него посерьезнее, и переиспользовать все наработки, которые были получены как в пилотном проекте NavQ, так и опыт разработки в целом.

IMX8M Plus в одной картинке
IMX8M Plus в одной картинке

Железо

Собственно, в первой ревизии железа (на КДПВ) было реализовано следующее:

  • Процессор IMX8M Plus (его блок-схема выше)

  • До 8Гбайт LPDDR4 памяти (32бит, до 4266MTs), до 1ТБ eMMC (8бит, до 3200Mbps)

  • Два USB-C порта (до 5Gbps на порт), с поддержкой Power Delivery

  • Два MIPI CSI (Camera Serial Interface), 4 канала данных на каждый порт

  • Два LVDS порта для вывода видео, 4 канала данных на каждый порт

  • Один MIPI DSI (Display Serial Interface), 4 канала данных на порт

  • Один PCIe Gen 3, (1 канал данных, до 8GTs)

  • Один 1000BASE-T Ethernet, с поддержкой IEEE 1588v2

  • Один WiFi модуль, 2.4/5GHz, c Bluetooth Low Energy

  • Масса низкоскоростных интерфейсов (UART, SPI, I2C, JTAG)

  • Питание от USB или от 5-20В внешнего источника питания

Практически все, что есть в процессоре. И это все в сборке размером с кредитку. Разводка всего этого в 6 слоях было тем еще приключением. Собственно, все это отражено на КДПВ. Но на этом решили не останавливаться, и решили еще немного добавить в новой ревизии:

  • Двухпроводой автомобильный Ethernet (до 100 Mbps)

  • Два CAN интерфейса, каждый с индивидуальным PHY

  • NFC и Trusted Platform модуль (криптография и все такое)

  • RTC с твердотельным суперконденсатором

Кстати, о разводке: вот лицевая и тыльная сторона платы в том виде как это вижу я во время проектирования: в таких случаях начитается оптимизация на новых уровнях: например у USB-3.0 высокоскоростные диффпары можно переподключать с «неправильной» полярностью: линк в процессе тренировки подстроится. И это определено в стандарте USB. Такие знания позволяют творить с USB хорошие трюки: например разводка всего USB в одной плоскости. А это хорошо с точки зрения целостности сигналов: меньше переходов на другие слои – меньше искажений полезного сигнала. Да и разводка получается элегантнее и компактнее. И таких трюков десятки.

Да, каждый проводник, каждый разьем, каждый компонент поставлен вручную.
Да, каждый проводник, каждый разьем, каждый компонент поставлен вручную.
Да, это как тетрис, только круче.
Да, это как тетрис, только круче.

Еще один приятный момент: навыки работы в нескольких САПР. Разумеется у каждой САПР есть свои плюсы и минусы. Например, мне нравится Orcad Allegro за его абсолютно серьезный подход к правилам и проверкам дизайна. Система от британцев, а уж они то ребята дисциплинированные. Но еще мне нравится Altium Designer. Разработчики стараются сделать софт приятным в использовании и со всеми современными графическими фичами: вот где еще я могу собрать всю свою поделку, включая хитро выгнутые шлейфы, да так, чтобы выглядело реалистично?

Предыдущее поколение. Кстати, вся работа выполнена в Orcad, но импорт в Altium нужен именно ради таких рендеров.
Предыдущее поколение. Кстати, вся работа выполнена в Orcad, но импорт в Altium нужен именно ради таких рендеров.

Сильным подспорьем оказываются и навыки в 3D моделировании: спроектированный корпус для модуля становится как и защитой этого модуля от внешних воздействий: его уже не повредишь случайным касанием, так и придает законченный вид изделию:

Time Of Flight камеры. Реально измеряют время пролета света от лазерного диода до обьектов и обратно до фото-матрицы.
Time Of Flight камеры. Реально измеряют время пролета света от лазерного диода до обьектов и обратно до фото-матрицы.

Но это все покрывает только половину задачи. Следующий шаг – поднять все это в софте.

Софт

Очевидно, что такое обилие новых интерфейсов требует серьезной работы и на стороне софта. Итак, я понял, что я хочу с этим справится. Сборка ядра Linux это уже мелочи на сегодняшний день, никого этим не удивить, сборка Yocto тоже решаема парой пинков в нужных местах (если потребуется), модификация Device Tree Structure, собственно структуры которая сообщает ядру какая периферия для него доступна это тоже не страшно. Всяческие низкоскоростные интерфейсы просто «включаются» в ядре и заводятся в железе сразу. Но вот работа с видеоподсистемой, и особенно с камерами это был серьезный вызов. И я решил себя в этом попробовать. Я догадывался, что это кошмар, но глубину этой «кроличьей норы» оценить не мог. А оценить оказалось что.

Этот новый IMX8M Plus немного отличается от всех своих предшественников в организации всей своей медиа-подсистемы. NXP добавила в процессор так называемые ISI, Image Sensing Interfaces и ISP, Image Signal Processors, оба для обработки видео-потоков с камер. Помимо того, что все это новые модули, они еще сильно связаны с V4L2 (Video For Linux) подсистемой в Linux. И еще над всем этим ведется работа, и каждый релиз BSP от NXP отличается от предыдущего. И люди это пытаются использовать и разумеется это невероятно сложно. Быстрый взгляд в коммьюнити хаб разработчиков открыл страшную картину: я сходу столкнулся с дюжиной тем где люди обращались за помощью к NXP:

  1. https://community.nxp.com/t5/i-MX-Processors/iMX8M-MIPI-CSI-4-lane-configuration/m-p/875755

  2. https://community.nxp.com/t5/i-MX-Processors/IMX8-MIPI-CSI2-video-capture-not-working/m-p/1222637

  3. https://community.nxp.com/t5/i-MX-Processors/IMX8MP-MIPI-CSI2-Problems-in-custom-camera/m-p/1234225

  4. https://community.nxp.com/t5/i-MX-Processors/imx477-sensor-driver-for-i-MX8M-Plus/m-p/1271067

  5. https://community.nxp.com/t5/i-MX-Processors/Unable-to-record-a-video-using-MINISASTOCSI/m-p/1293651

  6. https://community.nxp.com/t5/i-MX-Processors/8MPLUSLPD4-EVK-with-MINISASTOCSI-usage/td-p/1259724

  7. https://community.nxp.com/t5/i-MX-Processors/i-MX8-ov5640-mipi-v3-driver-problem-SOLVED/m-p/1022521

  8. https://community.nxp.com/t5/i-MX-Processors/IMX8MM-Gerneric-MIPI-CSI-driver-available/m-p/1085966

  9. https://community.nxp.com/t5/i-MX-Processors/Explenation-for-HS-SETTLE-parameter-in-MIPI-CSI-D-PHY-registers/m-p/764265

  10. https://community.nxp.com/t5/i-MX-Solutions/Post-TP2850-driver-on-i-MX8M-Plus/m-p/1241606

  11. https://community.nxp.com/t5/i-MX-Processors/Problems-in-detecting-MINISASTOCSI-in-i-mx8mp-plus-evk-board/m-p/1284705

  12. https://community.nxp.com/t5/i-MX-Processors/How-to-set-up-the-MIPI-CSI-2-and-ISI-to-transfer-RAW10-images-on/td-p/1134413

И это не праздный интерес «а что это вы тут сделали?», это конкретные вопросы «у нас не работают ваши изобретения на вашем-же железе». В общем, проблема становилась все масштабнее.

Небольшое отступление: разработка железа с моей точки зрения несколько проще: да, разумеется нужно обладать знаниями в области, понимать пути решения задачи и обладать опытом, но в случае когда железо проектируется с нуля присутствует полная свобода выбора: здесь я поставлю процессор, а тут разъемы (немного утрирую, конечно). В софте, особенно в Linux, есть 30 лет истории развития проекта, и в нем всё со всем тесно связано. «Нельзя просто так взять и добавить драйвер» © с нуля, нужно понимать все пути взаимодействия этого драйвера с системой, и систему соответственно. Особенно в таких случаях, когда это массивные штуки вроде медиа-подсистемы.

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

Да, Ubuntu была поднята практически сразу. Но расскажу я об этом далее.
Да, Ubuntu была поднята практически сразу. Но расскажу я об этом далее.

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

В результате я доказал себе отладка как железа, так и софта одним человеком, особенно на таком уровне сложности ВОЗМОЖНА. Это для меня выглядит как level-up, и вот почему. Есть предположение, что это знание масштабируемо: работая меж двух команд (SW и HW) можно как разрешать многие ошибки на начальных этапах проектирования, так и в последующем значительно ускорять процесс разработки (понимая что и где нужно каждой из команд).

На этом работа над камерой была завершена. Но помимо этого есть еще и вывод видео. И это было второй частью приключения. Вывести картинку не сложно, но вот вывести на монитор GUI целой операционной системы уже посложнее. Небольшой флэш-бэк из прошлой статьи: “В качестве собственно операционной системы я выбираю Debian. По-моему, отличный дистрибутив — простой и надежный, как деревянная палка. Беру готовую сборку, распаковываю на раздел карточки, и указываю при загрузке ядра, где искать его законную корневую.”

Так вот, с графикой такое не проходит. Графическая подсистема (скажем, оконный менеджер) тесно завязана на десятки библиотек, а эти библиотеки в свою очередь завязаны на ядро Linux, которое в свою очередь обращается к драйверу графического ускорителя. Драйвера собираются под конкретное железо, и могут предлагать только часть возможностей необходимых оконному менеджеру, соответственно, не любая комбинация возможна.

В моем случае мне несказанно повезло: NXP дружит с Wayland, а Ubuntu (прямой потомок Debian) совсем недавно начала поддерживать Wayland со своей стороны.

То есть, пара дней гуглинга и медитаций дали желаемое: я завел Ubuntu на новом процессоре. А это уже открывает окно в целый мир: я сходу поcтавил ROS (Robot Operating System), подключил уже проверенный PCIe модуль с любимыми видео (а потом и аппаратный Neural Network Accelerator) и поставил соответствующий софт. Даже YouTube посмотрел, чего я не мог сделать на своем предыдущем одноплатнике:

Дружно вспомнили мем про видосики
Дружно вспомнили мем про видосики

Таким образом, получилась целая платформа, немного напоминающая Raspberry PI. То есть: подключил клавиатуру, мышь, дисплей и вот у тебя полноценный компьютер. Еще один level-up: я с детства мечтал спроектировать и собрать собственный компьютер, с теми интерфейсами какие я хочу, с той геометрией и тем софтом которым я привык пользоваться. Получилось здорово, мне нравится.

Aftermath

Разумеется, многие интерфейсы еще не проверены, работы непочатый край, разумеется, есть идеи как систему можно расширить благодаря ее модульности. Есть вещи, которые просто обязаны, случится, например Time Of Flight камеры лежат и ждут когда за них возьмутся.

Над проектом ведется работа, и не одним лишь мной. Будет вкусный софт и вся поддержка, и не только со стороны NXP. Всю эту систему с полным набором интерфейсов можно будет получить даже бесплатно, вот как это происходило с предыдущим поколением.

При первой-же возможности доступ к файлам проекта будет открыт (как для https://nxp.gitbook.io/8mmnavq/), и мне будет крайне интересно услышать мнение от ребят с опытом. Реально интересно кто сможет найти проблемы в дизайне и буду рад за тех у кого вообще возникнет такое желание.

В целом, я рассматриваю это как хороший старт, и надеюсь что я немного раскрыл свою мысль из введения: «я занимаюсь разработкой электроники и мне этого мало». Stay tuned!

P.S. На LinkedIn есть еще немного картинок

Комментарии (63)


  1. shnegs
    10.09.2021 12:16
    +7

    DDR3L памятью нас попросили переделать под DDR4

    В роботе, блин, ПЫЛЕСОСЕ???


    1. a_freeman Автор
      10.09.2021 12:17
      +8

      Да... DDR4 становится дешевле DDR3L.


      1. checkpoint
        10.09.2021 12:33
        +2

        Только развести DDR4 существенно сложнее чем DDR3 и заводится плата не с первого раза, и дебажить её неизвестно как. А в LPDDR4 почему-то убрали фичу TEN - позволяющую хотя бы протетстировать пайку выводов.


        1. a_freeman Автор
          10.09.2021 12:42
          +5

          Вот тут включается навык переиспользования: есть референс-дизайн, проверенный и рабочий. Дальше из этого дизайна выдирается то, что надо и переносится в финальный проект. Разумеется стекап и все нормы применяются ко всей финальной плате. Но такова воля заказчика -- иметь одноплатное решение.


        1. order227
          10.09.2021 12:52
          +3

          Только развести DDR4 существенно сложнее чем DDR3

          Миф и глубокое заблуждение... DDR3/DDR4 принципиально ни чем не отличаются в трассировке, особенно когда это просто один чип памяти и стоит он близко к процу. Из отличий разве что желательный переход с обычного FR-4 на материал платы типа TU-872 SLK или около того.

          заводится плата не с первого раза

          Если выполнить все требования из гайда и корректно спроектировать стек, то заводится с первого раза на максимальной частоте. Главное понимать что делаешь.


          1. checkpoint
            10.09.2021 14:31

            Если выполнить все требования из гайда и корректно спроектировать стек, то заводится с первого раза на максимальной частоте.

            Хорошо, когда разработчик ничем не ограничен, тогда удается выполнить все требования и рекомендации "из гайда", правильно расчитать длины и импеданс проводников с у четом переходных и т.д. Но реалии таковы, что выполнить эти требования на 100% нельзя, так как расположение выводов СнК порой бывают совершенно не "user friendly", масса ограничений на топологию, технологические ограничения производства ПП, требования по отведению тепла и еще черт знает сколько всего.

            Главное понимать что делаешь.

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


            1. sepulkary
              10.09.2021 14:56

              С целью получения такого понимания взрослые парни проводят симуляцию на электромагнитном уровне, все это очень затратно по деньгами и времени

              Мне кажется, в симуляции нет ничего такого уж запредельно затратного, обычное ПО для ПК, типа Mentor HyperLynx или Ansys SIwave. Я на своей работе уже год пытаюсь продавливать тему с обязательным моделированием ПП после трассировки, но пока не очень удачно, людей никак не хватает.

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


              1. checkpoint
                10.09.2021 15:02
                -1

                Mentor HyperLynx или Ansys SIwave

                Ценник пытались узнавать на это дело ? Все эти затраты ваша фирма должна будет переложить на плечи своих заказчиков, а это, в активной конкурентной среде, сделать крайне не просто.


                1. sepulkary
                  10.09.2021 15:17
                  +1

                  Ценник пытались узнавать на это дело?

                  Да, цены знаю, у моего работодателя даже есть валидная лицензия на ряд пакетов Ansys, SIwave в том числе.

                  Но я в первую очередь хочу сказать, что моделирование не входит в стек большинства конструкторов ПП не из-за цен на ПО (актуальный HyperLynx, например, лежит на торрентах, можно хотя бы попробовать и показать руководству результаты), а из-за отсутствия такой практики и привычки. Что-то из OrCAD, Allegro, Altium, SolidWorks стоит у каждого (кто-то покупает лицензию, кто-то "крутится"), но вот HyperLynx или SIwave я не вижу ни у кого. И это неправильно.


                  1. checkpoint
                    10.09.2021 15:32

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


                  1. order227
                    10.09.2021 22:24
                    +3

                    но вот HyperLynx или SIwave я не вижу ни у кого

                    Вы не туда смотрите просто)) Но и справедливости ради... пока вы не пытаетесь прокинуть 16 GT/s по плате на 12+ дюймов, то явной необходимости в SI и нету. Да, это хороший тон, но знаю несколько компаний (в РФ и за пределами), где проектируют сетевое оборудование и сервера, при этом SI не проводят в большинстве случаев.

                    Вообще выполнение рекомендаций с гайдов и наличие здравого смысла позволяет запустить что угодно с шансом 95%+ с первого раза. Отдельный случай, где без SI (в моем понимание) никак - это носимая электроника уровня айфона, где супер плотная трассировка кучи скоростных интерфейсов и можно долго скакать по граблям из-за crosstalk.


                    1. sepulkary
                      12.09.2021 15:26
                      +1

                      У меня сейчас интерфейсы 10 Гбит (10.3 Гбит с учетом служебной информации) и 25 Гбит (25.8 Гбит), правда crosstalk минимальный, т. к. всё аккуратно трассируется в виде дерева от процессора до PHY и далее к оптике.


                1. order227
                  10.09.2021 22:19

                  Ценник пытались узнавать на это дело ?

                  С каких пор 50к$ за SiWave стали проблемой для компании то? Это дорого для разработки дома на коленке, но копейки для любой мало мальски адекватной компании.


                  1. checkpoint
                    11.09.2021 00:08
                    -1

                    Золото килограммами меряете ? Для моей компании - $50к это зарплату людям год выплачивать. Вы там на госзаказах совсем с катушек послетали ?


                    1. order227
                      11.09.2021 00:43

                      Мы как раз никакого отношения к гос. заказам не имеем)) Вообще если для бизнеса 50к$ на основное средство производства это много, то смысла нет в существовании данного бизнеса. По сути это годовая зп всего лишь 1...1.5 тополога, который решает задачи где SiWave это необходимость.

                      P.S. переходите в продуктовые компании, хватит сосать лапу в очередном "дизайн хаусе" на 10 сотрудников с учетом вахтера


                      1. checkpoint
                        11.09.2021 00:56
                        +3

                        Следуя Вашей логике малый бизнес весь давно пора закрыть за отсутствием смысла к существованию. Да, знаете ли, $50k это овердохрена, заработать такие средства нам дается не просто, и, если такие свободные деньги появятся, то я скорее всего приобрету еще один установщик или питателей к старому. Траты на софт - это последнее о чем приходится думать. Правильнее сказать - я бы рад потратить, да нет их.

                        Что означает Ваша фраза "переходите в продуктовые компании" ? У меня своя компания на 10 сотрудников с вахтером и техничкой, куда мне переходить ?


                      1. order227
                        11.09.2021 01:26
                        +3

                        заработать такие средства нам дается не просто

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

                         малый бизнес весь давно пора закрыть за отсутствием смысла к существованию

                        Все так, это суть капитализма. Малый бизнес или кормит большие компании, или прекращает свое существование или в супер редких случаях - начинает расти и укрупняться. Вся суть бизнеса - стать крупнее. Если для вас 50к$ на основное средство производства это много, то с укрупнением все очень плохо идет.

                        я скорее всего приобрету еще один установщик или питателей к старому

                        И все равно проиграете в цене масс продакшен сборке и логистике в Азии, что грустно конечно, но неизбежно.

                        Траты на софт - это последнее о чем приходится думать

                        В таком случае ваш основной бизнес это не разработка, а производство и SiWave не является для вас инструментом заработка. Если же бизнес построен на разработке, то любой софт окупается за год примерно, т.к. вы начинаете продавать продукт, выдаваемый этим софтом.

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


                      1. checkpoint
                        11.09.2021 04:12
                        +3

                        Звучит как эпитафия, спасибо на добром слове.

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

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


            1. order227
              10.09.2021 22:16

              технологические ограничения производства ПП

              Смешно такое читать, когда в статье ARM SoC обычный разводят в нормах 3 mil, о каких ограничения то речь? В таких же нормах проектируют сервера на x86, например. В данном случае ограничений нет в плане технологий.

              расположение выводов СнК порой бывают совершенно не "user friendly"

              Может еще и существуют такие SoC, но я лично не встречал. Те же i.MX имеют прекрасный pinout для контроллер DDR, как в принципе и большинство SoC. Из откровенного треша встречал только STM32MP1, которые очень легко разводятся когда 1 чип памяти, но где разработчики не включили мозг на случай когда пользователю хочется 2 чипа... Но это прям реально редкое исключение в наши дни. Недавно разводил ASPEED AST2600, там вообще DDR4 можно развести в "2 сигнальных + 2 плейна".

              необходимо понимать, как происходит распространение сигнала в линиях на данных частотах в данном изделии

              Ну опять же миф... Гайдлайны пишут для того, чтобы любая кухарка могла спроектировать устройство со скоростным интерфейсом. Даже конкретный stackup (или даже несколько) производитель под свой чип дает всегда. По сути гайдлайны и нужны чтобы проектировать, не имея сильно глубоких знаний. Если разработчик моделирует в голове прохождение сигналом и считает на листке бумаге импеданс, то полагаю жалкие 2-3 ГГц для него даже на разминку не тянут.


              1. a_freeman Автор
                10.09.2021 22:27
                +1

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

                Ух сколько я с ним времени провел чтобы два чипа, да еще и компактно:

                Зеркальное расположение памяти и трассировка были стянуты с открытого проекта https://www.imx6rex.com/
                Зеркальное расположение памяти и трассировка были стянуты с открытого проекта https://www.imx6rex.com/


                1. order227
                  10.09.2021 22:32
                  +1

                  Ух сколько я с ним времени провел чтобы два чипа, да еще и компактно

                  Воооот, вы понимаете мою боль :)) Вообще не понятно что они курили, когда делали pinout под расположение 2-х чип в линию один за другим... Хотя возможно LPDDR3 хорошо разводится, но все же...


              1. checkpoint
                11.09.2021 00:11
                +1

                Смешно такое читать, когда в статье ARM SoC обычный разводят в нормах 3 mil, о каких ограничения то речь? В таких же нормах проектируют сервера на x86, например. В данном случае ограничений нет в плане технологий.

                Технологические нормы Резонита видели ? Или Вы тоже "не в России" ?


                1. order227
                  11.09.2021 00:50

                  Технологические нормы Резонита видели ?

                  А меня кто-то вынуждает заказывать платы в РФ? Достаточно не работать в оборонке и вам открывается дивный азиатский рынок. Даже PCBway умеет 3 mil, а это лоукостер китайский..

                  Кстати, резонит таки умеет 3 mil, но скорее всего не у себя на заводе, а делают у партнеров в Азии. В принципе никто не мешает у них заказать и HDI платы на каком-нибудь TU883, они готовы сделать - проверял.


                  1. checkpoint
                    11.09.2021 01:23
                    +1

                    Азиатский рынок это чудесно. Расскажите как Вы проводите таможенное оформление таких заказов ПП и в какие траты это выливается ? Или Вы заказываете "для личного использования" ? Так это до первого попадоса.

                    Резонит не принимает к заказу платы с ПО диаметром менее 0.3мм. Я не спроста поинтересовался у автора статьи в какие попологические нормы он вышел с этой платой. Так вот, его плату Резонит, с большой вероятностью, не примет к производству. Но так, как автор не собирается производить платы в России, то его мало колышит такое расположение дел.


                    1. order227
                      11.09.2021 01:40

                      Расскажите как Вы проводите таможенное оформление таких заказов ПП

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

                      и в какие траты это выливается

                      В 1.5...3 раза дешевле резонита, платы в основном 6-14 слоев. Прототипы заказываю в Резоните или PCBway, смотря какая задача. В принципе Резонит может сделать практически все, со своими приколами, но все же часто быстрее Китая/Тайваня.

                      Резонит не принимает к заказу платы с ПО диаметром менее 0.3мм

                      Вы что-то не то делаете... У них 0.45/0.2 и 0.4/0.2 via это давно уже мейнстрим, который они точно у себя на заводе делают. Могут, кстати, и меньше, но HDI в основном в Китае заказываю, это просто быстрее выходит и дешевле.

                      не примет к производству

                      Они не принимают к производству платы в случае не соответствия их возможностям, но 0.4/0.2 via они точно могут, как и 3 mil и попарное прессование и всякие backdrill и blind via, проверено лично так сказать. При чем технолог обычно указывает точное место и причину что и почему они не могут произвести. Если интересно напишите в личку - скину email их инженера с которым постоянно общаюсь, очень адекватный технолог.


                      1. checkpoint
                        11.09.2021 03:48
                        +1

                        Мы уже более 10 лет заказываем платы в Резоните и их техвозможности я себе представляю. В основном у нас всё достаточно крупное, но тут вот появился проект с СнК на 2000 выводов BGA с шагом 0.5, что бы выйти из-под него требуются via 0.3/0.1. Проект уже готов, я начал обзванивать производителей ПП, Резонит брать такую плату не хочет - минимум 0.4/0.2 и то по спец тарифу. Скорее всего придется отправлять в китай от физ.лица. Но как потом производить эту плату серийно - не понятно. Работа с таможней для мелкой фирмы это непостижимый гимор.


                      1. Areso
                        11.09.2021 09:52
                        +2

                        1) карго перевозчики

                        2) таможенные брокеры. Могут сделать правильно, могут сделать быстро/дешево (но не совсем правильно). Кто там в этих ваших печатных платах чего понимает?)


                      1. checkpoint
                        11.09.2021 13:40
                        +1

                        Услуги брокера делают стоимость плат (электронных компонентов) космическими - узнавал у же. Например, Importexpress берет 400 EURO за позицию. Услуги брокера имеют смысл только при растаможке товаров от 1 млн руб.


                      1. andrey_geltser
                        11.09.2021 22:09

                        Вообще без проблем можно заказывать через российского партнера изготовление в Китае , мы постоянно так делаем, цены почти всегда (!) ниже чем в Резоните, на серию тем более, но и на малый тираж тоже (и опытные платы и мелкая серия). Никаких физлиц и прочих приключений с таможней и заключением контрактов с иностранными компаниями (только для ключевых компонентов). Резонит хорош тем что там быстрее можно сделать, ну и ещё несколько компаний которые у себя делают в РФ, часто там цена тоже конкурентная.

                        Мы даже иногда материал закупаем и завод его у себя держит (поставка некоторых материалов это долгая история)


                      1. checkpoint
                        11.09.2021 23:51

                        Подкиньте пожалуйста контактик "российского партнера", можно в личку.


                      1. order227
                        11.09.2021 10:38
                        -1

                        Аааа, вот 0.1 действительно не могут. Сам столкнулся с этим когда нужно было 0.25/0.1 via. Тут или Китай/Тайвань напрямую или через конторы посредники. Всём советую первое, ибо работать с таможней ИПшнику не очень сложно, достаточно один раз пройти по кругу эти приключения.


        1. proton17
          10.09.2021 22:38
          +1

          Не факт. У нас парень первый раз в жизни разводил DDR и сразу 4ый + Zynq MPSOC. Все завелось и прекрасно работает с первого включения питания, даже в таймингах не пришлось руками копаться.


    1. juramehanik
      10.09.2021 12:48

      Да ладно вам, зато CV и блокчейн можно прикрутить, чтоб он какули не размазывал!
      https://www.theverge.com/2021/9/9/22660467/irobot-roomba-ai-dog-poop-avoidance-j7-specs-price


      1. a_freeman Автор
        10.09.2021 12:50

        Собственно, многие роботы конкурентов уже освоили эти технологии: https://www.gizchina.com/2021/03/30/mijia-robot-vacuum-cleaner-pro-goes-official-with-3d-tof-sensor/


        1. FuzzyWorm
          10.09.2021 14:08
          +2

          У меня более старая модель этого робота, но он успешно построил карту квартиры своим лидаром (с Нарнией за зеркальной дверью шкафа), и при уборке наносит на нее фотографии разбросанных тапочек (с пометкой "85% вероятности, что это обувь"). Функция игнорирования какулей тоже заявлена (не проверял). Блокчейна вот только нет, так что на электричество себе не зарабатывает.


  1. quaer
    10.09.2021 12:27
    +2

    но в результате мне потребовалась неделя, чтобы заставить камеру работать.

    Вы хотите сказать, что за неделю освоили премудрости написания драйверов на Линукс?


    1. a_freeman Автор
      10.09.2021 12:31
      +5

      Спортировал драйвер из существующего железа, нашел где подоткнуть костыли, чтобы все завелось


  1. checkpoint
    10.09.2021 12:30
    +1

    Скажите пожалуйста, сколько слоев металлизации у Вас получилось и в какие топологические нормы удалось вписаться: размер переходного, мин ширина проводника, зазора, пояска ПО. Где изготавливали прототип печатной платы ? Так же интересует как Вы устанавливали СнК NXP IMX8M - самостоятельно или отдавали на производство ?

    Ну и совсем нескромный вопрос - во сколько обошлась лицензия на САПР OrCAD Allegro в комплектации позволяющей разводить DDR4 ? На сколько я помню, пару лет назад, там одно рабочее место стоило от 1 млн руб. Спрашиваю потому, что занимаемся подобными вещами, используем САПР KiCAD по причине отсутствия возможности приобрести полную лиценцию на OrCAD - заказчики совершенно не понимают почему они должны платить "огроменные деньжища" за проектирование таких плат, ведь RPi4 стоит сущие копейки.

    PS: За проделанную Вами работу - респек и уважуха. Дело это очень тяжелое, нервное и пожирающее время.


    1. a_freeman Автор
      10.09.2021 12:39
      +2

      Процессорный модуль: 6 слоев. Дизайн модуля доступен онлайн: https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-8m-plus-applications-processor:8MPLUSLPD4-EVK

      Несущая плата: 6 слоев, все нормы унаследованы из процессорного модуля (трассы до 3mil, зазоры до 3mil, все идет из правил на диффпары)

      Переходки везде 0.2мм, никаких слепых, никаких микровиа, все бюджетно, изготавливали в Китае через фирму с которой сотрудничаем много лет. Насчет производства: сейчас мне точно никто не поверит: у нас свое производство, сами собираем все что на всех фото в статье.. Но это не в РФ.

      По лицензии не могу сказать, это вопрос к руководству. Да, это стоит того. На KiCAD я не захочу переходить однозначно.


      1. juramehanik
        10.09.2021 12:57
        +1

        зачем такие зазоры (3mil) и такие отверстия на несущей?, у вас же там нет BGA 0.5mm?
        >> все идет из правил на диффпары
        ну как бы эээ, есть требования к диффпарам и их можно реализовать ну куда больших ширинах дорожек и зазоров


        1. a_freeman Автор
          10.09.2021 13:01
          +1

          На несущей есть пара компонентов с шагом 0.4мм :)

          Да, можно упростить стекап, увеличить трассы, но тогда они, например, не пройдут между переходками вокруг разъемов и вся плата вырастет в размерах.

          Стоимость платы такого размера с трассами 3mil не сильно страшная, а вот возможность спроектировать так компактно нам важна.


          1. juramehanik
            10.09.2021 13:05

            Понял, спасибо!
            если не секрет , а какие это компоненты? (вроде mini hdmi и ethernet что там внизу шаг 0.5 но может и ошибаюсь)



    1. 3cky
      10.09.2021 12:52
      +5

      Хватает ли средств, предоставляемых KiCAD, для проектирования таких плат? Если нет, то какие именно трудности возникают? Ну а если хватает - то почему есть заинтересованность в переходе на OrCAD?


      1. juramehanik
        10.09.2021 13:02
        +4

        в кикаде очень тяжело разводить диффпары - они банально разбиваются при попытке их подвинуть. но в 6 вроде обещают это исправить, а в последнее время он очень бурно развивается. вроде бы мелочь, но отнимает очень много времени.
        Ну и все таки инструменты DRC очень пока примитивные в нем, их иногда не хватает.
        Инструменты оркада сравнивать с кикадом вообще некорректно , оркад как раз для процессорных модулей, DDR СВЧ, материнских плат, и другого мощного хардкора, где даже альтиуму тяжело (хоят гвоорят что он тоже очень даже хорошо развился в последних версиях)
        Еще у оркада очень мощный инструмент моделирования , без которого даже собственно текущей процессорный модуль развести под imx8 трудновато если менять стекап или расположение проца, памяти.


      1. juramehanik
        10.09.2021 13:10
        -1

        В целом, поработав p-cad orcad eagle sprint, easyeda по работе и не только(ну кроме оркада ахаха)
        могу сказать что пикад это лучшее что на данный момент создало человечество для бесплатных проектов малой и средней сложности


        1. juramehanik
          10.09.2021 13:31
          +3

          чертов новый интерфес хабра без возможности редактирования(или я кнопку не могй найти нужную)
          я хотел сказать "кикад лучшее что..."


          1. checkpoint
            10.09.2021 14:47
            +1

            Откровенно говоря, в OrCAD интерфейс еще более злой чем в KiCAD. Самый лучший интерфейс и набор фич у Altium-а.

            Я столкнуся с тем, что разработчики привыкшие к крякнутому Altium-у совершенно не хотят сползать с него на свободный KiCAD, приходится палками загонять :-).


            1. juramehanik
              10.09.2021 15:08
              +2

              как любим говорить: интерфейс оркада придуман орками для орков =).
              на счет перехода с альтиума на кикад не знал)


            1. nitrocaster
              11.09.2021 03:31
              +1

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

              И вендоры этим пользуются. Вы покупаете лицензию Altium Designer (которая стоит дороже Visual Studio, к слову), рассчитывая на некоторый набор фич, который Altium рекламирует. С лицензией вам дается подписка на бесплатные обновления в течение года. Вы начинаете этим всем пользоваться и сталкиваетесь с рандомными вылетами, детскими багами с размножающимися мерцающими окнами крэшрепортера, тормозами на ровном месте, и даже порчей данных в библиотеках компонентов. Некоторыми фичами из-за этого пользоваться практически невозможно. Вы исправно репортите все эти баги, а потом оказывается, что исправления доступны в обновлении, доступа к которому у вас уже нет, потому что подписка протухла. То есть, вас буквально обманывают, продавая фичу, которая не работает, а потом предлагают заплатить еще раз за шанс получить ее в работоспособном виде.

              Мое личное впечатление после 3.5 лет работы с EAGLE и Altium Designer сводится к тому, что EAGLE в некотором смысле представляет из себя более качественный продукт. Набор фич ограничен, но эти фичи работают.


            1. V1RuS
              12.09.2021 16:20

              для бесплатных проектов малой и средней сложности

              очень подходит diptrace. у него своих косяков конечно хватает, но хотя бы интерфейс не для орков


      1. checkpoint
        10.09.2021 14:40
        +3

        Мы разводим в KiCAD, достаточно успешно, но гимор еще тот. В целом, я рад, что есть такое средство как KiCAD, без него наша деятельность была бы невозможной. Думаю подкинуть разработчикам KiCAD немного денежки, поддержать хотя бы чисто символически.

        У нас есть лицензия на OrCAD, но она на столько урезана, что KiCAD по сравнению с этим OrCAD кажется вершиной творения.


  1. trak
    10.09.2021 13:42
    +2

    Тот самый случай, когда волшебство, ничего не понятно, но так круто!!! Спасибо автору!


  1. slovak
    10.09.2021 18:44
    +1

    >> Пособие для продвинутых

    А где же руководство? В статье случайный набор не то чтобы советов, но личных впечатлений и хвастовства. Не боитесь, что завтра наступит valley of despair по Крюгеру?


    1. checkpoint
      10.09.2021 20:23
      +1

      Обычно разочарование наступает на этапе "полевых" испытаний, когда вскрывается масса трудно устранимых дефектов - "мачало - начинай с начала".


    1. a_freeman Автор
      10.09.2021 20:58

      Да, должен признать, присутствует эйфория от достигнутого.

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

      А разочарование наступит в любом случае, и это уже тоже проходил. Но это же не повод сидеть и ничего не делать.


  1. the_bat
    10.09.2021 19:49

    Спасибо за статью. Подскажите, где сейчас берете DDR4? Можно ли купить >30шт?


    1. a_freeman Автор
      10.09.2021 21:00

      Есть контакты с Kingston, да, доступны разумные объемы.


    1. order227
      10.09.2021 22:28

      Mouser (ПМ Электроникс в РФ) спасут отца русской демократии: https://ru.mouser.com/Semiconductors/Memory-ICs/DRAM/_/N-4bzp3Z1yzvvqx?P=1y91pi6&Keyword=ddr4&FS=True


  1. CodeRush
    10.09.2021 21:34
    +3

    Поздравляю автора, тоже проходил похожий квест, заводя в далеком 2015 году MIPI-CSI на SoC Intel BayTrail, установленный на плате congatec conga-TCA3. Хотя я эту плату сам и не разрабатывал (разработчики железа сидели в том же помещении через два стола), но ощущения от того, что камера наконец-то завелась после двух недель бесконечных плясок вокруг нее — бесценно. У Intel на тот момент с поддержкой и BSP было еще хуже, чем тут описано, и там были драйверы ровно на три очень похожих камеры OmniVision (все три — помойные, конечно), причем исключительно для кастомной 32-битной Fedora с древним ядром, и портировать это все на нормальный Линукс было очень интересным unprotected butt fun опытом, скажем так.


  1. ignat99
    11.09.2021 14:07

    KiCAD документация должна быть на это разведеное устройство и отладочную плату на iMX8 Quad+ New iMX8QuadPlus System on Module is ready for prototyping | olimex (wordpress.com)


  1. Muzzy0
    14.09.2021 14:59
    +1

    Масса низкоскортных интерфейсов (UART, SPI, I2C, JTAG)
    Низкоскоростных или низкосортных? :))


    1. a_freeman Автор
      14.09.2021 19:33
      +1

      Спасибо. поправил! :) В сравении с PCIe/USB это уже низкосортные :D