Много хороших ответов уже на этот вопрос.Я думаю, вам нужно решить, что означает слово встроенное программное обеспечение для вас и / или что вы хотите, чтобы оно значило.Может быть, ваше определение на самом деле не вписывается.Мое определение означает отсутствие операционной системы.И это, вероятно, расстроит многих разработчиков встроенного программного обеспечения, но опытные, такие как уже отвечавшие, наверняка поймут наши различия в определении и почему.Я думаю, они бы назвали меня специалистом по микроконтроллерам, и это, безусловно, правда, но я трачу большую часть своего времени на высокоскоростные процессоры с объемами памяти и ROM, I / O, сетью и т. Д. Я парень, который приносит оборудованиев первый раз, устраняет ошибки на платах и чипах, а затем передает их тем, кого большинство назвало бы разработчиками встроенного программного обеспечения.Я инженер-электрик по образованию и инженер-программист по профессии, поэтому я занимаюсь линией.
Вполне возможно, и нередко вы можете оставаться во встроенном мире C / C ++, никогда не читая таблицы данных или схемы, все, что вам нужно сделать, это вызвать API, созданные кем-то другим.Существует большой и все более расширяющийся рынок для этого, как того, что раньше было (мое определение) истинно встроенным или встроенным на основе rtos (что часто называется API-вызовами, а не полным опытом) для этой встроенной в Linux вещи, которая взорвалась.В этом нет ничего плохого, это довольно близко к опыту разработки кода для настольного компьютера, но вам нужно немного сложнее найти надежный код, так как он может быть основан на flash / rom и может не захотеть иметь еженедельный /ежемесячные обновления для подразделений на местах.В идеале никогда не обновлять, но это также становится все более редким.
Внедрение на основе Linux Api на основе rtos / внедряется и может по-прежнему отличаться от того, что я называю прикладным программированием.Возможно, вам все еще захочется или вам нужно прочитать таблицу данных или схему, вам все равно может понадобиться знать ассемблер для целевой платформы.
Мне нравятся все ответы на этот вопрос, которые я до сих пор, думаю, мы изо всех сил пытаемся понятьто, что вы действительно спрашиваете или что вы действительно ищете в жизни, добавьте к тому, что нам нравится в нашем выборе, и вы получите эту смесь ответов.
Я вижу несколько групп, несомненно, есть старое доброедействительно встроенный микроконтроллер, но даже это превращается в библиотеки и API, а не в металл, посмотрите на сообщество Arduino, Stellaris и кучу других.Я провожу много времени за сборкой и тестированием платы, вам нужно знать достаточно информации обо всем аппаратном обеспечении системы, регистрах, схемах и т. Д. Необходимо знать достаточно ассемблера как для загрузки устройства из перезагрузки, так и для отладки.что-то вроде разборки дампов и поиска признаков жизни во входах / выходах или в шинах памяти и т. д. Если вам повезет, вы также приступите к разработке микросхемы и увидите, как выполняются инструкции в симуляции.Следующая группа - загрузчик / операционная система.Аппаратное обеспечение работает достаточно хорошо на этом этапе, чип загружается, память работает, ром есть.Эта команда пишет рабочий загрузочный код и получает продукт от включения во встроенную систему, rtos, linux, vxworks, bsd, что угодно.это талант сам по себе, набор инструментов, корневая файловая система и т. д. Следующая группа - это массы, инженеры-программисты, которые пишут приложения для этой операционной системы, теперь некоторые будут читать таблицы данных, схемы и т. д., писать драйверы устройств.или apis для использования другими, и наивысшим уровнем может быть кто-то, кто занимается программированием на уровне приложений, вызовами api и sdk, некоторые из которых могут быть разработаны компанией, некоторые могут быть приобретены или другие.
Итог: Абсолютно, есть встроенные специальности.Ты собираешься все знать?НЕТ, может быть 20 лет назад, скорее всего 40 лет назад, а не сегодня поле слишком большое и широкое.Каковы лучшие вещи, которые вы можете сделать для себя в этой области?Изучите ассемблер для нескольких различных наборов инструкций.Популярные, определенно arm, thumb версия arm, может быть mips или powerpc или другие.Если вы склоняетесь к микроконтроллерам, изучите (arm, thumb,) avr, pic (blah), msp430, возможно, 8051. Прочитайте некоторые таблицы данных, микроконтроллеры могут научить вас этому, даже если это не та область, которую вы хотите, тонны разработки менее $ 50/ eval board (например, sparkfun.com), которые предоставляют таблицы данных, простые схемы, ассемблер, C и т. д. Если вы - специалист по программному обеспечению, научитесь говорить с аппаратными специалистами, специалисты по программному и аппаратному обеспечению не говорят на одном языке, если выВы можете избегать выбора сторон, сохранять нейтралитет и говорить на обоих языках, которые помогут вам, вашей карьере и тому, с кем и с кем вы работаете.Несмотря на любые ваши личные взгляды на порядковый номер, битовую или байтовую нумерацию, вам, скорее всего, придется иметь дело с некоторыми извращенными вещами и говорить с клиентами / коллегами, которые могут иметь дело только с восьмеричным (да, действительно) или только с мсбитомвсе, что ноль.Я рекомендую посмотреть в Verilog и, возможно, VHDL.По крайней мере, в читабельном смысле, не обязательно создавать его с нуля.Если вы уже можете программировать и знаете C, это очень удобно для чтения.В зависимости от работы и сотрудников, verilog и схема могут быть единственной документацией, которую вы используете для написания своего программного обеспечения.Если вы не можете сделать это, они могут заменить вас кем-то, кто может (вместо того, чтобы заставить аппаратчиков документировать свои вещи).