Есть ли специальности во встроенных полях - PullRequest
6 голосов
/ 18 июля 2010

Я начал изучать встраиваемые и 2 основных языка (с и с ++).Но я начинаю понимать, что, несмотря на простые требования к обучению, встроенный - это целый мир сам по себе.И как только вы разберетесь с реальными проектами, вы начнете понимать, что вам нужно изучить больше «вещей», специфичных для аппаратного обеспечения, используемого на устройстве, с которым вы работаете.Это проблема, которая редко возникает в проектах только для программного обеспечения, над которыми я сейчас работаю.

Можно ли разбить это поле на подполя?Я думаю, что те, кто имеет опыт работы в этой области, возможно, заметили, что некоторые типы проектов отличаются от других типов, что привело их, возможно, к появлению своих собственных категорий.Например, когда вы сталкиваетесь с проектом, вы можете подумать, что это «за пределами вашего поля»?Это случилось с вами?и если да, то как бы вы назвали свое подполе или с какими другими подполями вы столкнулись?

Ответы [ 6 ]

12 голосов
/ 19 июля 2010

Вот несколько под-специальностей, о которых я могу подумать:

Специалист по языку ассемблера

  • Да.Вам нужно знать C и C ++.Но некоторые люди также специализируются на сборке.Это эксперты, которые призваны перенести ОСРВ на новый чип или выжать каждую каплю производительности из встроенной системы с высокими ограничениями (обычно для экономии $$ на единицу).
    Этот человек, вероятно, не нужен, чтобыМногое в эти дни ... но ... все же время от времени все еще критично.

Специалист по драйверам устройств

  • комфортная жизнь между реальной ОС или ОСРВ и частьюаппаратное обеспечение.Этот человек обычно знаком с лабораторными инструментами, такими как о-прицелы или логические анализаторы, думая в «шестнадцатеричном» формате и понимая критическую природу хронометрирования с HW.Этот человек для развлечения читает листы данных по ночам, и ему очень нравится создавать идеальный драйвер портирования для какого-то нового устройства.

Специалист DSP

  • Цифровая обработка сигналов, кажется,быть его собственной специализацией встроенного, хотя, возможно, инженер-программист может не знать точных деталей алгоритма и может только реализовывать то, что требует системный или электротехнический инженер.Однако понимание теории частоты дискретизации, БПФ и некоторых основополагающих элементов из «DSP» удобно и, возможно, необходимо.И все же, как правило, вы должны хорошо знать время и ограничения целевого оборудования (частота дискретизации, шум, биты на выборку и т. Д.).

Специалист по теории управления

  • Возможнота же проблема, что и с DSP: системный инженер или инженер-электрик может предоставить подробные спецификации.Но, опять же, было бы здорово познакомиться с различными двигателями, датчиками и другими контроллерами, управляемыми микроконтроллером.Добавьте к сюжету Боде, некоторые преобразования Лапласа или два и более высокие математические навыки ... которые не могли бы причинить слишком много вреда!

Специалист по сетевым технологиям

  • в основном то же самоекак мир ПК "сеть".Многие встроенные устройства в настоящее время добавляют функции сетевого подключения.Разъемы TCP / IP, http и т. Д. Полезно знать и понимать, как использовать устройство с ограниченными ресурсами.Добавьте к этому USB и Bluetooth.

Специалист по пользовательскому интерфейсу

  • Все больше и больше встроенных устройств включают 2D-графику, а теперь еще больше включают 3D-графику благодаря влиянию iPhoneи т. д. Даже если по другим стандартам встроенных устройств это все еще "жирные" системы, они все еще ограничены.Просто прочитайте немного в Руководстве по разработке Android, и вы поймете, что вы все равно должны учитывать скорость отклика, производительность и т. Д. Даже в дорогих мобильных телефонах.http://developer.android.com/guide/practices/design/performance.html

И тогда, конечно, каждая отрасль является специализацией для себя.Бытовая электроника, военная техника, авионика, робототехника, промышленные машины, медицинские приборы и т. Д. *

Удачи и удачи!

6 голосов
/ 18 июля 2010

Да, конечно, есть несколько подполей.Я не думаю, что смогу перечислить их все из головы, но, как я вижу, есть по крайней мере 3 больших подразделения, и оттуда они далее подразделяются.Есть микроконтроллеры, микропроцессоры и песочницы / виртуальные машины.Например, использование 16-битного микроконтроллера в проводном подключении было бы примером первого, телевизионная приставка, как TiVo, была бы примером второго, а iPhone и Android - последним.

Микроконтроллеры очень ограничены и обычно даже не могут быть запрограммированы на C ++.У большинства из них либо не работает ОС, либо, что самое дорогое, установлена ​​ОСРВ.Телевизионные приставки и любые чипы ARM / MIPS / SuperH4 / Broadcom во многом похожи на ПК, так как в них работает дистрибутив linux, и вы можете найти большинство из тех же возможностей, что и на ПК, и если сможете,Найти его, кросс-компиляция к нему, как правило, просто.Парни в песочнице, ну, в песочнице;так что это именно то, что нужно, обычно SDK изолирует вас от аппаратного обеспечения, и вы не получаете «полного встраивания».

3 голосов
/ 18 июля 2010

Конечно, например, во встроенном мире используется много операционных систем.Работа со встроенным Linux сильно отличается от работы с пустым микроконтроллером.

2 голосов
/ 19 июля 2010

Много хороших ответов уже на этот вопрос.Я думаю, вам нужно решить, что означает слово встроенное программное обеспечение для вас и / или что вы хотите, чтобы оно значило.Может быть, ваше определение на самом деле не вписывается.Мое определение означает отсутствие операционной системы.И это, вероятно, расстроит многих разработчиков встроенного программного обеспечения, но опытные, такие как уже отвечавшие, наверняка поймут наши различия в определении и почему.Я думаю, они бы назвали меня специалистом по микроконтроллерам, и это, безусловно, правда, но я трачу большую часть своего времени на высокоскоростные процессоры с объемами памяти и 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 и схема могут быть единственной документацией, которую вы используете для написания своего программного обеспечения.Если вы не можете сделать это, они могут заменить вас кем-то, кто может (вместо того, чтобы заставить аппаратчиков документировать свои вещи).

2 голосов
/ 18 июля 2010

Я работаю над встроенным linux на мобильных устройствах, и это сильно отличается от полнофункционального образа Ubuntu, где я пишу свой код и кросс-компилирую его для мобильного устройства.

Во-первых, встроенная система урезана для соответствия самым строгим требованиям устройства, что очень сильно отличается от традиционной настольной операционной системы, где вы можете иметь столько функций / библиотек и т. Д.

Ограничения памяти также являются основной частью встроенной системы. Следовательно, все программы / приложения должны быть написаны по порядку, чтобы соответствовать архитектуре. Это не может быть большой проблемой в традиционной системе.

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

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

PS: Возможно, я плохо разбираюсь в категориях, чего и требует этот вопрос, однако это мой вклад во встроенные системы.

2 голосов
/ 18 июля 2010

«Внедрение обучения» звучит для меня невозможно. Я занимаюсь работой на безголовых компьютерах Linux, управляющих крупной техникой - которую можно назвать встроенной (но это не сильно отличается от программирования на любом другом компьютере, за исключением нескольких аппаратных интерфейсов). Это полностью отличается от телефона, и полностью отличается от кондиционера или системы домашней автоматизации.

Системы управления и мобильные устройства - это две категории «встроенных», но я уверен, что их гораздо больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...