Что может сделать хиро?
Интеллект уровня гения: истинный потенциал Хиро кроется в его гениальности. Он очень инновационный и имеет способность создавать изобретения из вдохновения; от маленьких, но мощных боевых роботов до ультрасовременных костюмов. Он также хорошо знает свои изобретения и может координировать свои мысли на сложном уровне.
Хиро белый?
В экранизации Хиро, фамилия которого изменилась на Хамада, а его этническая принадлежность изменилась на наполовину белый, наполовину восточноазиатский, появляется в анимационном фильме Disney 2023 года «Большой герой 6», озвученном Райаном Поттером.
Насколько умен Хиро? Хиро исключительно умный и изобретательный. В фильме он особенно хорошо разбирается в робототехнике и инженерии, но его комическая биография 2008 года показывает, что Хиро очень хорошо разбирается в биологии, физике и робототехнике.
Кто злодей в Big Hero 6? Роберт Каллаган (также известный как Ёкай) – главный антагонист анимационного фильма Диснея 2023 года «Большой герой 6». Он бывший главный профессор робототехники в Технологическом институте Сан-Франсокио и наставник Тадаши Хамады.
Вы в самом деле хотите стать программистом микроконтроллеров?
В этом тексте я напишу о буднях программиста МК в РФ.
Что вообще пишут программисты МК и на чем?
Основной язык программирования это С. Языку С уже более 50 лет. Язык С потихоньку сдает свои позиции. Кроме микроконтроллеров С уже практически никому не нужен. Навыки программирования на С очень слабо конвертируются. В свое время, видимо, на С написали компилятор для С и нужда в С для desktop как таковая отпала. Есть конечно DeskTop проекты написанные на С: Git, JVM, MySQL, Nginx, PostgreSQL, TaranTool, WallArm, однако вероятность, что в этих проектах можно работать из РФ да еще и с опытом из электроники мала. A сам язык С остался для сборки артефактов для микроконтроллеров с экстремально малыми ресурсами (для automotive ECU, SIM карт, IoT). Хотя и сейчас большинство компаний в Евросоюзе уже давно как и микроконтроллерные сборки собирают на С 17 и выше. Вероятно, что язык программирования С для МК вскоре и вовсе войдет в историю.
Справедливости ради стоит упомянуть, что С используют для создания модулей ядра Linux. Как вариант можно пойти работать туда. Но надо быть готовым, что образ будет собираться по часу. В Linux проектах ещё больше бюрократии и секретности, чем в проектах на МК. И С кода в Linux пишут меньше. Часто Linux программисты даже никогда не видели схемотехнику своего одноплатника SBC и datasheet(а) на SoC (так как это секрет компании). Программисты работают в абстрактных условиях. Редактируют дерево устройств, путешествуют по файловой системе, пишут скрипты на Bash и Python, исправляют баги в JavaScript(е) Web GUI и выносят ведрами баги из кода User Space процессов, перекраивают дерево устройств *.dts, добавляют драйверы чипов в загрузчик U-Boot и пишут очень много документации и инструкций (Doc Food(а)).
Еще программистам MК приходится обсчитывать аналоговые цепи и вычислять какие-то сложные 8-этажные формулы и строить графики. Для этого практикуют бесплатный интерпретатор Python.
Главным образом программисты МК составляют Board Support Package, пишут драйверы для новых умных периферийных чипов c управлением по интерфейсам I2C/SPI/MDIO/1Wire/UART/SMBus/PMBus, пишут загрузчики, портируют RTOS(ы) на разные процессорные ядра, пишут код-генераторы, скрипты сборки, составляют модульные тесты, изредка производят рефакторинг, часто чинят ошибки в Legacy коде, изредка что-то изменяют в коде Assembler(а), который запускается до вызова функции main().
Иногда программист МК даже ничего и не пишет сам вообще. Важно уже не сколько уметь программировать, сколько уметь тестировать и собирать, улучшать из готового кода из интернета. Какие-то исходники можно взять из github или ядра Linux. Там есть код на многие темы. Драйверы для множества чипов. Важно уметь верифицировать найденные сорцы и аккуратно подключить их к нужной сборке.
Где работать?
В России программисты МК в основном работают в компаниях, которые делают госзаказ на военную технику. Основной источник работы – госзаказы и ОКРЫ. Конечный программист МК как правило даже не знает, что за комплекс разрабатывается в организации. Все платы называются “вычислительный модуль”. ТЗ для программиста МК под запретом. На рабочем компьютере нет доступа в сеть интернет. Монитор становится черным при запуске браузера. Утилиты можно устанавливать только через пароль руководителя отдела. Пароль для открытия диспетчера устройств, пароль, чтобы прописать путь в переменную Path, пароль на установку драйверов, пароль на удаление папок.
Традиций в профессии программист микроконтроллеров в РФ исторически не сложилось. Разработка всюду похоже на анархию. Зачастую вам придется работать даже без технического задания. Задачи могут поставить так: “подружить микроконтроллер и айфон”, “оживить плату”, “подружить платы”. Понимай как хочешь. Нет доверенной покрытой тестами кодовой базы на всю страну (аналога европейскому AUTOSAR). То есть нет тех кирпичей из которых можно было бы гарантированно собирать программное здание. Нет никакой общей культуры разработки системного ПО. Нет общей терминологию. Везде свой внутренний нецензурный фольклор.
Что разрабатывать?
Любое электронное устройство, которое вы будете делать скорее всего можно будет назвать одним словом: переходник. Типичное IoT устройство это с одной стороны, например, датчик температуры на шине I2C c другой стороны WiFi модуль. Телематика это тоже переходник: с CAN на LTE и т д. Всё что я делал в русской электронике 10 лет подряд это переходники с одного интерфейса на другой интерфейс. Маршрутизаторы, модемы, телематика, СКУД(ы), аудиосистемы, IoT. Переходники. Переходники. Переходники.
Есть некоторая специфика программирования МК в РФ. Свою оригинальную электронику в России делать отказались еще в конце 60-х. Был принят гос план копировать западные IBM(ы). В результате Россия стала полным акцептором IT технологий. Сегодня у России нет своего дешевого процессорного RISC/MIPS/PowerPC ядра, нет своего компилятора для известных ядер ARM, PowerPC, RISC -V. У РФ нет даже своего текстового редактора. Благо есть открытый софт (Linux и GCC), которым и пользуются российские компании. Страна полностью зависит от импорта микропроцессоров и ToolChain(а) для микропроцессоров. Микроконтроллеры активно покупают в Италии, Франции, США, Китае, Нидерландах, Канаде, Швейцарии. Toolchain покупают у Швеции (IAR), Германии(Keil), США(GHS).
В РФ по-настоящему передовые электронные разработки часто попросту не доживают до серийного производства банально из-за очередного эмбарго.
Россия страна санкционная. В российской организации могут запросто решиться начать разработку какого-нибудь электронского поделия, которое можно реализовать только на одном единственном импортном чипе из Евросоюза или США. А Vendor этого чипа наложит эмбарго либо сразу, либо потом и не будет присылать вам полный datasheet и сами чипы, так как РФ, по его мнению, является санкционной территорией. И в результате вы, как программист микроконтроллеров вообще ничего не сможете с этим сделать. Такая история у меня лично была уже дважды(чипом PM6766).
В США ситуация диаметрально наоборот. Там не то, что есть полный цикл IT продуктов. Там еще есть каждый IT продукт в нескольких экземплярах, т.е. от нескольких вендоров. Микропроцессоры AMD, Intel, TI, Microchip. Софт операционных систем от MAC, Windows. Компиляторы TI, GHS. Всеми любимый текстовый редактор VS Code от Microsoft.
Работа программиста MK происходит как правило в гаражных или около гаражных условиях. Провода. Высокое напряжение. Много какого-то металлолома возле компьютеров. Хлам на столах с горочкой. Вероятно, будешь работать по соседству с шумным охладительным оборудованием, так как электронные платы надо подвергать климатическим испытаниям.
Начальство программистов микроконтроллеров в трех случаях из пяти в российских компаниях это в прошлом схемотехники. О программировании они знать ничего не хотят, не любят программировать. Учиться у них программированию не выйдет.
Российские компании не хотят ничего выдумывать. Предпочитают копировать то, что уже есть на западе. Едва ли в РФ получится участвовать в какой-либо уникальной прорывной разработке на микроконтроллерах. По настоящему грандиозных проектов в РФ скорее всего просто не удастся сделать из-за эмбарго. Проекты гаджетов с Kickstarter(а) или CrowdSupply вызывают больше восхищения и трепета чем то, что пытаются делать электронные компании в РФ со своим громадным опытом.
В программировании микроконтроллеров большинство русских фирм даже не заботятся о коде как таковом вообще. Для их процессов внутри организации кода как будто бы и не существует вовсе. О коде не говорят. Код не изучают, код не анализируют. Интерес представляет только физический прибор. В большом почете схемотехники и конструкторы. А исходники можно вообще хранить в открытом доступе и это никого не волнует. Исходники микроконтроллера никого кроме 1го единственного разработчика не интересуют. В одной российской организации я видел как программист микроконтроллеров называл С функции именами литературных персонажей и это никого вообще не волновало так как кроме него с этим кодом никто не работает. А он хотел быть незаменимым. И, как правило, один человек делает прошивку для одной платы. Другой программист делает прошивку для другой платы. Каждый пишет свою бажную версию fifo, swap, циклического буфера, цифрового фильтра, загрузчика, reverse_byte, CRC8, crc16, crc24, crc32 и пр. зачастую даже без юнит тестов. Повторяемость кода достигает количества программистов в организации умноженная на 100%. Обычно это 550%…750%. Их сорцы никто не контролирует, их код не инспектируют, не тестируют, не переиспользуют. Большинство разработчиков даже юнит тестов не делают. В результате во всех микроконтроллерных проектах может быть дичайший хаос (функции по 5k строк) и этого даже никто не заметит. Это особенность российской программистской культуры ведения R&D.
Второстепенная работа
Работа программирования МК тесно связана с электронными платами. Если вы программист МК, то скорее всего вы будете по уши в электронных платах. Вам придется не сколько программировать, сколько исправлять разнородные аппаратные баги. Железо часто подводит. Вот пара примеров.
Программатор не видит target. Собрали стенд, положили SWD длиной 90 см и нет Link(а) с MCU. Когда кабель 12 см, то link есть. Потом статическое электричество будет постоянно портить вам жизнь, разные разъёмы будут не контачить и прочее. Аппаратные проблемы будут еще до запуска кода.
Например плата работает под отладчиком, а при пересбросе питания не стартует прошивка. На другой плате это не проявляется. И эта ситуация потребует неделю на выяснение и устранение причины. И так для каждого нового чипа и ToolChain(а). Свежие электронные платы с производства не любят работать. Предпочитают сразу сгорать. На программирование после починки плат остается мало времени.
На сам процесс программирования уходит 10…20% времени. В основном приходится что-то ремонтить, разбираться с проводами. Выяснять, что куда подключено, проверять осциллографом наличие электрических сигналов, проходить по чек-листу. Не успеешь разобраться с одной платой, как тебе принесут еще две платы и надо будет вкуривать очередную схемотехнику на 30-60 страниц. А схемотехники даже блок-схему не нарисуют, сразу дают в лучшем случае электрическую принципиальную схему (Э3) в виде фотографии*.JPG, а в обычном случае и вовсе принесут плату без доков и скажут, что надо оживить плату.
Можно запросто неосторожно сжечь оборудование из-за неправильно подключенного заземления. Вы обязательно узнаете как пахнут искры. Можно потратить весь день на подключение лампочки или чтения состояния зашумленной кнопки. Копаться в разъемах. Лампочки тебя будут ослеплять, моторы задевать, бетта-лучи облучать.
Чтобы отлаживать код, его надо исполнять. Если в коде баг и нет возможности исполнить код, то баг не исправить. Это как найти в лесу отдельно лежащую человеческую ногу, то не ясно что это и зачем. Понятно только когда эта нога видна в действии. Аналогично в понимании причины багов. Надо запускать код. А накладные расходы на запуск и исполнения микроконтроллерного кода при разработке на MCU в составе комплекса порой огромные.
Мало ресурсов
Программисты МК в принципе не пишут больших программ. Размер проекта ограничен несколькими сотнями килобайт памяти Nor Flash(а). Обычно 320KByte на всё. Вас будет преследовать постоянная нехватка Flash памяти. Особенно при разработке загрузчиков. Невозможность сделать полноценный загрузчик по всем интерфейсам. С RAM ситуация еще хуже. Вам повезет, если размер RAM будет в 4 раза меньше чем Flash(а). А частоты микроконтроллеров не превышают 200MHz, так как смысл МК это низкое энергопотребление.
Даже не мечтайте про удалёнку из Тайланда
Чтобы в принципе делать embedded software нужен физический доступ к оборудованию. Проверка сигналов осциллографом, подключение логического анализатора к I2S, измерение DMM(ом), работа с микроскопом для проверки, что микросхемы правильно припаяны. Анализ перегрева платы тепловизором. Это основное отличие программирования микроконтроллеров от, например, web программирования. Едва ли вообще можно эффективно работать в роли embedded удаленно. Это как удаленно красить стены или строить дом. Это профессия производственная и тут нужно физические первостепенное воздействие на прототип или изделие.
Образовательный BackGround
Самым полезным background-ом для профессии программист микроконтроллеров я бы назвал профессию разнорабочий. Программирование микроконтроллеров это на 80-70% электротехника и только на 20-30% программирование. Надо будет делать прототипы и ремонтировать сгоревшие платы. Вытравливать электронные платы методом ЛУТ (лазерно-утюжная технология). Выяснять, почему электронные платы с производства не включаются. Предстоит делать закупки примочек, метаться по радиорынку, работать курьером, прокладывать проводку, чертить 2D и 3D детали, трассировать печатные платы, паять под микроскопом, измерять электрические сигналы, выпиливать, клеить, шкурить, сверлить, фрезеровать, крутить разные отвертки, настраивать 3D принтер, пылесосить, ездить на автомобиле с ноутбуком на коленях и многое чего еще. Делать реверс инжиниринг западных товаров. Вам повезет, если вы вообще за неделю будете хоть что-то программировать в этой чудо профессии программист микроконтроллеров. Если вы будучи программистом МК не станете исполнять функции чернорабочего и будете проявлять принципиальность, якобы я только код пишу, то попросту будете тормозить ход работы и вас будут изживать из компании.
Да и программы для МК простые. Прочитать по ADC напряжение и что-нибудь выполнить. Все что вам понадобится из теории computer science это теория конечных автоматов, PID регуляторы, самые базовые и простецкие структуры данных как массив, FIFO(шка), циклический массив). Плюс цифровыефильтры, триггерШмитта,AES шифрование. Пожалуй всё. Остальная теория будет вам скорее мешать, чем приносить пользу. Я ни разу не видел LIFO, двоичных деревьев AVL, красно-черных деревьев, косых деревьев в исходниках каких бы то ни было прошивок. Ни разу не видел хеш-таблиц, фильтров Блума, графов. Все это добро в большинстве своем просто не нужно в программировании МК.
Прошивки довольно простые программы. В них как правило нет никакого процессинга над данными. Всё сводится к тому, что надо GPIO мигнуть, кнопку прочитать, испустить PWM сигнал и прерывания по перепадам напряжений отловить. В микроконтроллерах нет нужды даже в алгоритмах сортировки. В сущности прошивки только прописывают константы в регистры и считывают регистры SoC(а). А это приводит к активации электрических цепочек внутри SoC(а). Со стороны вся цифровая электроника только и делает всего-навсего 4 простых действия:
1–установить на проводе 0V
2–установить на проводе 3.3V
3–считать с провода 0V
4–считать с провода 3.3V
Вот и всё. Easy!
Программы для МК в основном нужны там, где надо быстро сигналы обрабатывать. Для управления любыми двигателями (спинеры), для считывания датчиков физических величин. В таких вещах не должно быть никакой осечки и неожиданного поведения. Во встраиваемых системах не будет всех передовых технологий как MMU, Cache, динамического выделения памяти. Так как они не дают гарантии на время отклика. Есть правила MISRA, которые запрещают много интересного, например, динамическую память. Нет динамической памяти, а значит нет и абстрактных структур данных. Нет сортировки слиянием, быстрой сортировки. Ресурсов так мало, что быстрее отправить данные на сервер и расcчитать там чем рассчитывать что-то на MCU. Разработчик MCU обычно за год делают проект и переключаются на другой. В микроконтроллерном программировании всё очень топорно устроено. Как правило на один проект сажают одного человека. Командной работы нет. Поэтому такими программистами МК работают как правило только ортодоксальные интроверты.
В программировании МК не происходит ничего особенного. Как правило такие программы принимают пакеты из интерфейсов и что-то прописывают в интерфейсы или читают датчики и передают показания в интерфейсы. Принимают прошивку и прописывают ее в Flash память.
В программировании МК как такового программирования-то мало. В основном задачи вида прочитать SPI датчик и переслать значение в провода. Получить из проводов команду и включить лампочку. Получить из проводов массив и прописать его в энергонезависимую память и т.п.
Много работы с бумажками
Для программирования микроконтроллеров надо очень хорошо ориентироваться в множестве официальных документов.
Вникать в спецификацию компилятора (~1k страниц), стандарт языка С (~700-1k страниц), спецификацию процессорного ядра (~300 страниц), спека RTOS(а) (~250 страниц), обязательно ознакомиться с перечнем ошибок проектирования кристалла (~20 страниц), вникать в спеки каждой микросхемы (~50…5k страниц) на печатной плате. Искать куда идут провода(~1-100 страниц). Вникать в спецификации BlueTooth LE (1 профиль-500 страниц). Стандарт функциональной безопасности ISO-26262 (450 страниц). Всё на английском.
Придется как юрист очень много пылиться в чтении официальных документов.
Чего вообще хорошего в профессии программист микроконтроллеров?
Плюс этой работы в том, что тут всё конкретно и завязано на физические величины. Всё можно измерить. Есть полный контроль за устройством. Никакого недоверенного кода. Никакой OS, которая вдруг начнет обновлять антивирус на МК нет. Всё можно оцифровать, любую физическую величину перевести в цифру. Всё упирается на физику и законы физики. Никто не будет спорить с законами физики. Софт произрастает от схемотехники. Схемотехника произрастает из физики. Достаточно посмотреть на схему устройства и уже становится понятно, что это и какое для неё должно быть firmware. Товар сразу видно, его можно потрогать, показать, покрутить. В этой профессии создают настоящие материальные ценности. Язык Си по сравнению с другими языками простой как ножик. Одни только функции и переменные. Самый древний язык из тех что всё еще используются ~50 лет. Тут не будет никаких программных делегатов из C#, сборщиков мусора, исключений и виртуальных машин.
Вывод.
В целом профессия разработчика МК такая как я тут написал. Мало программирования и много проводов. Если у вас есть выбор и вы хотите программировать на разных языках и быть в теме классической программной теории, если вам 20..24 и вы решаете как орешки олимпиадные задачи с LeetCode и хотите использовать в работе современные и классические алгоритмы и структуры данных, то программирование MK вам едва ли подойдет. Тут просто не нужно ничего кроме FIFO и конечных автоматов. Займитесь лучше Back-End(ом), Front-End(ом), Web(ом), нейросетями, GPU, мобильными приложениями, базами данных. С и то более живо развивается. Появились стандарты 11, 14, 17, 20, а plain С это 89, 99, 2023 и кажется всё. По моим наблюдениям за 10 лет в среднем трое из пяти кто начинал с программирования MK спустя 3 года переметнулись в другие программирования или совсем в другое. Программирование МК это для тех кто готов закатать рукава, замарать руки и регулярно выходить из зоны комфорта.
Если же вы всё же по каким-то причинам хотите программировать MCU(шки), то старайтесь угодить в компанию, где делают модульное тестирование сорцов, собирают из Make файлов, есть командная работа (3 вкладчика), практикуется пере использование кодовой базы, где фигурирует такое слово как AUTOSAR, есть планерки, инспекция программ, автосборки. И крайне важно, чтобы в компании отсутствовала секретность на схемотехнику, datasheet(ы) и техническое задание. Там хотя бы будет выше вероятность сделать что-то по-настоящему ценное.
В общем делайте правильный выбор.
Каким инженером был тадаши?
Тадаши Сасаки инженер связи и менеджер чьи исследования электронных ламп, полупроводников и жидкокристаллических дисплеев внесли значительный вклад в развитие технологии настольных калькуляторов; Сасаки также участвовал в финансировании Busicom и последующей разработке 4004 …
Почему Каллаган открыл огонь? Ёкай противостоит Хиро и Бэймаксу на складе. После отъезда Хиро Роберт крадет микроботов в своих гнусных целях, чтобы отомстить мистеру Крей и замести следы, профессор разжигает огонь, поджигая витринный зал.
Кто озвучивал Тадаши?
Тадаси Хамада – вымышленный персонаж, который появляется в 54-м анимационном фильме Walt Disney Animation Studios «Большой герой 6». Фильм вдохновлен одноименным комиксом Marvel. Его озвучивает Дэниел Хенни. Кроме того, Тадаши – этнический японец.
Где Хиро в Бэймаксе? Хиро теперь студент в Технологическом институте Сан-Франсокио, что он обдумывал во время фильма, и его борьба в студенческие годы показана на протяжении всего шоу.
Кто самый старший в big hero six?
Хиро Хамада – главный герой анимационного фильма Диснея 2023 года « Большой герой 6» . Он четырнадцатилетний вундеркинд-робототехник, живущий в Сан-Франсокио под присмотром своей тети и старше. брат Тадаши.
Кто является антагонистом в Big Hero 6? Роберт Каллаган (также известный как Ёкай) – главный антагонист анимационного фильма Диснея 2023 года «Большой герой 6». Он бывший главный профессор робототехники в Технологическом институте Сан-Франсокио и наставник Тадаши Хамады.
Сколько лет медово-лимонному?
Внешность. Мед – это красиво от природы. 19-летняя девочка со слегка загорелой кожей, ярко-зелеными глазами и длинными медово-светлыми волосами до середины спины.
Pixar Big Hero 6? Большой Герой 6 это первый анимационный фильм Диснея с персонажами Marvel Comics, материнская компания которых была приобретена The Walt Disney Company в 2009 году. Walt Disney Animation Studios создала новую программную технологию для создания анимационных визуальных эффектов фильма. … Большой герой 6 (фильм)
Большой Герой 6 | |
---|---|
Произведено | Рой Конли |
О чём?
Бэймакс — один из главных героев мультфильма «Город героев» (у которого есть многосерийный спин-офф в формате 2D, посвящённый команде подростков). Он спокойный, неторопливый и услужливый лечебный робот-помощник, больше напоминающий неловкое облако с бездонными чёрными глазами.
В своём сольнике Бэймакс каждый эпизод попытается разнообразить помощью жителям Сан-Франсокио. То кота не пропустит мимо визоров, то на школьное представление заскочит. Бэймакс услышит каждую жалобу, всех просканирует и придумает, как улучшить ситуацию. Коснётся это и даже тётушки Хиро — Кэсс.
Тадаши хамада японец?
Тадаси Хамада – вымышленный персонаж, который появляется в 54-м анимационном фильме Walt Disney Animation Studios «Большой герой 6». Фильм вдохновлен одноименным комиксом Marvel. Его озвучивает Дэниел Хенни. Кроме того, Тадаши – этнический японец..
Что случилось с родителями Хиро? По словам Хиро, он потерял родителей в возрасте трех лет. Их сыновья остались на попечение сестры г-жи Хамады.
Хиро создал нового бэймакса?
Хиро модифицирует Baymax с помощью разработка и установка бронежилетов из углеродного волокна, и перепрограммировать его, чтобы он знал боевые искусства.
Хиро наполовину японец? Хиро и Тадаши оба наполовину японцы. Их отец японец, а мать кавказка. В оригинальных комиксах они были полностью японскими. По словам Хиро, он потерял родителей в возрасте трех лет.
Сколько лет было Тадаши? Согласно книге «Большой герой 6» («Книга секретов Диснея»), Тадаши — 18 лет.