Embedded разработка что это
Перейти к содержимому

Embedded разработка что это

  • автор:

Кто такой Embedded-разработчик. Обзор изнутри от Вадима Егораева

О профессии рассказывает Вадим Егораев, Software Engineering Team Leader в ЕРАМ, 10 лет в ИТ, развивает программы тренингов для Embedded-разработчиков.

Продолжаем цикл материалов про ИТ-специальности. Каждую из них описывает «типичный представитель» — опытный специалист. Надеемся, что цикл поможет школьникам, студентам, переквалификантам, джуниорам и сочувствующим выбрать специальность в ИТ, оценить свои перспективы или просто сверить часы с авторитетным коллегой. Можно обсуждать и дополнять материал в комментариях, чтобы сделать его ещё полезней. Спикер и автор материала поддержат дискуссию и ответят на вопросы.

Кто такой Embedded-разработчик. Обзор изнутри от Вадима Егораева

О профессии рассказывает Вадим Егораев, Software Engineering Team Leader в ЕРАМ, 10 лет в ИТ, развивает программы тренингов для Embedded-разработчиков.

Продолжаем цикл материалов про ИТ-специальности. Каждую из них описывает «типичный представитель» — опытный специалист. Надеемся, что цикл поможет школьникам, студентам, переквалификантам, джуниорам и сочувствующим выбрать специальность в ИТ, оценить свои перспективы или просто сверить часы с авторитетным коллегой. Можно обсуждать и дополнять материал в комментариях, чтобы сделать его ещё полезней. Спикер и автор материала поддержат дискуссию и ответят на вопросы.

Что такое Embedded-разработка?

Embedded — это разработка встроенного программного обеспечения. Я определяю Embedded-разработку как «практически всё, что делается не под компьютер, мобильный телефон и сервер».

Встроенное ПО есть во многих привычных вещах. Например, беспроводные наушники — передача данных на них идёт при помощи софта. Веб-камеры — в звуковой карте есть ПО, которое управляет громкостью, входами, выходами, переключает их. Ещё люди ездят на машинах, смотрят телевизор, фотографируют на камеру и т. д. — процессоры сейчас есть практически везде, и Embedded-разработчики пишут для них ПО.

Как развивалась отрасль?

Активное развитие устройств со встраиваемыми системами началось, когда процессоры стали низкопотребляющими, достаточно дешёвыми в выпуске и внедрении. Личный пример: если в 1988 году у моего Audi 100 не было внутри никакой цифровой электроники, то в середине 90-х появились первые устройства, которые управляли системой антиблокировки тормозов (ABS) на основе процессора. А с 2000-х цифровой электроникой стали контролироваться стёкла, дворники, фары и всё, что угодно.

Последние 5 лет в тренде — умные устройства вроде интеллектуального чайника, роботов-пылесосов, смарт-ламп и область IoT в целом. Развитие направления происходит, в том числе, благодаря таким платформам, как AWS, Azure, Microsoft и GCP, к которым можно быстро и качественно подключать сотни тысяч умных устройств, а затем обрабатывать данные с них.

Чем занимается Embedded-разработчик?

Рассказать легче в сравнении. У разработчика, который пишет на Java, Python или других высокоуровневых языках, 70–80% времени уходит, чтобы создать само ПО. То есть бизнес-логику — разработку того, что приходит из требований заказчика.

У Embedded-инженеров наоборот: они используют 70% времени, чтобы заставить платформу работать. Мы создаем все условия, чтобы ПО запустилось, можно было принимать данные от сенсоров, управлять мотором, работать с драйверами и загрузчиками, светить светодиодами и так далее в зависимости от контекста. Делаем то, что не связано с непосредственными задачами устройства.

Типичные задачи Embedded-программистов: написать что-то, что даёт данные или куда-то их пересылает. Например, принять данные от температурного датчика и передать их в облако. Другой задачей может быть написание, скажем, драйвера сенсора.

Какие знания пригодятся?

  • Понимать платформенные особенности: как устроены процессоры и микропроцессорные системы, каким образом данные располагаются в памяти, про кэш данных, как работает программа, как происходит ее исполнение с операционной системой и без и др.
  • Знать базу: что такое системы версионирования, bug-трекеры и СI-инструменты, такие как Jenkins или Azure DevOps.
  • Из языков программирования чаще всего нужен С, хотя в последнее время всё больше Embedded-программ пишутся на С++. Процессоры становятся дешевле в производстве, поэтому почти в каждое устройство можно поставить Linux — серьёзную систему, которая фактически даёт возможность писать встроенное ПО на любом языке программирования.
  • Электроника — один из главных пунктов. Все встроенные устройства сделаны на базе специализированных приборов, которые предназначены для решения конкретных задач. Они очень разнообразны и отличаются друг от друга схемотехникой, набором периферии, элементной базой. Embedded-разработчик должен уметь разбираться во всём этом: читать схему устройств, понимать, как это воплощено в печатных платах, как работают сенсоры и так далее.
  • Понимать специфику работы операционных систем разного рода и как отлаживать код в ОС реального времени. Во встроенном ПО обычно есть одна конкретная цель, например, включить-выключить реле, которую важно сделать вовремя (счёт идет на мили- или микросекунды). Linux и Windows, например, этого гарантировать не могут, потому что их главная задача — равномерно и честно распределить процессор между всеми программами. А вот ОС реального времени гарантирует, что посылаемый сигнал точно дойдет вовремя. Порой это очень критично: задержка исполнения сигнала в тормозной системе машины может привести к большому ущербу здоровью и жизни человека.
  • Знать прикладные области, где встроенное ПО используется. Например, поскольку IoT становится всё более популярным, Embedded-разработчику стоит знать всё, чтобы подключить устройство к облакам. Это и беспроводные технологии, такие как Bluetooth и Wi-Fi (основные), LoRa и Narrow-Band IoT — список большой. Кроме того, нужна «база» о сетях: как работает интернет, что такое роутеры, DNS, DHCP и высокоуровневые интерфейсы, к которым мы все привыкли, например, HTTP. Еще есть специфические, узконаправленные знания, например, в автомобильной, медицинской и промышленной отраслях. Они приобретаются с опытом, во время работы на проектах.
  • Безопасность. Часто клиенты не хотят подключать свои устройства в интернет, потому что боятся взломов. Поэтому сейчас большое внимание уделяется соединению по безопасным каналам, а все прошивки, которые на них заливаются, подписываются специальными сертификатами, чтобы их невозможно было подменить. Поэтому Embedded-разработчику нужно знание криптографии: ассиметричной и симметричной, как работают аутентификация, подписи и блочное шифрование, как вообще хранить ключи шифрования на устройстве, чтобы их невозможно было украсть или подменить.

Завершу список упорством и постоянным саморазвитием. Элементная база непрерывно обновляется, как и наборы инструментов, и среды разработки — нужно изучать, что происходит в отрасли и около неё, чтобы быть «на гребне волны».

В каких направлениях можно работать?

Самые разные сферы, диапазон проектов большой. В ЕРАМ я занимался и рулевым управлением автомобиля, и кофеваркой, и зарядкой для электромобилей, которую используют в частных домах, и преобразователями интерфейсов, и сетевым ускорителем DNS запросов и многим другим. Всё зависит от специфики компании, в которой вы работаете, и доменов заказчиков. В любом случае, Embedded-разработка всегда очень интересная и разноплановая, особенно в больших компаниях, куда приходят разные клиенты.

Возможность смены профессии

Вариантов много. У нас даже шутка есть: главное требование для разработчиков встроенного ПО — не убежать в Java. �� Потому, что на Java сегодня пишутся много интересных проектов для самых разных областей. Например, в нашем департаменте Embedded, Standalone & IoT Delivery есть и Java, и Python, и Ruby, и Go, и еще много разных стеков. Что привлекает и держит меня в своей области? Возможность видеть вживую и трогать руками то, что делаешь (плату, например), а потом сразу наблюдать за результатом работы. Твой продукт не просто где-то там на сервере крутится на другой стороне планеты, а лежит у тебя на столе, светится, издает звуки и т. д.

Где учиться?

Если с нуля, то лучший вариант базы — электроника (сам так начинал). Ребята, которые закончили кафедры БГУИР, БНТУ и региональных технических университетов по специальностям промышленной электроники, автоматизации или общей электроники, имеют подходящий набор скиллов и знаний (например, понимание цифровых схем и азов программирования), чтобы стать хорошим Embedded-разработчиком. Потом им остается прокачаться в области ПО. Кстати говоря, мы так и делаем: доучиваем студентов-электронщиков, чтобы потом взять их в команду.

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

Для самостоятельного обучения из онлайн-курсов могу посоветовать Coursera и LinkedIn Learning. Там есть и про Linux, и про операционные системы, и про разработку встроенного ПО, и про криптографию:

  • IoT Foundations;
  • IoT Standards and Ecosystems;
  • C for Embedded;
  • Low-Power Wireless Networks;
  • Cryptography I

П. С. Про работу и хобби

Помимо разработки я увлекаюсь музыкой, сейчас активно учусь игре на электрогитаре. Моя работа и хобби пересекаются и дополняют друг друга, ведь электронная музыка и встроенное ПО сильно связаны. Вообще я и начинал изучать электронику со звуковой и звуковоспроизводящей электроники. Знаю, как работают микрофоны, динамики, звуковые карты, цифровые сигнальные процессоры, как создаются звуковые эффекты — это помогает мне развиваться как музыканту, видеть мир звуковоспроизведения и звукозаписи с нескольких сторон. Например, я понимаю, какие звуковые волны происходят из моего музыкального инструмента, как они распространяются, почему что-то идет не так или не работает. А различные звуковые эффекты мне представляются цифровыми фильтрами определенного рода.

Среди моих знакомых Embedded и IoT-инженеров есть много ребят с очень интересными и необычными хобби, они постоянно пробуют что-то новое. Пожалуй, это отлично поддерживает креативность и вдохновляет мыслить outside the box — советую!

Embedded-программист

Embedded-программист

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

Читайте также

Профессия «ERP-программист»

Краткое описание

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

Как узнать, подходит ли вам профессия «Embedded-программист»?

Тест на профориентацию

Разработчики встраиваемых систем – это опытные инженеры-программисты, которые проектируют аппаратную часть («железо») микросистемы и пишут коды для управления машинами и устройствами. Они специализируются на разработке программ для конкретного оборудования, используемого, например, в автомобилях, модемах, бытовой технике или сотовых устройствах. Embedded-программист участвует во всем процессе разработки встраиваемых систем – от проектирования до интеграции.

  • Мечтаешь создать свою игру?

Мечтаешь создать свою игру?
Воплоти мечту в реальность вместе с XYZ School!

ЗИМНЯЯ РАСПРОДАЖА SKILLBOX

ЗИМНЯЯ РАСПРОДАЖА SKILLBOX
Cкидки до 60% на все курсы всех направлений, а также курс в подарок (с выполнением ДЗ) при покупке!

Особенности профессии

В отличие от классических Software-программистов, Embedded-разработчики занимаются не только кодом, но и «железом»: своими скриптами они оживляют аппаратную часть. Поэтому Embedded-программист – в большей степени электронщик (примерно на 80 %), чем программист.

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

  • в домашних и промышленных роботах;
  • банкоматах;
  • бытовой технике (стиральные машины, мультиварки, телевизоры и т. д.);
  • игровых консолях, приставках;
  • измерительном оборудовании (счетчики, осциллографы, тестеры и т. д.);
  • медицинском оборудовании (томографы, тонометры, глюкометры, хирургические роботы и т. д.);
  • автомобильных компьютерах, навигаторах;
  • системах сигнализации;
  • смартфонах;
  • носимых смарт-устройствах (наушники, фитнес-браслеты и т. д.).
  • ЗИМНЯЯ РАСПРОДАЖА SKILLBOX

ЗИМНЯЯ РАСПРОДАЖА SKILLBOX
Cкидки до 60% на все курсы всех направлений, а также курс в подарок (с выполнением ДЗ) при покупке!

Новогодняя акция! Скидки до 60% и «Тайный Санта»

Новогодняя акция! Скидки до 60% и «Тайный Санта»

Всеми любимый «Тайный Санта» здесь: те, кто приобрел у нас курс, получат курс в подарок и смогут подарить мини-курс своему другу.

Яндекс.Практикум, скидки 20%

Яндекс.Практикум, скидки 20%
Приходите учиться любой профессии со скидкой 20% в честь сами знаете чего!

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

В типичные обязанности Embedded-программиста входит:

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

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

Плюсы и минусы профессии

Плюсы:

  1. Высокая заработная плата.
  2. Трудоустройство всегда официальное.
  3. Много вакантных мест.
  4. Возможно трудоустройство за рубежом.
  5. Карьерный рост.
  6. Посещение семинаров, лекций, консультаций от производителей оборудования, что помогает достичь еще больших успехов в работе.

Минусы:

  1. Много требований.
  2. Специфические технические знания.
  3. Необходим опыт работы в разработке встроенных систем не менее 3 лет.
  4. Частые командировки.

Читайте также

Профессия «Системный программист»

Важные личные качества

  1. Коммуникабельность.
  2. Аналитический склад ума.
  3. Отличное логическое мышление.
  4. Склонность к точным наукам.
  5. Целеустремленность.
  6. Активность.
  7. Самоорганизация.
  8. Ответственность.
  9. Способность работать в команде.

Embedded-программист должен иметь желание постоянно обучаться.

Обучение на Embedded-программиста

Разработчик встриваемых систем – это инженер, поэтому без высшего образования в этой профессии не обойтись.

Для учебы в вузе подойдут несколько направлений и профилей:

  • «Информатика и вычислительная техника» 09.03.01. Профили:
    • «Программные и аппаратные средства встраиваемых вычислительных систем» (КТИ ЮРГПУ (НПИ) им. Платова в Каменске-Шахтинском);
    • «Компьютерные науки и инженерия» (МФТИ);
    • «Киберфизические системы» (МИРЭА, Московский политех).
    • «Информационные технологии в проектировании встраиваемых систем управления технологическими процессами» (РГУ им. Косыгина, МГОТУ).
    • «Программирование микропроцессорной техники» (ТУСУР, Тюмень).
    • «Проектирование и программирование систем Интернета вещей» (МГТУ им. Носова);
    • «Программирование и электроника информационных систем» (МГТУ им. Носова, БашГУ).
    • «Информационные технологии проектирования электронных средств» (СевГУ);
    • «Инжиниринг электронных средств и радиоэлектронных систем» (РГАТУ им. Соловьева);
    • «Проектирование и технология электронно-вычислительных средств» (МГТУ им. Баумана, МАИ, ГУАП, ТУСУР, РГРТУ, Волгатех).
    • «Мобильные робототехнические комплексы и системы» (Томский политех).

    Есть в вузах и узкоспециализированные программы подготовки Embedded-программистов для определенных отраслей, например в МАИ – «Интегрированные системы летательных аппаратов» 24.05.05 с профилем «Интегрированные интеллектуальные робототехнические комплексы».

    Необходимые знания для embedded developer’a?

    Доброго времени суток. Перейду сразу к сути: интерсует исчерпывающий список направлений для обучения программированию микроконтроллеров (прямо попредметно, включая то какие языки программирования следует освоить). Начать хочу с самых ранних азов.
    Интересуют так же такие вещи как: стоит ли учится писать сценарии программ для Arduino, сможет ли это помочь абстрагироваться в выбранной сфере разработки и получить те самые азы?
    Нужно ли учиться паять и разбираться в микросхемах, теристорах, тестерах и прочем железе что бы работать embedded программистом?
    Нужны ли знания программирования под линукс? Читая вакансии не один раз встречал требования знания работы с линукс.

    Зачем это все: хочу обучится программированию для автомобилей. По диплому выпущусь на специальность связанную с автомобилями, до этого самостоятельно изучал джаваскрипт, был интересен вэб, но к 20 годам захотелось пойти в более серьезную среду, чем заниматься сайтошлепством где то на галере.

    • Вопрос задан более трёх лет назад
    • 31957 просмотров

    6 комментариев

    Средний 6 комментариев

    myjcom

    Что именно имеете ввиду под программированием для автомобилей? Это очень обширная тема.
    Сергей Сахно @Punk_Joker

    Кстати да, Роман прав. Все зависит от того, какие системы автомобиля имеются ввиду. Если ек критически важные, тобишь информационная панель и мультимедиа, то там линукс или/и андроид, может быть даже гипервизор, виртуализация и тд. А вот более критичные, там уже более низкоуровневое, и совсем другие другие требования к написанному ПО.

    voiseble @voiseble Автор вопроса

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

    Сергей Сахно @Punk_Joker

    voiseble, все это очень разные системы. Особенно то что влияет непосредственно на управление и «бортовой компьютер»

    myjcom

    voiseble, сейчас беспилотное управление в тренде
    вот например https://smartcar.starline.ru всех приглашают в команду.

    spoiler
    На гикпикнике в С-Пб я на нем катался)

    Если интересно — напишите им, расскажите о себе и спросите что нужно, что бы к ним присоединиться.
    Ссылки там есть.

    forspamonly2 @forspamonly2
    по наблюдениям со стороны, основное занятие эмбеддед девелоперов — мигать светодиодиком.
    Решения вопроса 1
    Embedded Software Developer

    Оффтоп: денег в вебдеве как правило больше, особенно в РФ (но глобально — тоже). Если это не смущает, читайте дальше =)

    С++, Linux, Verilog — это все хорошо, но я бы занимался этим после того, как поработаете какое-то время, и поймете, куда хотите расти.

    • Язык C. Это рабочая лошадка firmware, без него никуда, зато остальные языки — совершенно опциональны.
    • Какой-нибудь простой ассемблер (сегодня я бы сказал, армовский). Не обязательно быть мастером, но очень помогает понять, как работает процессор в принципе.
    • Скучная школьная теория: архитектура ЭВМ, устройство операционных систем, конечные автоматы — все это для эмбеддера куда более актуально, чем для веб-девелопера
    • Электроника. Необязательно уметь спроектировать шестислойную плату с учетом EMC, но читать схемы — это важно. А также способность потыкать плату тестером или осциллографом (в большинстве случаев ошибка все равно в софте, но успокаивает).
    • Стандартная периферия и интерфейсы: UART, I2C, SPI, DAC/ADC. Это до какой-то степени можно выучить и на ардуине, но лучше освоиться с настоящим железом
    • Умение читать документацию на железо. Должно прийти при освоении предыдущих пунктов, если не ограничиваться копипастом из туториалов.

    Если освоите до какой-то степени (главное — не увлекаться) этот набор, то можете работать в firmware. А дальше уже можете развиваться куда душа лежит, и где будут карьерные возможности — Linux, C++, электроника, DSP, whatnot.

    Ответ написан более трёх лет назад
    Нравится 6 3 комментария

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

    Я всего лишь планирую входить в мир Embedded, первый курс университета. Для меня мотивацией принятия такого решения послужил именно тот факт, что разработчики в этой области получают больше, чем веб-программисты. Да и работа по сложнее будет, в моем понимании. Сама область очень загадочная для простого обывателя.
    С вашей колокольни, скажите, это ведь правда, что Embedded-разработчики все же получают больше? Какого пика зарплаты или около того можно достичь при должных знаниях и умениях? (Берем за границей, естественно)

    Epikano, добрый день. Спустя год вы нашли ответ на свой вопрос?

    Алексей Белан Извините, пропустил оригинальный вопрос. Не знаю, что ответил бы Epikano , но у меня нет ощущения, что embedded девелоперы получают больше. Наоборот, common wisdom — что embedded — одна из самых низкооплачиваемых областей в софте, наряду с геймдевом. Веб девелоперы же наоборот, ближе к верхней части спектра.

    Я лично сейчас в трехзначной области (Германия), но это пока не слишком типично для embedded, может с инфляцией это изменится.

    Ответы на вопрос 6
    LampTester @LampTester

    Начать хочу с самых ранних азов.

    Правильно. Если хотите стать профессионалом, начинать надо с базовой теории. «Нет царских путей в геометрию».

    Интересуют так же такие вещи как: стоит ли учится писать сценарии программ для Arduino, сможет ли это помочь абстрагироваться в выбранной сфере разработки и получить те самые азы?

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

    Нужно ли учиться паять и разбираться в микросхемах, теристорах, тестерах и прочем железе что бы работать embedded программистом?

    Да, обязательно. Хороший embedded-программист сам должен быть способен разрабатывать железо. Более того, в не слишком сложных проектах (или в очень критичных по оптимальности решения) разработчик железа и программист — один и тот же человек.

    Вообще, embedded-программист — в большей степени электронщик (где-то на 80%, или даже больше), чем программист.

    Нужны ли знания программирования под линукс? Читая вакансии не один раз встречал требования знания работы с линукс.

    Опционально, будет плюсом.

    Что касается процесса обучения, то он примерно идентичен процессу обучения инженера-электронщика.

    1. Полный курс общей физики. Обязательно. Без него никуда, это база всего. После него отпадают 98% элементарных вопросов и появляется стройная картина мира. Математика — без фанатизма, но в достаточном объеме, чтобы понимать курс физики.
    2. Базовый курс конкретно электроники. Здесь можно посмотреть в сторону классики — Горовиц и Хилл первое, что приходит на ум.
    3. Программирование. Без фанатизма. Ночами штудировать численные методы и заучивать классичесские алгоритмы не надо (хотя представлять, как работает, например, метод Рунге-Кутта будет полезно), но выработать навыки алгоритмизации требуется обязательно. На эту тему полно туториалов, гораздо больше, чем по электронике.
    4. Обработка сигнала тоже нужна. В написании программ для контроллеров всякие цифровые фильтры встречаются очень часто (особенно при обработке сигнала с датчиков), надо бы представлять, как работают методы ЦОС.
    5. Специальные вопросы. Архитектура контроллеров, стандартные интерфейсы и т.п. Это уже по необходимости.

    Кроме этого — английский в достаточном объеме, чтобы понимать техническую литературу и общаться на среднем уровне. Простой тест — свободное чтение документации и ресурсов типа hackaday.

    Но самое главное — желание. Только оно может обеспечить достаточный объем практики.

    Кто такой embedded-программист (разработчик) и как им стать

    Embedded-разработчик относится к категории IT-специалистов, однако, он не пишет привычный нам софт, мобильные приложения или серверы. Его задача создавать ПО, которое скрыто от глаз пользователя, но без которого не может работать ни одно электронное устройство. Кто же такой embedded-разработчик и как им стать?

    Что такое embedded ПО?

    Embedded переводится с английского языка как «встроенное» и относится к программному обеспечению, которое управляет работой того или иного гаджета. Подобно встраиваемой мебели или технике, такое ПО поставляется уже в комплекте с устройством, и покупатель, как правило, с ним вообще никак не взаимодействует.

    Встроенное ПО бывает в массе различных вещей, например, в беспроводных наушниках, веб-камерах, звукоусилителях, «умных» бытовых приборах, автомобилях — одним словом, везде, где есть управляющие платы (микроконтроллеры). Для них нужен специальный программный код, благодаря которому они будут выполнять свои задачи. Например, в автомобиле есть датчики, контролирующие давление масла, подачу топлива или систему ABS. Соответственно, им требуются цифровые платы управления, которые бы адекватно считывали показания и выдавали их на приборную панель, а значит и специальный софт, умеющий их интерпретировать. В наши дни embedded ПО не ограничивается только локальными устройствами, поскольку есть множество облачных сервисов, благодаря которым устройства умеют обмениваться данными между собой и хранить нужную информацию. Эта система называется «интернетом вещей» (Internet of Things) и требует достаточно продвинутого софта.

    Чем конкретно занимается embedded-разработчик?

    1. Приемка платы или микроконтроллера в работу, проверка компонентов на дефекты и скрытый брак;
    2. Написание кода (прошивки устройства);
    3. Отладка, проверка на работоспособность и устранение ошибок;
    4. Сопровождение написания ПО для устройства и помощь в интеграции;
    5. Консультирование коллег-программистов;
    6. Составление смет и технических заданий по проекту;
    7. Анализ работы устройства и оптимизация.

    Как выучиться на embedded-разработчика

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

    Специально embedded-программистов в России не учат, но ими часто становятся выпускники радиотехнических и математических вузов. Примерный перечень специальностей:

    1. Информатика и вычислительная техника;
    2. Управление в технических системах;
    3. Электроника, радиотехника и системы связи;
    4. Конструирование и технология электронных средств;
    5. Робототехника.

    Требования к знаниям embedded-разработчика

    Учиться в вузе требуется 4 года по программе бакалавриата и нередко, чтобы добрать знаний, выпускники проходят ещё и магистратуру. Тем не менее на производстве ценятся специалисты с реальными знаниями и умениями, поэтому, как уже было сказано, embedded-разработчику нужно основательно освоить языки программирования.

    Примерный перечень знаний, необходимых специалисту:

    1. Знание объектно-ориентированных языков программирования (ООП);
    2. Знание C++, C#, Arduino, Python и других языков;
    3. Архитектура ЭВМ, устройство ПК и специализированных устройств;
    4. Периферия и интерфейсы UART, I2C, SPI, DAC/ADC;
    5. Знание работы промышленных протоколов передачи данных, таких как EtherCAT, CANopen;
    6. Умение читать техническую документацию и разбираться в спецификациях железа;
    7. Владение техническим английским (уровень не ниже Upper Intermediate).

    Вакансии для embedded-разработчиков в России

    В России намечается бум в отрасли микроэлектроники, поэтому потребность в инженерах и разработчиках специализированного ПО только возрастает. Не удивительно, что вакансий для embedded-разработчиков хватает, несмотря на то, что это достаточно узкая профессия, требующая высокой квалификации.

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

    Зарплаты embedded-разработчиков в 2022 году

    Учитывая сложность и востребованность профессии, заработок embedded-разработчиков весьма высок. Среднее предложение по зарплате начинается от 180000 рублей и достигает 250000 рублей в месяц. В некоторых компаниях специалистам готовы платить до 300000 рублей в месяц, однако, чаще это предложение для senior разработчиков, то есть руководителей команды разработки.

    Плюсы и минусы профессии embedded-разработчика

    • Востребованность;
    • Высокая зарплата;
    • Официальное трудоустройство;
    • Возможность работы на крупные международные компании;
    • Карьерные перспективы.
    • Высокие требования к техническим знаниями и навыкам;
    • Длительное обучение;
    • Требуется опыт работы при трудоустройстве;
    • Небольшое количество мест учебы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *