Когда у тебя есть 3D-принтер, кучка серв и микрокомпьютер
Хотелось бы начать серию статей о моих злоключениях при адапртации одной модели робота под более мощные сервоприводы, но не уверен, что это кому то нужно
Разбор кода исходного проекта и мат-модель робота
Перенос кода на Linux
Создание контролера сервоприводов.
Адаптация цепей питания сервоприводов
Адаптация модели для 3D-печати
P.S.:
Не нашел как в "посте" создать опрос, а на статью это не тянет.
Прошу писать в коментариях, интересно ли это.
Спасибо.
Исходную модель укажу в коментарии(не я автор, и считаю нужным указать источник модели и кода).
Господа! Я приехал в отпуск в Тбилиси и Батуми и мы тут с местными коллегами из sandb0x.space решили устроить митап. Пока в Тбилиси 12 августа, но если будут желающие и в Батуми, можно и там тоже (я буду там 7, 8 и утром 9). Вот объявление:
For the last 40 years, chip designers have used Verilog hardware description language and logic synthesis technology to create the devices we see everywhere: smartphones, computers, ML hardware accelerators.
While the logic of most mass–produced chips, called ASIC (Application Specific Integrated Circuits), is fixed at the silicon foundry, there is a special kind of chips with changeable logic, called FPGA, or Field Programmable Gate Array. FPGAs are used for prototyping, education and applications like high-frequency trading.
During the workshop, we are going to use Verilog to configure FPGA, starting with simple arithmetic, then doing 2D graphics.
Меня в разных постах обвиняли, что я якобы базирую свою критику AI только на старых бесплатных моделях. Что-ж, пару недель назад я дал задачку самой последней самой платной версии Claude и вот мои наблюдения. Если кратко, из него можно выбить правильный ответ, если знать какой ответ должен быть, но в процессе выбивания оно демонстрирует целый букет наивностей, свойственный людям, которые перешли на верилог из Си. Я аж прослезился, вспомнив как я делал такие же ошибки 30 лет назад. При этом оно еще и пытается спорить и что-то доказывать, что я у него запросил якобы "теоретически невозможно".
Конечно самое коронное из наивностей - это перепутать стадии конвейера и состояния последовательного конечного автомата. Даю ему задачу спроектировать блок, который принимает транзакции TIn и выдает транзакции TOut после применения некоторого алгоритма. Вообще-то такой блок уже существует, поэтому любые попытки Claude сказать "теоретически невозможно" сразу шлются подальше. Если все транзакции потока - простые, то блок должен принимать транзакции Tin каждый такт и выдавать результат Tout каждый такт (после задержки в фиксированное количество тактов).
И что же ИИ делает? Оно строит последовательный конечный автомат с 5-ю стадиями, в котором начинает обрабатывать новую транзакцию только когда, через пять тактов, заканчивает обрабатывать старую. При этом в комментариях оно пишет что это якобы pipeline, то бишь конвейер. Что разумеется ерунда, поскольку в конвейер можно засовывать следующую транзакцию как только предыдущая прошла первую стадию, не дожидаясь пока она докатится до пятой.
Помимо меня в 1996 году я такую же ошибку видел в последнее время у одного хоббиста из Израиля, который стал в своем блоге учить мир как писать процессоры, и в ответ на возражение "это не конвейер" стал оправдываться что это "конвейер" в некотором абстрактном смысле, типа поэтическом. А также у вышедшего на пенсию профессора программирования из Шотландии, который решил на старости лет также поучить людей тому что он сам неверно понимает. Это вообще свойственно программистам на Си которые впервые увидели верилог. Что показывает кому Антропик дает тренировать клод.
Итак, я пишу клоду "это не конвейер, я запросил конвейер". В ответ оно соглашается и меняет в комментариях "pipeline" на "state machine states". Но код остается тот же самый.
На это я ему говорю "каждое процессирование занимает 5 тактов для любой транзакции, я же запрашивал back-to-back для простых транзакций". ИИ в ответ оптимизирует два состояния и далее заявляет, что якобы три такта это "теоретический предел".
И вот тут я обнаружил интересную фичу: если на Клод наорать капслоком, оно перестает трендеть про "теоретический предел" c последовательным многотактовым конечным автоматом - и строит конвейер.
Но если бы с ним сидел не я, а джун после коледжа, он бы поверил клауду про "теоретический предел" и вот так бы и оставил. И что потом делать с результатом? Смириться что телефон выводит на экран игры по одному пикселю в секунду и батарейка здыхает через 5 минут?
Именно поэтому я убежден, что студентов нужно тренировать так, чтобы они умели решать задачки такого типа безо всякого ИИ. А если не хотят - пусть идут в Макдональдс или собирать клубнику на плантациях в Вилсонвилле, замещать там нелегальных мексиканцев, которых Трамп пытается высылать.
Как их сейчас тренируют в вузах? Набивают всякими мусором, который потом превращается в кашу в голове из JK-триггеров и карт Карно. Там и про конвейеры и FIFO есть, они просто висят как сферические кони в вакууме, без понятия как это прилагать к решению задач.
Монитор CAN из Отладочной Платы JZ-F407VET6 и TFT экрана.
Реализовав на этой отладочной плате функционал PCAN, можно получить мощный инструмент анализа CAN-шины на компьютере. Но иногда удобнее использовать автономный монитор расшифровывая пакеты в контроллере и выводя их на экран.
Экран подлючается по SPI, а на плате единственный порт выведенный на разъём SPI2. Также на разъёме платы P3 присуствует питание 3.3В, а кроме SCK и MOSI выведено еще 4 сигнала, задействуем их для CS, DC, RST экрана и на оставшийся сенсорную кнопку для отправки управляющей команды.
Проверяемое ЭБУ передаёт значения напряжения и тока АКБ, следовательно расшифровав их, можно вывести на экран значения в виде стрелочных приборов. Остальные параметры выводятся в окне статуса. В нижней части экрана выводятся принятые пакеты в шестнадцатиричном виде и общий счетчик пакетов.
В качестве основы проекта использовался pcan_pro_x, упомянутый в одной из публикаций Александра посвящённых этой плате, код инициализации и отрисовки экрана любезно предоставил Google Gemini.
«Народная отладка» многоядерных приложений ARM Cortex
преамбула: ..попала мне в руки плата с 2х ядерным Cortex-A7
амбула: Как оказалось, нельзя просто так подключиться ко всем (2м в моем случае) ядрам Cortex-A7 при помощи JLink и IAR
И нельзя останавливать по software breakpoint ядро0 (к которому легко и просто цепляется отладчик IARa), ибо в этом случае ядро1 может налететь на измененный код (breakpoint) и, если не повезет, (что случается, как оказалось, чаще) debug-сессия зависает наглухо вместе с процессором (почему не разобрался пока).
Однако нас это не остановит! Как известно, технология Segger RTT умеет несколько каналов как upStream, так downStream.
Нас в данном случае интересуют up (от нашего процессора к компутеру). По умолчанию их даже и сконфигурировано 2!. В памяти они расположены независимо, каждый имеет свой буфер и свои указатели голова-хвост.
Эврика! Пишем простейший враппер на SEGGER_RTT_WriteString:
unsigned int RTT_WriteStringEx(unsigned char* str) { unsigned int rc=0,bufN=getCPUID(); if(bufN<SEGGER_RTT_MAX_NUM_UP_BUFFERS) { rc=SEGGER_RTT_WriteString(bufN,(const char*)str); } return(rc); }
Все, что он делает, запрашивает номер ядра на котором работает ( вызовом getCPUID() ) , и отправляетстроку в соответствующий буфер. Таким образом, нам не нужно заботиться о взаимоблокировках при вызовах WriteString из разных ядер.
Со стороны компьютера поток rtt0 смотрим, как обычно, RTTViewer'ом, поток rtt1 он не умеет к сожалению, поэтому используем JlinkRTTLogger.exe (его путем нехитрых танцев с бубном можно направить в консоль)
И вот такую красоту получаем на экране:
PS. Останавливать ядро0 (к которому, как мы помним, подключен наш отладчик IARa) можно! там где код гарантированновыполняется на ядре0, что можно обеспечить в случае режима SMP заданиемaffinity_mask при создании задачи rtos.
PPS Данный прием может пригодиться и для отладочной печати, например, из прерывания.
PPPS Вопрос, сколько потоков upStream умеет RTT? Мне пока хватило 2, но, видимо, скоро захочется 4 или 5.
PPPPS "Антинародная" отладка выглядит сильно круче. В кустах случайно оказался рояль, причем не меньше, чем Беккер. Я говорю про связку IAR и IAR i-Jet TRACE. Полноценная отладка обоих ядер, с раздельными старт-стоп ядер, окна регистров.. Но там нет RTT. Хотя и это нас тоже не остановит!.. Продолжение следует
Моя реакция на новость "Сочинский филиал РУДН первым в России отменил дипломные работы из-за нейросетей":
Прошло три с половиной года с момента выхода ChatGPT. Похоже страсти устаканиваются и вузы вместе со школами приходят к единственному возможному выходу из ситуации: вообще перестать ставить оценки за все что делается дома. Оценки - только за устные экзамены у доски или письменные в закрытой комнате без доступа к электронным устройствам. Возможно с экранированием от WiFi и мобильного интернета, и даже осмотром ушей на предмет наличия наушника с микрофоном.
И экзаменционные лабы типа “покажи-ка как ты делаешь семиступенчатый синтез органического соединения с бумажным учебником и бумажным же справочником в руках”. Для тех кто такого не делал: это на самом деле очень творческое задание, требует тонкой наработанной упражнениями интуиции о побочных эффектах ~тысячи реакций из учебника Vollhardt & Schore, который используется в американских вузах. И карты местности органических соединений в голове.
При этом домашние задания нужно конечно же раздавать, но оценки за них не ставить. Если студент или школьник хочет их делать, не подглядывая в ИИ - хорошо, молодец, тем самым он себя натренирует, будет хорошо чувствовать на экзамене и в будущей профессии. Не хочет - тоже хорошо, получит кол на экзамене, вылетит из вуза, меньше нагрузки на систему образования. Пусть идет в “ИИ-университет”, где за значительные родительские деньги получает “ИИ-диплом” который будет рассматриваться работодателями как филькина грамота.
При этом разумеется из вузовских программ нужно убрать всякие скопившиеся там ветхости. Например мне в 2015 году декан вуза из Поволжья жаловался что министерство образования требует от них учить студентов микроконтроллерам на основе КР1816ВЕ48, советского аналога Intel 8048, предшественника Intel 8051. Эта фиговина из 1976 года использовалась вроде в клавиатурах ранних IBM PC.
Тут проблема даже не в том, что этот микроконтроллер старый - есть куча полезных для целей образования старых компьютеров, например CDC 6600 из 1964. Проблема в том, что 8048 ничего такого интересного не иллюстрирует, что можно проиллюстрировать на современных актуальных RISC-V микроконтроллерах. А вот в CDC 6600 есть в довольно чистом виде идея out-of-order scoreboard (внеочередного выполнения инструкций), которая актуальна и для современного проектирования, вместе с алгоритмом Томасуло из 1967 года (IBM System/360 Model 91). Томасуло учат во всех серьезных американских вузах, и даже ИИ вставляет их в резюме, которое оно пишет студентам.
Я бы на месте российского министерства образования требовал от вузов быстро повнедрять курсы программирования встроенных систем с российскими RISC-V микроконтроллерами К1921ВГ1Т от НИИЭТ и Baikal-U от Байкал Электроникс. Они уже человеческие по мировому гамбурскому счету (то есть это не ухудшение по сравнению с преподаванием западных STM32 или ESP32), их можно привязать к курсам компьютерной архитектуры на основе RISC-V, и это связка вузов с промышленностью. Учить на них также какую-нибудь российскую RTOS итд.
Недавно я работал над встраиваемой системой, где на FPGA крутится EKF и немного управляющей логики. Кодировать такое на RTL — занятие в лучшем случае неблагодарное, поэтому я обратился к HLS (high-level synthesis) и стал смотреть, что предлагает индустрия.
У меня уже была довольно обширная обвязка для моделирования и верификации на питоне, поэтому в идеале хотелось чего-то, что принимает его напрямую, желательно с минимальной адаптацией: скормить инструменту нужные куски моих моделей и сразу получить рабочий RTL на выходе. Ещё хотелось плавающую точку. Добавлю, что у меня используется Lattice ECP5, а значит Vitis и вот это всё отпадает, так что я смотрел в сторону вендор-независимых инструментов.
Те, что умеют переваривать питон, есть, но на практике они, честно говоря, малопригодны — разве что для очень узкого набора задач. Я тестировал Polyphony, PyLog, Allo+XLS, Allo+Vitis (тоже мимо из-за Lattice) и Veriloggen. Они работают в том смысле, что переводят какой-то питон в какой-то RTL, но не в том смысле, что можно получить что-то практически пригодное, если нужно собрать, скажем, фильтр Калмана или хотя бы базовый ПИД-регулятор. Есть и мощные инструменты (XLS, Bambu и прочие), но они не поддерживают питон, плюс к ним есть ряд вопросов (особенно по части ECP5), о которых я как-нибудь расскажу отдельно.
Лично для меня это важная вещь, потому что она уже позволила сильно ускорить мою работу. Возможности сейчас в основном определяется моими насущными нуждами, но всё это расширяемо, и любой вклад приветствуются.
Подробное описание того, как оно устроено, есть по ссылке, но основная идея такая: парсим питон, строим граф потока управления, определяем, какие операторы нужны, конструируем минимальное специализированное VLIW-ядро, планируем микрокод (полностью статически, чтобы ядро оставалось простым) и генерируем Verilog вместе с дополнительными артефактами вроде Cocotb и отчётов. В комплекте есть примеры.
Я уже прогнал бенчмарки бок о бок с Bambu, XLS, Dynamatic и Vitis — результаты выглядят достойно; напишу об этом отдельно, если будет интерес (пока ещё в работе).
Как разработать Linux-драйвер реального устройства для платформы RISC-V
Если вы хотите лучше разобраться во внутреннем устройстве Linux и узнать, как его ядро взаимодействует с физическими устройствами, то приходите на бесплатный офлайн мастер-класс YADRO. Вместе пройдем полный цикл создания драйвера дисплея LCD1602 для VisionFive2: от теории до добавления новых функциональных элементов и запуске на одноплатнике.
Что будем делать:
загрузим информацию о дисплее в ядро через Device Tree Overlay;
выведем текст на дисплей через драйвер Linux для embedded-систем;
считаем содержимое дисплея из ядра Linux и выведем в консоль;
научимся управлять подсветкой и курсором через интерфейсы Linux Kernel Driver;
займемся обработкой IRQ по нажатию кнопки;
разберем типичные ошибки при разработке Linux-драйверов.
Мастер-класс проведет Никита Косырев, инженер-программист группы системного ПО в YADRO. Никита — энтузиаст embedded-систем и архитектуры RISC-V, несколько лет занимался разработкой драйверов периферийных устройств в ядре Linux.
Приглашаем инженеров, которые хотят лучше разобраться в низкоуровневой разработке для Linux и особенно тех, кто работает с user space-приложениями.
Мастер-класс пройдет офлайн 3 июля в московском офисе YADRO, количество мест ограничено. Участие бесплатное, но регистрация обязательна.
Почему нельзя просто взять и сделать отечественный процессор побольше?
Разработчики “Герои 3” как-то поделились лором: события игры вообще-то происходят в далеком будущем, а вся эта магия и расы - просто забытые технологии.
Я сидел, ковырял на коленке умную лампу и вдруг поймал себя на мысли: для меня-то эта магия давно наступила. Как кусок крепко сплющенного песка управляет сетями, серверами и вообще нашей жизнью?
Пока в этом копался, задался тупым, но честным вопросом. В России умеют делать процессоры, но сильно отстают по техпроцессу. Почему бы просто не сделать чип физически больше? Ну да, будет жрать электричество, но инженеры же могут это решить?
Чтобы понять, почему идея не рабочая, пришлось нырнуть в то, как песок вообще превращают в мозги для компа.
Оказывается, сначала из очень чистого кремния(песок буквально) выращивают болванку и режут её на диски (зеркальные блины). Потом по этому блину бьют лазером через трафареты. Выжигают миллиарды транзисторов, тянут медные дорожки и строят нано-город. На один блин влезают сотни процессоров. В самом конце его шинкуют на квадратики, которые называют кристаллами. Дальше кристалл клеят на плату, закрывают крышкой - и всё, процессор готов.
Размер кристалла нельзя раздувать просто так, тут сразу несколько причин.
Экономика и банальная пыль.
Блины на заводах не бывают идеально чистыми. Из одного блина выходит 500 мелких кристаллов, случайная пылинка запорет два-три. Брак копеечный. Но если резать огромные куски, их на блине поместится штук десять. Одна пылинка — минус 10% партии. А если их с десяток, весь блин летит в помойку. Себестоимость такого гиганта просто улетит в космос.
Синдром утюга.
Старый техпроцесс жрет больше напряжения. Размажешь миллионы транзисторов по гигантскому кристаллу и он начнет выдавать сотни ватт тепла. Сработает защита от перегрева, частоты упадут почти до нуля. В итоге огромный чип будет работать медленнее нормального маленького.
Скорость света.
Тут мы тупо бьемся о фундаментальную физику. Чем больше кристалл, тем дольше сигнал идет от одного края до другого. В огромном процессоре ток просто не успеет пробежать это расстояние за один такт.
Ладно, если делать один кирпич бессмысленно, почему не воткнуть в материнку два обычных процессора?
На серверах так и делают. Но для домашнего компа это боль. Два камня постоянно тратят время на перекличку. Пока они кидаются данными, игра или тяжелый софт начнут жестко лагать из-за задержек.
Но есть изящный выход. Эту фишку обкатала AMD, когда начала отставать по тех-процессу и это чиплеты. Процессор не льют единым куском, а собирают на подложке из мелких кристаллов. Один считает, другой рулит памятью. Это дешево, решает проблему пыли на блинах и обходит кучу физических лимитов.
Я подумал: блин, для наших процессоров это же идеальный путь!
А потом уткнулся в реальность. Чиплеты круто работают, когда ты можешь печатать их мелкими. А у нас заводы вроде “Микрона” уперлись в 65–90 нанометров. Тайваньская TSMC, которая печатала сложную мелочь, маршрут закрыла из-за санкций.
Полез с детским вопросом “почему не сделать побольше”, а понял, что микроэлектроника - это место, где в одной точке бьются лбами физика, экономика и геополитика. Простые решения тут давно не работают.
Кто шарит за железо - как думаете, у нас есть шанс выехать на архитектурных фокусах типа чиплетов? Или без доступа к современным заводам мы так и будем вечно догонять? Залетайте в комменты дебажить.
На мою воскресную тусовку в Hacker Dojo зашла азиатская женщина по имени Лили и произошло то, о чем я читал в книжке Chip War. В ней есть эпизод, как американские бизнесмены в 1960-е приехали в Юго-Восточную Азию и были потрясены, как просто использовать местных жителей для сборки всего электронного. Учатся мгновенно, делают точно и быстро, и не выпендриваются, как американские рабочие с их дурацкими профсоюзами.
Итак, Лили - программистка вебсайтов, пишет на Java и TypeScript. Никогда в жизни не прикасалась к паяльнику. Пришла на мой митап с запросом “я хочу сделать CPU из микросхем малой степени интеграции”, то бишь рассыпухи из И/ИЛИ/НЕ, D-триггеров, мультиплексоров, 4-х битных сумматоров итд. Как делали в конце 1960-х.
Я ей сказал, что готов помочь ей удовлетворить ее желание, но на это потребуется до хрена таких микросхем. Даже чтобы сделать аккумуляторный процессорик с тремя регистрами (счетчик команд, аккумулятор и индексный регистр). Сначала я показал ей как собирать простые гейты на безпаечной макетной плате, а потом предупредил, что если уставить такими целый стол, то будут все время глючить контакты, поэтому лучше паять.
Лили согласилась, я вытащил паяльник из ящика и показал ей как делать это танцевальное движение: подводим паяльник к пину, прогреваем, подносим проволоку припоя, она плавится, припой стекает в дырку и образует конус, проволоку отводим, потом отводим паяльник.
Затем я вручил Лили паяльник вместе с пробной платой и гребенкой, и не успел я отвернуться, как она сделала ряд конусов припоя вообще без дефектов. Отказалась от очков с увеличительными линзами, они де только мешают. Вот и первый раз с паяльником.
В ленте фейсбука много постов про банкротство некоей частной школы, в которую, судя по репликам, детей возили в замок на самолетах. Обсуждают в основном что не заплатили за два месяца учителям, а также весом ли диплом или сертификат от данной школы. Проскальзывает слово «элитарность».
У меня при виде такой информации сразу встает вопрос: а чему там такому учили и как это поможет детям решать задачи в реальной жизни? Я это спрашиваю с позиции человека, который периодически участвует в интервьировании студентов американских вузов на работу проектировать телефоны в Самсунг. Интервьирует кандидата обычно команда из рекрутера, скринера‑инженера, пяти старших инженеров и двух начальников. В отличие от гуманитария Ivan Kurilla, который в некоем интервью рассказывал что в Америке все решает топовый вуз, я знаю из своей практики, что даже если у студента хоть два диплома из вузов в мировом Топ-10, но он не решает задачки на интервью, то он не получит оффера. А вот если хорошо решает, то скорее всего получит. Вуз имеет значение при сравнении двух кадидатов которые решают задачки примерно одинаково.
Вы себе не представляете, какое количество студентов, в том числе топовых вузов, плавает на вопросах типа: «преврати последовательности с битом first в последовательности с битом last». Полная формулировка: на вход цифрового блока приходят последовательности из трансферов данных. Каждый трансфер считывается на положительном фронте тактового сигнала clock, на котором сигнал valid=1. Первый трансфер в каждой последовательности обозначен сигналом first. Блок должен выдавать на выходе такую же последовательность, но маркировать не первый трансфер, а последний сигналом last. Напишите код на языке описания аппаратуры Verilog который это делает«.»
Вот сейчас некоторые комментаторы побежали в ChatGPT и вернутся с репликой «но это же так просто!» Но в реальной жизни кандидат интервьируется у доски (физической, на стене, не виртуальной) без доступа не только к ИИ, но и к любым электронным устройствам вообще. И оказывается, что многим это не просто, топовые вузы почему‑то не научили их решать такие задачки, хотя в программе это есть. Если вдумчиво пройти курс MIT 6.111 или там курс по учебнику Dally & Harting в Стенфорде, то у студента не должно возникнуть проблем с такими задачками. Но они возникают.
Я это все к чему. Никто так и не спросил, а что собственно такое учили в той обанкротившейся школе, что ради этого нужно было снимать замок‑шато во Франции? Чем это лучше помогает скажем решать задачки по геометрии (геометрия тоже нужна про проектировании GPU в телефоне), чем школа в здании бывшего пионерлагеря около сельмага в Новосибирской области? (Я про Летнюю Школу Юных Программистов в Новосибирске если кто не понял намек). Мы в Самсунге кстати сейчас нанимаем на позиции RTL‑дизайнеров — можете присылать мне запросы, если вы решили задачку выше без бегания в ChatGPT и она прошла тест. Тест вот тут (он используется на российской Школе Синтеза Цифровых Схем кстати).
Знаете это чувство, когда всё вроде делаешь правильно: спишь по 8 часов, пьёшь воду, ходишь норму шагов, пульс как у космонавта, а голова к вечеру всё равно гудит и глаза устают?
Я затрекал всё тело, и данных оказалось недостаточно. Поэтому появилась гипотеза: возможно, проблема не во мне, а в моей рабочей среде.
Решил сделать полезную штуку лично для себя: затрекать рабочее место. Форм-фактор: умная настольная лампа.
План на MVP такой: Следим за CO2, влажностью, температурой и освещённостью. Плюс добавил напоминалку поморгать (звучит смешно, но я в фокусе реально перестаю это делать).
И самое спорное это трекать магнитные поля и радиочастоты. Включаю режим конспиролога: а вдруг мои Bluetooth-наушники незаметно варят мне мозг излучением? Наука, конечно, крутит пальцем у виска и говорит, что всё ок, но я хочу собрать свои данные. Надо же либо окончательно успокоиться, либо идти клеить шапочку из фольги.
Рулить железом будет ESP32-S3 дешёвая и холодная, в отличие от Raspberry Pi. А вот думать будет отдельный сервер с языковой моделью. Шутки про «ИИ везде» принимаются, но мне реально нужно, чтобы железка просто говорила по-человечески: «душно - открой окно», а не заставляла меня вчитываться в дашборды.
У меня двойственное отношение к технологическим ностальгантам. С одной стороны, я с большим интересом хожу в музей истории компьютеров в Маунтин-Вью, Калифорния, а также считаю полезным введение небольшого количества исторической интроспективы в образовательные курсы, чтобы понимать истоки ключевых изобретений, например: прерывания (DYSEAC, 1954), внеочередное выполнение инструкций (CDC-6600, 1964), векторные регистры (Cray-1, 1976) итд.
С другой стороны я считаю вредным, когда старперы пытаются учить молодежь на примерах какого-то старья типа PDP-11, 6502 или Z80. Я понимаю что в 1970-х PDP-11 поразила их красотой, но все эти автодекременты с двухадресными инструкциями хорошо вписывались в микрокодовую идеологию своего времени, но не вписались даже в идеологию 1980-х, с статическим hard-wired конвейером. Ну выучил старпер молодежь ассемблеру PDP-11, а как теперь привязать это к созданию конвейерного процессора на верилоге?
Аналогично аккумуляторная архитектура 6502, которая для ностальгантов связана с молоденьким Стивом Джобсом и Apple II - это следствие не только ограниченных ресурсов 1970-х, но и того, что в те времена доступ к памяти происходил быстрее, чем арифметические операции. Только в таком контексте ее стоит упомянуть перед тем как перейти в набору регистров в современном RISC-V.
Я видел как некий прибалтийский университет пригласил к себе европейского профессора из Италии, который стал там учить студентов стоить копии Apple II - способствует ли это подготовке современных проектировщиков процессоров? Имхо пример того, что европейское не значит качественное.
Про Z80 и спектролюбцев я вообще не говорю - там попытки навести косметику на набор костылей в Intel 8080, с косвенной адресацией через конкатенацию 8-битных регистров H и L и прочий маразм. Чистая сублимация по поводу дискотек 1980-х и кучерявых девочек на них которые сейчас стали бабушками.
К чему я все это пишу. Сегодня в некоей ностальгантской группе фейсбука опубликовали пост с картинкой мануалов по 8086/8088, а также про DOS и BIOS. Я там написал что эти технологии были уже устаревшими в момент выхода этих книг в 1980-х. Далее некий немец поставил сердитый несмайлик и вступил со мной в диалог про это самое:
📍Москва, МВЦ «Крокус Экспо» в рамках выставки ExpoElectronicа
⏰ вт, 14 апреля 2026, 11:30 (+0300)
💸 Бесплатно
Цель Конференции – продвижение и популяризация архитектуры, развитие экосистемы, внедрение технологии в образовательный процесс, демонстрация готовности некоторых российских RISC-V-решений к массовому внедрению в различных отраслях экономики. Конференция предоставит уникальную возможность прямого диалога между разработчиками, интеграторами и конечными заказчиками.
Что будет:
Пленарные сессии с участием представителей Минпромторга, Минцифры и руководства Альянса.
Технологические треки Технологические треки: перспективы технологии в мире и России, реализация корня доверия, готовые решения от ЭКБ до ПАК.
Панельные дискуссии от CloudBEAR, Байкал Электроникс, Лаборатории Касперского, Positive Technologies, МИКРОН, НИИЭТ, РегЛаб, ОВЕН, ИНКОМСИСТЕМ и других лидеров рынка по темам:
Развитие экосистемы RISC-V в России и мире: вызовы и решения
Вопросы безопасности и тестирования на уязвимости российских решений
Перспективы и планы лидеров ИТ-рынка России
Дорожная карта решений Альянса – от электронных компонентов до готовых решений АСУ ТП.
Презентацию программы раннего доступа к технологиям DEVBOARDS: подведение итогов 3-го этапа (на микроконтроллере Baikal-U) и запуск 4-го этапа (на микроконтроллере К1921ВГ1Т НИИЭТ).
Истории успеха – реальные кейсы внедрения RISC-V-решений на предприятиях.
Образовательный трек: проекты Академического комитета Альянса и ведущих вузов России.
Презентация программы «Энергия RISC-V» для энтузиастов технологии RISC-V – от студентов до профессионалов-разработчиков.
Подробная программа Конференции доступна по ссылке.
Присоединяйтесь к событию, чтобы вместе формировать будущее открытой архитектуры в России! Количество очных мест ограничено! Всем зарегистрировавшимся будет предоставлена запись мероприятия.
Промокод для получения билета на ExpoElectronicа EE26RISCV, получить билет по ссылке.
Сегодня директора стратегического маркетинга компании Synopsys спросили, что он думает насчет того, чтобы софтвер его компании писал ИИ? И знаете что он ответил? «Это дело далекого будущего. Для этого требуется математика уровня PhD, а также итеративная доработка на основе проприетарных данных от фабрик микросхем — данных, которые ИИ пока не способен полностью смоделировать. (Пока!)»
Прикол тут в том, что сам Синопсис хайпит вовсю свой ИИ-софтвер для других компаний. А сами, как вы видите, говорят: мы де перейдем на это в далеком будущем. При том, что их софтвер — это просто программы на C++. Я работал в Synopsys, так что я знаю изнутри. Так что не говорите мне, что ИИ якобы уже хорошо пишет на C++ алгоритмически-интенсивные программы.
Для тех кто не в курсе: софвер Синопсиса используют инженеры для проектирования микросхем. В комментариях мой слайд про процесс: код на языке SystemVerilog превращается в граф из логических элементов и элементов состояния (D-триггеров), потом программы размещения и трассировки раскладывают и соединяют этот граф по площадке микросхемы.
От этого трудно отмахнуться! Перед нами цитата не луддиста-отрицателя ИИ, а человека из самого истока всех чипов, которые проектирует Apple, Intel, NVidia, и даже чипов для российких дронов (компании в Зеленограде тоже используют софтвер от Synopsys). ИИ сможет писать такие программы на C++ в Да-ле-ком Бу-ду-щем. Так что в этом году всем нам AGI не грозит.
Помогите добить реверс bike tracker на MC60 + STM32L486 – что здесь за интерфейсы и как лучше подступиться.
Больше фото в конце!
Есть у меня bike tracker infocar bikeAngel AMB02. Разобрал его и сейчас пытаюсь спокойно, без лома через колено, понять архитектуру платы, интерфейсы и нормальный маршрут реверса. По фото и маркировке пока получается такая картина:
есть SIM-слот, батарейный блок и несколько непонятных тестовых/сервисных точек.
Из того, что пока смущает –MC60 и STM32 здесь явно живут как два разных мозга, и я пока не до конца понимаю, кто кого будит, кто держит power sequencing и где именно проходит основной UART.
На плате нет «человеческих» кнопок boot/reset, поэтому неочевидно, насколько реалистично подлезть к MC60 напрямую без плясок с его boot/pwrkey линиями. Не уверен, не зашита ли вся критичная логика именно в STM32, из‑за чего идея «просто заменить SIM и жить» может оказаться слишком наивной.
Что уже удалось идентифицировать по плате:
MC60 — сотовая часть, GPS и Bluetooth а STM32L486 — управляющий MCU,
SPI flash рядом с белым разъёмом , возможный сервисный коннектор / debug-разъём;
батарейный блок выглядит как 1S Li-ion pack на нескольких параллельных банках.
Моя цель сейчас не «ломать прод», а именно картировать железо, найти UART между STM32 и MC60 — понять, где SWD на STM32. Определить, можно ли безопасно снять дамп / хотя бы проверить RDP. Понять, есть ли смысл лезть в SPI flash отдельно да и прикинуть, насколько жизнеспособен вариант со своей SIM и своим софтом. Инструменты у меня пока довольно базовые: паяльник и USB‑UART, нормального анализатора и ST‑Link пока нет. (Заказал себе пока, ST‑link v2 Clone M89 для STM).
Поэтому особенно интересны советы именно по порядку действий: с чего лучше начать, чтобы не убить плату и не потратить неделю впустую.
Против лома нет приема! Конкурсы по ASIC Design для молодежи станут таким же привычными как математические олимпиады
Наконец-то в России наладили массовый MPW сервис производства микросхем для молодежи! Каждый студент, у которого есть способности к проектированию процессоров, аппаратных ускорителей ИИ, сетевых чипов, может бесплатно участвовать в конкурсе и спроектировать собственный чип. МИЭТ, МФТИ и другие вузы объединили усилия с промышленностью, которая произведет микросхемы для победителей бесплатно. По значимости это как создание системы математических олимпиад в СССР.
Обычно студенты изучают проектирование микросхем в вузе с помощью упражнений на симуляторе языка описания аппаратуры SystemVerilog и лабораторных работах с микросхемами реконфигурируемой логики, FPGA. Но в промышленности, для проектирования и производства массовых микросхем, им понадобится изучить маршрут RTL-to-GDSII, понять статический анализ тайминга применительно к технологии ASIC итд. Именно погружению в эту черную магию поможет новый конкурс, в результате которого победители получат сконструированные ими чипы.
Технология ASIC design относится к категории "против лома нет приема". Это способ достичь самую большую производительность в цифровом мире, на пару порядков привышающее то, что можно достичь программированием готовых процессоров. Быстрее - только квантовые вычисления, и то для ограниченных задач.
Именно поэтому магистральные маршрутизаторы, ускорители ИИ, графические процессоры и другие высокопроизводительные устройства стоят именно на ASIC design, впрочем как и частный случай цифровых устройств - процессор общего назначения.
Открываем быстрый найм на позиции RTL-дизайнера и верификатора в команду Semiconductors. Подать заявку можно до 22 февраля.
Кого ищем:
UVM Verification Engineers (junior/middle/senior) — UVM-окружения, VIP, SVA, регрессии, анализ багов, работа с RTL-командами.
RTL Design Engineers (junior/middle/senior) — разработка сложных ASIC-модулей на Verilog/SystemVerilog.
Как проходит спринт:
Нужно оставить заявку до 22 февраля и пройти HR-скрининг.
Далее техническое и менеджерское интервью.
И вуаля — оффер у вас на руках.
Чем занимается команда: fabless-разработкой микропроцессоров на базе RISC-V с полным циклом создания SoC — от архитектуры и собственного процессорного IP до поставки чипов с системным ПО. Решения используются в серверных, телекоммуникационных и сетевых продуктах, системах хранения данных и клиентских устройствах.
Стек и ожидания:
Verilog/SystemVerilog,
RTL-симуляторы: VCS / Xcelium / Questa,
Linux,
Git,
скрипты для автоматизации: Python / Perl / Tcl / Shell,
Разработчик создал виртуального компаньона по имени Tiny, «оживив» обычное комнатное растение с помощью нейросетей и набора датчиков. Система постоянно мониторит показатели жизнедеятельности цветка: влажность почвы, уровень освещённости и температуру воздуха. Эти данные обрабатываются через API ChatGPT, который формирует реплики от лица персонажа. Вместо сухих уведомлений владелец получает живые сообщения — растение может пожаловаться на жару или попросить переставить его ближе к солнцу. В проекте есть даже реакция на физический контакт. Благодаря использованию растения в качестве ёмкостного сенсора, Tiny понимает, когда человек касается листьев, и выдаёт мгновенную реакцию.
Энтузиаст запустил игру Doom на умной мультиварке Krups Cook4Me с сенсорным дисплеем, 128 МБ встроенной и оперативной памяти, Wi-Fi-модулем ESP32 и микропроцессором Renesas R7S721031VZ. Доступ к основному процессору мультиварки исследователь получил через интерфейс SWD. Подключив программатор к сервисным контактам, энтузиаст скопировал содержимое встроенной памяти и на его основе собрал модифицированную прошивку, позволившую запустить Doom. Из-за нестандартного расположения сенсорных элементов управления играть на скороварке в Doom оказалось не особо неудобно.
Только что в один из своих проектов на микроконтроллере RP2040 понадобилось интегрировать графический дисплей для отображения погодной информации. Выбор пал на распространенные монохромные OLED-дисплеи разрешением 128х64 точки.
Из плюсов этих дисплеев для меня: высокая яркость и контрастность, простота интерфейса, дешевизна и высокая плотность информации в небольшом размере.
Контроллер у всех этих дисплеев стандартный - SH1106.
Свои проекты я пишу на С с использованием нативной Pico SDK. Поиск библиотеки для нужной платформы на С результатов не дал. Все, что на данный момент есть, - различные ардуино-библиотеки и микропитон.
В итоге было принято решение портировать на RP2040 одну из реализаций для STM32. Эта библиотека умеет рисовать графические примитивы в виде вертикальных и горизонтальных линий, прямоугольников пустых и заполненных, растровых изображений а также есть различные функции вывода текста и числовой информации.
Библиотека позволяет задать разрешение экрана а разворачивать экран на 90/180/270 градусов.
Изначально библиотека включала в 2 шрифта с размерами знакомест 5х7 и 7х10 точек.
Для своих целей я самостоятельно разработал большой шрифт 12х16 точек (на фото он).
На недавно прошедшем мероприятии 39th Chaos Communication Congress 27 дек 2025 была обнародована информация о впечатляющих уязвимостях в программном обеспечении беспроводных (bluetooth) наушников на базе чипа ф. Airoha. Результаты таковы, что можно смело наводить панику: на видео демонстрируется не только дистанционное считывание названия проигрываемой наушниками композиции, но и обеспечивается доступ к звуковому каналу (bluetooth профиль HFP HF со всеми его фичами), что важно - незаметно для пользователя наушников, а далее - и к софту на смартфоне пользователя. Немаловажно что протестированы наушники вовсе не каких то там непонятных производителей, а известнейших и популярных брендов: многие модели Sony и Marshall, а также некоторые JBL, Jabra, Beyerdynamic, Bose (далее по ссылке есть список протестированых моделей). Выглядит впечатляюще, хотя и сильно подглюкивает, но уже близко к тому что мы видим в компьютерных играх и фильмах про хакеров.
Изначально реверсеры раскрутили и прошивки для нескольких устройств, а затем фирменный протокол обмена поверх bluetooth (называется RACE). В нем есть и доступ к оперативке устройств и доступ к флешу. Ну и дырок всяких достаточно.
Записал видео (на английском языке) своей критики выдачи ИИ тула от Абишека Вармы из университета штата Иллинойс. Тул генерит SVA (SystemVerilog Assertions) для верификации (по простонародному - QA) цифровых аппаратных блоков систем на кристалле. Для повышения понятности, в начале видео рассказал основные идеи протокола AXI (Advanced eXtensible Interface): правила хендшейка valid/ready, конвейерность транзакций, внеочередной возврат данных по запросу чтения с тэгами.
Правила для проверок оно пишет некорректные. Например что если записать по адресу 100 число 123, то отныне и вовеки веков если прочитать с адреса 100, то там будет 123. Не задумывается, то после первой записи и до чтения может быть вторая, которая запишет число 456.
Далее, проверка для теста проверяет что после сброса (reset) данные на шине AXI будут равны X в виде data == 'x. Но это ерунда по двум причинам: Во-первых, данные могут быть после сброса какими угодно, хоть 0, хоть 123, так как они будуг игнорироваться если с ними не ходит бит valid=1, который кстати сбрасывается в 0. Во вторых, операция сравнения == 'x (неопределенным значением) дает в качестве результата 'x. Чтобы делать именно сравнение с 'x нужно использовать другую операцию ===, то это все равно не будет работать потому что (1). Это вообще невалидный тест.
Но это все цветочки - на это его можно натаскать. Более интересный вид тупости - ИИ конструирует проверку, что если сделаны запросы с тэгами 11, 3, 4, 7, то и данные будут возвращаться в таком же порядке - с тэгами 11, 3, 4, 7. Ему не приходит в голову задать себе вопрос - если бы это было так, зачем в AXI вообще были бы нужны тэги? Они ведь нужны чтобы идентифицировать данные которые приходят не в том порядке, скажем 4, 11, 3, 7.
Мне навеяло темой: "Что должно быть на каждой PCB с микроконтроллером":
В чем счастье эмбеддед программиста.
Больше 20 лет назад мы с товарищем, специалистом по схемотехнике — цифровой, аналоговой, любой, и конструкции плат, должны были прикрутить маленький экранчик (10х10 сантиметров примерно) для визуализации ввода к нашему секретному девайсу. И все было как обычно, он принес(прислал) мне описание контроллера экрана, я проверил схему подключения к атмеге (какая-то 8-ми битная микруха АТ серии там была), которую он нарисовал, на предмет программной управляемости (необходимости, достаточности и удобства конструкции). Он развел, вытравил, спаял, скрутил, собрал, проверил цепи,... я всего не знаю что там надо делать, я преклоняюсь перед талантом людей, которые все это знают и грамотно делают, иначе мне бы было не на чем работать! И в один прекрасный день мы собрались вдвоем (для меня это была как бы халтурка) чтобы включить, запрограммировать и окончательно проверить что схема и все необходимые функции программного управления работают и можно снять характеристики, все проверить для того чтобы написать уже пользовательскую программу. Я сначала всегда пишу программу, которая проверяет возможности железа: схемотехнику обвязки и возможности аппаратных модулей встроенных в контроллер-процессор, тайминги, какие-то взаимные ограничения на использование ног, периферийных юнитов, кросстайминги, просто свое понимание работы периферии полученное из теоретического описания. Все требует проверки на практике, на работающей железке с работающей программой.
Я скомпилировал подготовленную программу, основной целью которой было вывести несколько символов на экран, чтобы подтвердить что я все правильно понял и ничего не напутал по описанию контроллера экрана, по протоколу управления, мы ничего не напутали по схемотехнике, последовательный порт SPI по которому управляется экран правильно проинициализирован и правильно используется в микроконтроллере.
Мы подключили программатор и загрузили прошивку! Ожидая что на экране что-то появится. Дисплей имел и графический режим управления, в котором можно было зажигать любые пиксели по координатам, но нас вполне устраивал символьный режим с курсором, в котором у нас было где-то 8 строк по 10 символов. И, как это обычно бывает, ничего не произошло, экран остался безжизненным. Первым делом надо проверить что прошивка работает - поморгать светодиодом, если нет светодиодов просто посмотреть запрограммированный сигнал на каком то выводе процессора осциллографом - все было в порядке, все сигналы на месте. Я начал строить предположения о том, что я мог неправильно понять и, соответственно неправильно настроить-сконфигурировать-передать-принять-перепутать порядок посылок при инициализации дисплея. На это ушел может быть час или два - я дотошно перебирал варианты, вплоть до самых невероятных - ничего не помогало, экран оставался мертвым. Я рассказал напарнику, что называется на пальцах, последовательность операций, которые выполняет моя прошивка. Что-то мы дополнительно проконтролировали по тестовым пинам, нигде логика не была нарушена, все сомнительные варианты мы перепроверили под контролем напарника. Экран оставался мертвым...
И тут, как-то невзначай, мой товарищ, как будто из глубины своего сознания, начал доставать воспоминание, он говорит: "Слушай-ка там в доках схема регулировки яркости была нарисована... я где-то тут прикрутил регулировку, может надо ее покрутить?" И он начинает крутить какой-то неприметный металлический штырек и на экране чудесным образом начинают проявляться символы!
Сложно передать мои эмоции когда я сказал ему: "Какой же ты... молодец, что догадался прикрутить эту регулировку яркости! Без нее бы у нас так ничего и не получилось, сегодня, с этим экраном!". Прошло столько лет, а я не могу забыть эту историю.
Всем удачи в Новом Году. Пусть у вас всегда будут в наличии необходимые регулировки, особенно аналоговые.
Хотите сделать flipper zero своими руками? Тема неоднократно поднималась в коментах, горячие головы утверждали что это под силу радиолюбителю. Но применяемая серия микроконтроллеров stm32wb55 имеет корпуса которые обычным паяльником не запаять, плюс схемотехника обвязки и антенны на 2.4ГГц требует некоторых знаний и умений. Можно конечно сделать плату на заказ, однако некая WeAct Stuido предлагает готовые платочки (на stm32wb55 - правда с их ассортиментом придется разобраться) в формате black/bluepill. и гораздо дешевле flipper. Модули с нужным SD,LCD, NFC и СС1101 тоже есть в продаже. Мысль сделать франкенфлиппера (хотя флиппер еще тот франкенштейн по лору) меня посетила уже давно. Для разных задач можно даже не подпаивать все модули. Но смущало что вероятно придется подкручивать gpio (будет несовместимость) плюс необходимость secure keys меня остановила.
Однако нашлись смелые люди. На днях некий Yellow Purple опубликовал два хороших видео где показана сборка diy flipper zero из подручных материалов. Именно flipper а не далекого аналога на esp32. Знания языка для их понимания не требуется - все показано визуально. правда потребуются иные знания и навыки.
Что делать если вас попросили посмотреть на чей-нибудь AI тул, который генерит верилог? Самое главное - не дать возможность ИИ-стартаперу показать вам слайды и убежать. Потому что он тогда сделает отчет своему инвестору "наш тул получил заслуженную оценку и апплодисмены переходящие в овации от экспертов такой-то компании, поэтому давайте нам еще зиллион долларов инвестиций для следущего раунда".
Нет, на предложение посмотреть на слайды нужно сразу сказать "просто не буду", как и на предложение посмотреть его демо, где он гениально генерит мультиплексоры из учебника, а также пристраивает к однотактному процессору то, что он называет AXI IP, хотя там простой конечный автомат, который игнорирует конвейерную и out-of-order природу AXI, ну это как показывать трехколесный детский велосипедик как демо для автомобиля Формулы-1. В этот месте стартапер начинает говорить быстро и листать код, чтобы тот, кто прервет его возгласом "это не AXI, а закамуфлированный APB" - выглядел невежливым.
Стартаперу нужно разумеется сразу дать задачку, причем сформулировать ее так, чтобы у него не было возможности заменить ее на другую. Но даже тут стартаперы творят наглости, присущие всем LLM. Например вместо текста ответа присылают видео(!) на час(!), где на 45-й минуте на экране за секунду проскальзывает "FAILED" на вашу задачку, а все остальное время видео он показывает те самые тривиальные мультиплексоры, которые он нашел в вашей репозитории, хотя вы ему совершенно четко написали, что вас не интересует как этот тул генерит мультиплексоры и простые FSM, а интересует решение конвейерных микроархитектурных задач. После чего он пишет отчет инвестору "мы решили 37 из 42 труднейших задач оттуда-то", хотя я в явной форме предложил решить только задачу номер 38 которую тул не решил.
В последнее время стартаперы нашли противоядие против задачек. Они честно, глядя в глаза, говорят что никакого прототипа у них нет, но оно должно работать, потому что AI уже умеет питон и диагностировать рак, значит должен научиться и верилог (вариант: уже умеет Scala, значит должен и Chisel). А мешает плохому танцору только то, что индустрия сделала весь код проприетарным и им не на чем учиться. Поэтому давайте пойдем посмотрим на слайдики, а если вы что-то спросите, мы ответим, что это есть в нашей roadmap. А потом напишем инвестору что мы нашли партнера и нужно слать следущие деньги.
Но не надо отчаиваться! Помимо стартаперов есть еще разные аспиранты, которые присылают вывод своих тулов на посмотреть. Это что-то невероятное по глупости. Некоторые виды глупости настолько глупы, что просто не пришли бы мне в голову. Написание (бесполезного) теста с помощью свободной рандомизации всех сигналов в AXI; проверка что после ресета данные равны 'x. Присваивание значений к типам (а не переменным). Ожидание что после записи в память это значение будет там вечно, несмотря на перезаписи. Проверка что ID прочитанных данных будут всегда в порядке ID адресов, хотя зачем тогда ID. Итд.
Тут нужно тоном коварного змия предложить устроить публичный разбор этого для обучения молодежи. Если аспирант согласится, то превратить это в выступление пародиста Александра Иванова на Вечере смеха в студии Останкино (если вы из поколения, которое застало язык фортран, то вы знаете о чем я говорю).
Представлен проект онлайн-браузера микрокода 8086. Каждая 21-битная микроинструкция декодируется в читаемые поля. Наведите курсор на любое поле, и вы увидите подсказку с объяснением его назначения. Все цели перехода кликабельны — микрокод 8086 использует удивительное количество косвенных переходов, вызовов и коротких ветвлений.
Вместе с экспертами из "ФанкСэйфети" разбирались с такими сущностями, как ГОСТ Р МЭК 61508, уровнями SIL, стандартом MISRA C, сертификацией по функциональной безопасности и т. д.
В конце была активная дискуссия, во время которой отвечали на интересные вопросы. По её итогу приводим дополнительную информацию и ссылки.
Тип недостатка: Необоснованный выбор инструментов, в том числе инструментов статического анализа исходного кода, для выстраивания и выполнения процессов РБПО.
Описание: В настоящий момент ФСТЭК России не предъявляет требования наличия сертификата соответствия к большинству типов инструментов анализа кода и архитектуры. При этом к инструментам предъявляются следующие требования: ...
Примечание 3. Был вопрос, связанный с объединением требований ФБ и ИБ в одном стандарте. Некоторые усилия в этом направлении предпринимаются, см. примеры ГОСТов ниже:
ГОСТ Р 59506-2021/IEC TR 63074:2019. Безопасность машин. Вопросы защиты информации в системах управления, связанных с обеспечением функциональной безопасности.
ГОСТ Р 71452-2024/IEC/PAS 63325:2020. Требования к функциональной безопасности и защите системы контроля промышленной автоматизации (IACS) на протяжении жизненного цикла.
Однако необходимо понимать, что у ФБ и ИБ разные цели и разные подходы, поэтому объединение технических требований может создать путаницу, и сейчас меры по объединению некоторых аспектов ФБ и ИБ носят, прежде всего, организационный характер.
Короткий метр «ТЕХПРОЦЕСС» о производстве железа вышел на всех наших каналах
В этом получасовом фильме показываем то, чем гордимся и дорожим. Собственное производство полного цикла, где делаем компьютеры, серверы, ноутбуки, материнские платы и многое другое. Линии поверхностного монтажа, отдел технического контроля, сборочный цех.
А еще рассказываем о всех, ну или почти всех, наших технологических секретах.
Присоединяйтесь к экскурсии по заводу «Инферит» вместе с нашим главным технологом Кириллом Пушкиным — и увидьте весь процесс создания технологий своими глазами.
Вперед, смотреть ролик на YouTube, RUTUBE и VK Видео. И обязательно подпишитесь, чтобы не пропустить новые видео. Будем стараться делать интересно.
Мы привыкли, что в центре геополитического конфликта — фабрики TSMC на Тайване. И США, и Китай хотели бы видеть их у себя, чтобы обеспечить безопасное производство новейшей электроники. Но первым на острие политического скандала оказался небольшой производитель электроники Nexperia в Нидерландах.
В октябре правительство Голландии и ЕС заявили, что идут на крайние меры и берут под контроль мощности китайского производителя электроники Nexperia. Основания, как это часто бывает, — безопасность: Европа опасается, что чипы компании будут поставляться не европейским потребителям. Вот только что-то пошло не так.
Автомобильная промышленность не требует, чтобы микросхемы были созданы по самым передовым техпроцессам, поэтому такие компании, как Nexperia, могут работать на рынке вместе с 3-нм фабриками TSMC, Samsung и другими — они просто занимают разные ниши. Однако отсутствие вертикальной интеграции делает компании зависимыми от цепочек поставок, которые неизбежно ведут… в Китай. Не та страна, чтобы простить отъём собственности.
Результаты не заставили себя ждать. Китай объявил о запрете поставок Nexperia. И уже в середине октября автопроизводители — партнёры Nexperia (Toyota, Ford, Volkswagen, BMW и General Motors. Чуть позже к ним присоединился и Bosch) — получили предупреждение о возможных перебоях поставок.
В результате на этой неделе планируется встреча представителей ЕС и Китая — придётся договариваться. А нам остаётся диверсифицировать все поставки — никогда не знаешь, какие компоненты завтра будут в дефиците.
Народ жалуется на трудности поиска работы. В частности такие жалобы есть в группе русского QA коммьюнити в США. Написал для них следующий пост. Интересно сколько откликнется:
"Господа! В этом коммьюнити есть junior QA, которым могут быть полезны (например для поиска работы) рекомендации в LinkedIn. Я готов написать нижеследующую рекомендацию в обмен на несложную работу: проверить инструкцию и репозиторий для семинара, который я буду проводить в грядущий викенд в Cal Poly SLO (Калифорнийский политехнический государственный университет в Сан-Луис-Обиспо).
Рекомендация в LinkedIn будет звучать так:
"Товарищ такой-то/такая-то demonstrated reliable QA skills and verification creativity when testing a CI/CD workflow setup for an educational project aimed to help the universities to teach VLSI classes. The tested product is a variant of a Tiny Tapeout GitHub template for ASIC synthesis used during the Verilog Meetup at California Polytechnic State University in San Luis Obispo, California. The template includes JSON-based GitHub Actions and Python scripts to run Yosys/OpenROAD-based RTL-to-GDSII flow and cocotb/pytest-based verification for the digital designs coded in SystemVerilog. такой-то/такая-то wrote an informative report describing the observed usability problems and unclear parts in the instructions for the user. This work greatly contributed to the success of the CalPoly seminar and similar planned events in microelectronics workforce development.
Питон - предмет обожания секты питонистов, которые ходят по домам и всем говорят "Как, вы еще не выучили Питон? Он же учится за две недели!"
Допустим, но вот два практически идентичных репозитория (1, 2), которые я только что приготовил как форки от двух других практически идентичных репозиториев. Один для создания чипа на немецкой фабрике IHP (The Leibniz Institute for High Performance Microelectronics), а другой для создания чипа на американской фабрике SkyWater (аналог зеленоградского Микрона для военных).
clock = Clock(dut.clk, 10, unit="us")
assert not dut.uio_out.value [4];
Если во втором написать не "unit", а "units", оно пожалуется:
DeprecationWarning: The 'units' argument has been renamed to 'unit'.
DeprecationWarning: The 'units' argument has been renamed to 'unit'.
И типы данных поменялись:
unsupported operand type(s) for >>: 'LogicArray' and 'int'
А все почему? У питониcтов все время меняются версии, и в их коммьюнити не принято поддерживать обратную совместимость:
"Просто используй другую версию!", "Просто поставь виртуальные среды!", "Как, ты еще не используешь Докер? С ним это решается элементарно!" - "Ты просто не pythonian!"
Так можно две недели колупаться, после того как за две недели выучить питон.
Компания «Микрон» представила отечественную игровую консоль MikBoy на базе российского микроконтроллера MIK32 «Амур» (К1948ВК015/018) на архитектуре RISC‑V (MIK32 Wiki, GitHub). Корпус и кнопки консоли выполнен с помощью технологий 3D‑печати.
Игровая консоль MikBoy предназначена для запуска простых ретроигр, а производитель называет её «универсальной образовательной платформой, созданной для будущих инженеров, программистов и всех любителей технологий».
В компании считают, что преподаватели, студенты и все энтузиасты‑разработчики смогут совместить приятное с полезным, осваивая новые знания в игровой форме. Ценители ретроигр увидят новое прочтение винтажных форм и оценят возможности отечественного «железа».
В «Микрон» предлагают оформить предзаказ на консоль. Производитель не уточнил стоимость устройства. Также в «Микрон» не раскрыли характеристики консоли. Неизвестно, что там будет за дисплей, нет списка поддерживаемых игр, не озвучена дата начала продаж.
Товарищи студенты из проживающих в США! Кто хочет отправиться на летнюю практику и/или программу для выпускников вузов в техасском отделении Самсунга? Вы можете сходить на сайт и подать заявку напрямую (ссылка 1, ссылка 2). Альтернативно, я могу сделать для вас внутреннюю рекомендацию, так как я член команды разработки GPU в телефонах. Но так как я стараюсь рекомендовать компании только кандидатов, в качестве которых (по своим критериям) я уверен, я предлагаю всем желающим сделать одно из двух вещей:
Если вы живете в Области Сан-Францисского Залива или в Сакраменто, то сделать какой-нибудь проект на FPGA платах в рамках разработки open-source примеров для non-profit клуба Verilog Meetup (не аффилиированного с Самсунгом, это просто малочисленная тусовка, куда заходят люди из Теслы, Intel, Apple итд). Наш клуб будет на выставке самоделкиных Maker Faire в Valejo 26-28 сентября. Вы можете подойти ко мне на стенде и мы обсудим ваш проект.
После того, как вы сделаете или (1) или (2), я занесу ваше резюме во внутреннюю базу данных, вам придет письмо с предложением подать заявку, после чего, если ваше резюме выберут, вам нужно будет пройти весь официальный процесс рекрутинга.
Повышает ли моя рекомендация ваши шансы? Этого я не знаю. Как говорил Остап Бендер, полную гарантию вам может дать только страховой полис.
Пишите мне на yuri@panchul.com если вас интересует такое предложение.
Работа с Bluetooth Low Energy (BLE):основные протоколы и практические советы.
Почему BLE до сих пор “ТОП”? Потому что даёт годами работать от батарейки -“таблетки”, держит связь в шумной среде и уже давно вышел за рамки «умных браслетов». Ниже - короткая, но практичная шпаргалка: что в BLE за что отвечает, где производительность «прячется», и на чём чаще всего спотыкаются.
BLE-стек делится на две большие части: - GAP - «как знакомимся и подключаемся»: роли Central/Peripheral, сканирование, реклама (advertising) и параметры соединения. - GATT/ATT - «как обмениваемся данными после подключения»: сервисы, характеристики, дескрипторы и операции чтения/записи/уведомлений. (PunchThrough, cardinalpeak.com)
Основное - по делу: 1) Реклама и роли Legacy vs Extended Advertising: в Bluetooth 5 появилась расширенная реклама(Extended) и Periodic Advertising - удобно для «маячинга» и многоприёмников без подключения. (Novel Bits)Роли: Peripheral «светится» и ждёт подключения; Central сканирует и подключается. Это — GAP-уровень. (Punch Through)
2) Скорость, дальность и каналыPHY 1M - базовый; 2M PHY - больше скорость; Coded PHY (S=2/S=8) - для дальности и шумных сред; итоговый выбор - компромисс «скорость/дальность/надёжность». (RIOT Summit) Для широковещания и энергосбережения в BLE 5.4 усилили «витаминку» для ESL/маячков: PAwR (Periodic Advertising with Responses), EAD (Encrypted AdvertisingData) и пр. - полезно для систем с множеством датчиков и электронных ценников. (Bluetooth Technology Website, silabs.com)
3) Пропускная способность: где «лежит» throughputATT MTU и Data Length Extension (DLE) увеличивают полезную нагрузку пакета (вплоть до ~251 байта данных на пакет) — ключ для высокой реальной скорости. (Punch Through, devzone.nordicsemi.com) Настраивайте интервал соединения, slave latency и supervision timeout под задачу: меньше интервал — ниже задержка и выше пропускная способность, но больше расход батареи. Для потоков «почти-реального времени» ориентируйтесь на уведомления (см. ниже) и 2M PHY (если качество радио позволяет). Практические потолки зависят от хоста/ОС — тестируйте на целевых телефонах/ПК. (devzone.nordicsemi.com)
4) GATT-модель и событияNotify vs Indicate: оба «толкают» данные от сервера к клиенту; Indicate требует подтверждения на уровне протокола (надёжно, но медленнее), Notify — без подтверждения (быстрее, меньше оверхеда). Всегда добавляйте CCCD для (де)активации уведомлений. (Сообщество NXP, Thesis Pte Ltd, Reddit)Дизайн GATT: группируйте характеристики логически, минимизируйте количество сервисов и «глубокие» иерархии — это ускоряет discovery и упрощает кросс-платформенное поведение. (cardinalpeak.com)
5) Безопасность и приватностьLE Secure Connections (ECDH) — базовый стандарт для шифрования.Privacy: используйте RPA/Filter Accept List, а в BLE 5.4 — EAD для шифрованной рекламы (актуально для «маячков» с приватными данными). (Bluetooth Technology Website)
6) Мобильные ОС: подводные камниAndroid 12/13+: нужны runtime-разрешения BLUETOOTH_SCAN/CONNECT/ADVERTISE(диалог Nearby devices). Без них сканирование/подключение просто не начнётся.(Android Developers) iOS: в фоне реклама и сканирование ограничены — обычные рекламные PDU из бэкграунда не шлются; для сканирования в фоне задавайте конкретные UUID и включайте соответствующие background-моды. (Stack Overflow, Apple Developer)
7) Стек и инструментыДля «железа»: Zephyr Bluetooth Host (широко применим на MCU), NimBLE (легковесный стек от Apache Mynewt), BlueZ (Linux). Выбор стека влияет на доступность фич (DLE, Coded PHY, Periodic Adv). (docs.zephyrproject.org, Argenox)
8) Новшества, на которые стоит поглядыватьBLE 5.4 (PAwR, EAD) — для массовых устройств-«полок» и защищённой рекламы. (Bluetooth Technology Website) Core 6.0: уточнения по таймингу кадра/интервалам в изохронных потоках (актуально для LE Audio/ISO). Если делаете аудио через BLE — изучите. (Bluetooth Technology Website)
Задался вопросом, а можно ли сделать программатор из подручных средств для CH32V003 на экстренный случай? Или это еще может пригодится тем, у кого его еще нет.
Оказывается можно и способов не один, но я расскажу обо одном. Другие пока еще не пробовал. Решил написать эту заметку, т.к. в рунете ничего не нашел, пусть будет.
В проекте ch32fun есть программа minichlink, так вот она умеет прошивать WCH микроконтроллеры с помощью разных программаторов, например, b003boot, ardulink, esp32s2chfun. Нас интересует программатор ardulink.
Код программатора Ardulink можно взять из arduino-ch32v003-swio. На гитхабе есть обертка его для PlatformIO, кому как удобнее. Он написан под atmega328p, поэтому спокойно запускается на Arduino Nano. Подсоединяем провод от D8 (PB0) ножки Ардуино к SWIO (например, восьмая ножка у CH32V003J4M6), питание к питанию, земля к земле. Всего 3 провода. (Ножку D9 (PB1) так и не понял к чему подключать, но про нее есть в Readme.)
Дальше выполняем команды:
minichlink.exe -c COM3 -i этой командой можно проверить определяется ли микроконтроллер, где COM3 номер порта платы Ардуино, которую используем как программатор.
minichlink.exe -c COM3 -w .\firmware.bin flash -b а этой командой можно залить файл прошивки, где firmware.bin сам файл.
Пока у меня не получилось подключить такой программатор напрямую к PlatformIO, только получилось работать из командой строки, но при желании это сделать можно.
Разбираюсь с бюджетными преобразователями USB CAN. В качестве параметра для классификации удобно использовать тип применяемого протокола, по которому данные передаются на ПК.
slcan - текстовый протокол который применяется еще и с интерфейсом RS2232, с оборудованием фирм LAWICEL и VScom, переросшим в связку USB-UART-CAN, с виртуальным последовательным портом, а затем - в USB CAN на единственном микроконтроллере, а затем и вообще TCP. C которым можно работать из обычной терминальной программы, без особого софта. Существует множество реализаций и расширений этого протокола, на разных микроконтроллерах, в том числе STM32, включая поддержку CAN-FD (на STM32G431, STM32G01) в основном в виде проектов на GitHub. Проект canable (VID:PID AD50:60C4 либо 0x0403:0x6015) (и еще ранний вариант под названием cantact), прошивается в доступные платки на базе контроллеров STM32F042 и STM32F072 (на Ali похоже уже только на F072 продают). Получил развитие в виде canable v2 (STM32G431, 0x16D0:0x117E). Вариация USB2CANFDV1 от WeAct studio (STM32G01, 0x0483:0x5740) - зашифрованная прошивка без исходников. Помимо этого: stm32-slcan (STM32L433, 0x0483:0x5740, протокол урезан), UCCBEmbedded (STM32F042, 0x0483:0x5740), CFDC_embedded-slcan (STM32G431, 0x0483:0x5741), CAN2USB (STM32F105, 0x0483:0x5740), CANsniffer (STM32F042, 0x0483:0x5740). Проект USBtin (PIC18, 0x04D8:0x000A) представляет собой скорее исторический интерес, в его состав входят макросы для поддержки протокола slcan в легендарной HyperTerminal. Не менее историческая разработка - у Michael Wolf, которая как то связана с программой CanHacker. Проект ESP32RET использует текстовый протокол LAWICEL в качестве подмножества команд для двоичного протокола GVRET как через USB так и WiFi (TCP). Проект WiCAN реализует поддержку протокола slcan через USB, WiFi, BLE, а так же протокола для программы RealDash. Так же эти прошивки знают известный протокол ELM327 для автодиагностики, это тестовый протокол со множеством реализаций, однако при его помощи "сырой" CAN захватить либо трудно либо нельзя.
gs_usb более известный как candleLight (0x1D50:0x606F) по названию платы (разработка Linux Automation GmbH, так же фигурирует наименование USB2CAN by Geschwister Schneider Technologie-, Entwicklungs- und Vertriebs UG). Это уже двоичный протокол. Который рассчитан в первую очередь на контроллеры STM32F042/STM32F072, поддержка контроллера STM32G01 и CAN-FD на текущий момент только создается. Однако есть проект bugetcan - прошивка для "most STM32 devices", есть готовые пресеты для STM32F042, STM32G01, STM32G431, STM32G473, STM32H743, STM32H745 и тоже работает с этим протоколом
uCAN_FD - упомянутый ранее CFDC_embedded (uCAN CanFD USB Converter(CFUC)) также предлагают свой собственный протокол, но он, похоже, работает только в софте из этого проекта.
pcan и kvaser по названию соответствующих фирм. Реализованы не только для фирменного оборудования, но и для тех же дешевых платок canable/cantact на STM32F042 (0x0bfd:0x0120 и 0x0483:0x000C), что дает возможность использовать софт рассчитанные именно на эти платы.
usb_8dev для 8 devices USB2CAN, реализован в открытом проекте CANalyze (STM32F042, 0x0483:0x1234), который, похоже, больше не развивается
Разные программы для мониторинга CAN обращаются с протоколами по разному. Например мощная программа BUSMASTER умеет работать с оборудованием VScom (в том числе и через TCP) и PEAK, а значит можно попробовать использовать ее с дешевыми платами перепрошитыми на поддержку такого протокола. SavvyCAN и CANgaroo умеют работать с LAWICEL/slcan, протокол candleLight - через драйвердля Windows. RealDash умеет работать с огромным числом протоколов. Ну а в linux (с относительно свежим ядром) некоторые перечисленные протоколы уже встроены в виде драйверов сетевых (устройств) SocketCAN, что тоже поддержано большим количеством софта.
Когда я был в 9 классе в 1985 году, в Киеве поставили заведовать компьютеризацией школьного образования человека по фамилии Долина, бывшего полковника танковых войск из Донецка. Сейчас я понимаю что Долина был голова. Он временно поставил компьютеры MSX Yamaha в физматшколу номер 145, а через неделю их забрал. Ясень пень, что десятки физматшкольников потянулись в его контору, которая располагалась через дорогу.
Долина фильтовал школьников простым и эффективным способом: во-первых, каждый должен был написать инструкцию по началу работы с языком программирования Бейсик. Шариковой ручкой разумеется - на работу с текстовым редактором еще надо было получить право. Во-вторых, он должен был вымыть пол в конторе.
Если с мытием полов у всех было еще более-менее, то инструкции обламывались писать 95% пришедших. Осталось всего 4 человека - один из 145-й (это я), два из физмат-интерната (у них были свои Ямахи, но с монохромным экраном и ограниченным доступом) и еще один школьник из третьей физматшколы (забыл номер). Долина предоставил нам безлимитный доступ ко всем компьютерам, тонне софтвера и посодействовал посылке двоих из нас в Новосибирскую Летнюю Школу Юных программистов.
На Ямахах помимо Бейсика был MSX-DOS, три компилятора Си, два компилятора Паскаля (включая ранний Turbo Pascal), Z80 процессор, ассемблер и отладчики (в командной строке и оконный), видеопроцессор со спрайтами, интерпретатор Lisp, Nevada Fortran, интерпретатор подмножества Пролога и даже перенесенный из CP/M подмножество Ada.
Мы писали для Долины программы типа записи действий футболистов на стадионе в реальном времени, а также графические мультики на Бейсике, которые он показывал людям из киевской киностудии мультфильмов. Он также был популярен у нанятой им секретарши которая подходила к нему сзади и обнимала его за плечи, на что он говорил "ты создана чтобы любить мужчин". Короче один из ролевых фигур моего взросления.
После Долины я в 10 классе пошел в Киевский Институт Кибернетики, но это уже была другая история.