В России бытует мнение, что программистам микроконтроллеров не нужна никакая схемотехника. Особенно в таких организациях, которые изначально долго занимались Web(ом), а потом вдруг решили прикинуться электрониками.  Попробуем разобраться в справедливости этого наивного утверждения и понять, что вообще нужно для старта разработки firmware. Иной раз складывается мнение, что в РФ вообще никогда электроникой не занимались. Никаких традиций в российской электронике не сформировалось. Никакой преемственности нет. Никаких best practices не выделилось, как это повсеместно в большом IT. Что вся громадная 90-летняя история мировой электроники просто прошла как-то мимо РФ. Видимо эпоха, когда в стране кибернетика считалась лженаукой сделала свое нехорошее дело. Там не менее попробуем разобраться как всё таки надо работать с электронными платами. Что для этого нужно из доков. Казалось бы простая вещь. Однако в России часто бывает, что в новостях анонсируют о создании микропроцессора или устройства и при этом нигде нет никакой документации и даже фото на хвалёное изделие отсутствуют. Поэтому фото это прежде всего доказательство, что плата для которой пишется софт в самом деле существует в физическом мире.  Поэтому фото это доказательство, что плату вообще собрали (или собрали частично), или купили. Эту фотографию можно также посылать в компанейском мессенджере в качестве приложения для тех кто ещё не в курсе соответствия между названием платы и её внешним видом. По качественному фото платы в высоком разрешении можно понять очень многое. Например какая pdf(ка) со схемотехникой конкретно нужна для этой платы, если есть несколько похожих вариантов на жестком диске. В общем просто двусторонее фото платы это уже такая себе хорошая документация. Как говорил один знаковый:  дайте мне фото платы и я напишу для неё загрузчик Подобно тому как школота из художественных рисовальных кружков рисует портреты не с натуры, а по фотографии.  Блок-схема нужна чтобы ввести в курс дела новых людей. Прежде всего программистов. Блок-схема также позволит вам быстро вернуться к давно законсервированной разработке. На блок схеме следует отразить основные моменты, которые нужны например для написания прошивки. Это номера UART, SPI, I2C, количество RAM, FLASH, максимальная частота, битовые скорости интерфейсов, количество регистров в умных чипах, I2c адреса и прочее. Проблема в том что большинство схемотехников в РФ не составляет блок схемы банально потому, что не знают как это делать. Их этому не учили в институте. А если они и пытаются накропать блок-схему, то получается так, что лучше бы они этого не делали. Они добавляют градиенты, затенения, размытости, насыпают много стразиков. Смотришь на их блок-схемы и думаешь это рисовала женщина. Потом оказывается это рисовал парень, но его схема выглядит как и женщины. Про то как составлять блок-схемы PCB есть добротная методичка тут https://habr.com/ru/post/667030/ Если проводить аналогию, то блок-схема это как загрузчик u-boot. Цель Блок-схемы быстро загрузить в мозг разработчика большую и сложную систему.   Это самое главное. Это основной документ на любое электронное устройство. Уже глядя на схемотехнику становится очевидно, что это и на что способно. Бывает достаточно просмотреть схемотехнику и уже понятно какой для нее нужно писать Firmware. Причем схемотехника должна быть именно в *.pdf так как при анализе схемотехники нужно многократно пользоваться поиском (Ctrl+F). Если нет схемотехники, то говорить про какую бы то ни было разработку firmware не приходится. Причем должна быть рамка в стиле игры морской бой, чтобы можно было в переписке текстом делать навигацию по кускам схемотехники (A3, B4 и т. д.)  Часто найти datasheet это весьма нетривиальное занятие. Особенно если на маркировке корпуса это явно не написано. Дело еще в том, что некоторые чипы продаются под NDA (например PM6766, FDA801) и просто (за)Google(лив) вы не нейдете ничего кроме флаера. Поэтому схемотехники обязаны предоставить программистам все datasheet(ты) с errata на этапе сдачи конструкторской документации. Перечень очень полезный документ. Особенно в формате электронной таблицы. На основе полноценного BOM можно, например, делать всяческую аналитику. Например, можно вычислить оценку минимально возможной площади необходимой для печатной платы. Посчитать минимальную стоимость изделия. Вычистить теоретическое энергопотребление. Найти самое слабое звено при климатических испытаниях и прочее. Оценить потенциально санкционно нестойкие микросхемы. При этом важно делать BOM в виде (рас)share(ной) электронной таблицы в облаке. Так её смогут просматривать и редактировать множество разработчиков. Старые советские BOM(ы) в виде таблицы в *.pdf давно потеряли свою актуальность и смысл.Вот пример образцового BOM.  https://docs.google.com/spreadsheets/d/1OjjYhNh0zToOJ0MFgpm2HVs3wwSPBhPpXjJwW4TlKwg/edit#gid=1423611896 При написании кода firmware для PCB приходится первым делом конфигурировать GPIO пины. В современных платах это 200...400 пинов. Для этого приходится выписывать где-то отдельно конкретные пины и определять по схемотехнике их свойства. Вход/выход. Какая именно нужна подтяжка. Какая нужна периферия, какой устанавливать ток, какую устанавливать частоту тактирования и прочее. В случае когда есть таблица проводов в Google SpreadSheet, то это можно эффективно понять и сделать благодаря стабильной сортировке по категориям и раскраске нужных проводов для акцентирования внимания на конкретной сути.  Также таблица проводов нужна для верификации самой схемотехники. Тут идея проста. Если по существующей якобы схемотехнике невозможно понять, где начинается, а где заканчивается каждый провод, то эту горе-схемотехнику нельзя использовать и следует отправить на доработку обратно создателю.Вот пример образцовой WireTablehttps://docs.google.com/spreadsheets/d/1OORWLG3IgiS_SvEASOm0HJW1asHwws-V46CHfTqbaBE/edit#gid=0 Как только надо будет измерить сигнал на реальной плате так сразу понадобится топология. Это просто необходимо, чтобы понять куда подключать электроды осциллографа. Если вы будете тыкаться в плату не зная топологии, то 5% вероятность, что при первом же касании электродом осциллографа дорожки на PCB вы плату сожжете. Причем должны быть закладки тестовых Pad(ов), оформленные как оглавление к PDF файлу топологии верхнего и нижнего слоя. На плате может быть 40...100+ микросхем. Большинство из них будут выглядеть абсолютно одинаково. Чтобы найти на плате, где находится одна конкретная микросхема (например U13), то вам обязательно необходима монтажная схема. Это по сути упрощенная топология верхнего и нижнего слоя, на которой показаны только номера микросхем, их габариты и их взаимное расположение относительно друг друга. К счастью в промежуточных слоях микросхемы еще не впаивают. Поэтому у этой схемы всего 1 или максимум 2 листа. У монтажной схемы обычно 2 листа Это нужно для того чтобы понять как расположены отверстия для крепления платы на вертикальном HIL стенде для авто тестов. В принципе эту схему можно составить опосля, если присутствует сам экземпляр изделия (печатная плата) и штангенциркуль. Бывает что схемотехника настолько запутана и сложна, что глядя на неё просто нереально сразу понять, что там, как, да зачем. Посмотрите например схемотехнику платы NRF5340-ADK. Там схемотехника построена из супер кластеров на 20 листах, аж *.pdf подвисает при поиске. Зато если чисто формально написать граф на языке dot и отрендерить граф утилитой graphviz в разных цветах, то картина заметно проясняется. Подробнее про это тут https://habr.com/ru/post/682346/ 10--Дерево сборки печатной платы Дело в том что последовательность припаивания компонентов к печатной плате имеет существенное значение. Есть такие компоненты что, если припаивать в случайной последовательности, то можно случится такое, что очередной компонент просто не при монтировать на свое место.  Потом цепь питания имеет смысл припаивать в первую очередь. Далее надо проверить цепь питания на холостом ходу. Если напряжения те что нужно: 5V, 3.3 V 1.8V то продолжить паять следующие компоненты по смыслу. Микроконтроллер и SWD шину. Тут можно сразу прошить в MCU тестировочную прошивку.  И в последнюю очередь припаивать периферию: connectivity, sensitivity, storage, multimedia, acting. Невозможно просто спаять плату и надеяться, что она заработает.  Это верх наивности в мире электроники. Если к плате припаяли электронные компоненты и подали питание, то 95% вероятность, что на  плате даже до микроконтроллера не дойдет напряжение питания. Плату надо проверять уже во время пайки. При этом крайне важное значение имеет последовательность пайки. Припаяли цепь питания DC-DC (5-3,7) - проверили. Припаяли цепь DC-DC (3,7-3,3)  - проверили. Поставили MCU, прошили проверили и только после этого припаивать остальную периферию. Это как в строительстве. Вы где-нибудь видели чтобы многоэтажный дом начинали строить с крыши?  Можно просто взять BOM и в отдельной колонке проставить порядковый номер в последовательности пайки. Это и будет деревом сборки. Суммирую вышесказанное иерархия схем получается такая: В общем перечень необходимой схемотехники получился такой  № Название документа Расширение  обязательность приоритет производная 0 Фото платы с 2х сторон *.jpg main высокий уникальная 1 Блок-схема PCB *.svg derivative высокий 2 10 DataSheet(ы) на каждый компонент *.pdf main высокий уникальная 2 Схемотехника *.pdf main высокий уникальная 3 Топология всех слоёв PCB *.pdf или Altium Designer main высокий уникальная 4 монтажная схема *.pdf derivative средний 3 5 таблица проводов   Google spread Sheet derivative средний 2 6 PCB Mechanical *.svg или autocad derivative средний 3 7 Bill Off Material Google spread Sheet derivative средний 2 8 Описание графа схемотехники *.gv derivative низкий 2 9 чертеж корпуса AutoCAD main высокий уникальная 11 дерево сборки spread Sheet main высокий уникальная Если же у вас в распоряжении есть только PCB, то максимум, что вы сможете - это сделать фото с двух сторон, потом при наличии штангенциркуля восстановить габаритный чертеж. Если есть микроскоп, то может быть, если повезёт, вы сможете примерно составить BOM и найти в интернете datasheet(ы). Но даже это при плате в 40+ компонентов может занять многие недели реверс-инжиниринга.   Как видите для разработки электроники и системного софта надо целая куча всяческих разных схем и таблиц (12 штук!). Поэтому электронику и называют на западе словом Hi-Tech, как раз потому, что для создания полноценной PCB надо очень много всего-всего разного, как документации, специалистов, так и оборудования и целый калейдоскоп инструментов. Создавать электронику - это очень высокоорганизованная деятельность. Произвести электронную плату это не буханку испечь. Тем не менее какая-то документация является первоисточником(электрическая схема и топология), а что-то производным.  Однако абсолютным минимумом является электрическая принципиальная схема (Э3) и топология разводки.  Всё остальное можно так или иначе синтезировать на основе схемотехники и топологии. Однако без электрической принципиальной схемы и топологии говорить о разработке и отладке системного софта говорить не приходится.  Невозможно серьёзно относиться к разработке когда документация отсутствует или сделана тяп-ляп. Тем более невозможно испытывать симпатию к продукту про который ты ровным счетом ничего не знаешь. Ну Вы сами попробуйте хоть раз в жизни разобрать какой-нибудь бытовой электронный прибор, вот, например, Bluetooth колонку https://habr.com/ru/articles/759870/ хотя бы, и понять что внутри, как соединено и работает. Вы с удивлением для себя обнаружите что, ровным счетом ничего не понятно и запросите документацию. Поэтому делайте качественные комплекты схем. Пишете документацию. Это точно пригодится.  Если есть, что добавить, то пишите в комментариях Акроним Расшифровка PCB Printed circuit board BOM Bill of materials CAD Computer-aided design КД Конструкторская документация Links https://habr.com/ru/post/451158/  Embedded SW/Firmware Engineer