Есть ли во встроенных полях специальности

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

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

6
задан Mike DeSimone 18 July 2010 в 14:24
поделиться

6 ответов

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

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

  • Ага. Вам нужно знать C и C++. Но некоторые люди также специализируются на ассемблере. Это специалисты, которых вызывают для переноса RTOS на новый чип или для выжимания каждой капли производительности из сильно ограниченной встроенной системы (обычно для экономии $$ на единицу продукции).
    Этот человек, вероятно, не так уж и нужен в наши дни... но... все же время от времени становится критически важным.

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

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

Специалист по ЦОС

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

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

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

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

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

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

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

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

Веселитесь и удачи!

12
ответ дан 8 December 2019 в 03:51
поделиться

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

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

6
ответ дан 8 December 2019 в 03:51
поделиться

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

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

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

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

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

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

2
ответ дан 8 December 2019 в 03:51
поделиться

Уже есть много хороших ответов на этот вопрос. Я думаю, вам нужно решить, что означает для вас слово «встроенное программное обеспечение» и / или что вы хотите, чтобы оно значило. Может быть, ваше определение на самом деле не встроено. Мое определение означает отсутствие операционной системы. И это, вероятно, расстроит многих инженеров по встроенному ПО, но опытные, вроде тех, кто уже ответил, наверняка поймут наши вариации в определении и почему. Я думаю, они назвали бы меня специалистом по микроконтроллерам, и это, безусловно, правда, но я трачу большую часть своего времени на полноскоростные процессоры с большими объемами памяти, ПЗУ и ввода-вывода, сетью и т. Д. Я парень, который приносит оборудование в первый раз, вымывает ошибки платы и микросхемы, а затем передает это тому, что многие называют инженерами по встроенному программному обеспечению. Я инженер-электрик по образованию и инженер-программист по профессии, так что я придерживаюсь этой линии.

Вполне возможно, и нередко, что вы можете остаться во встроенном мире C / C ++, вам никогда не придется читать таблицу или схему, все, что вам нужно сделать, это вызвать api, созданный кем-то другим. Существует большой и все более крупный рынок для этого, как того, что раньше было (мое определение) истинно встроенным или встроенным на основе rtos (что часто является вызовом api, а не полным опытом) для этой встроенной вещи Linux, которая взорвалась. В этом нет ничего плохого, это довольно близко к опыту разработки кода для настольного компьютера, но вам нужно немного усерднее попытаться получить надежный код, поскольку он может быть основан на флэш-памяти / ROM, и они могут не захотеть иметь еженедельный / ежемесячные обновления единиц в полевых условиях.В идеале никогда не обновлять, но это тоже становится все реже.

Встроенный интерфейс на основе rtos / embedded linux api может отличаться от того, что я называю прикладным программированием. Вы все еще можете захотеть или захотите прочитать таблицу или схему, вам все равно может понадобиться знать ассемблер для целевой платформы.

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

Я вижу несколько групп, конечно, есть старые добрые встраиваемые микроконтроллеры, но даже они превращаются в библиотеки и API, а не на металл, посмотрите на сообщество arduino, stellaris и множество других. Я провожу много времени, поднимая и тестируя плату, вы должны много знать обо всем аппаратном обеспечении системы, регистрах, схеме и т. Д. Должен знать достаточно ассемблера как для загрузки системы после сброса, так и для отладки. что-то, глядя на разборные дампы и ища признаки жизни в вводе-выводе или на шинах памяти и т. д. Если повезет, вы также сможете поработать над дизайном микросхемы и сможете наблюдать за выполнением ваших инструкций в симуляции. Следующая группа - загрузчик / операционная система. Аппаратное обеспечение на данный момент работает достаточно хорошо, чип загружается, память, похоже, работает, ROM есть. Эта команда пишет рабочий загрузочный код и загружает продукт при включении во встроенную систему, rtos, linux, vxworks, bsd и т. Д. это талант сам по себе, набор инструментов, корневая файловая система и т. д.Следующая группа - это массы, инженеры-программисты, которые пишут приложения для этой операционной системы, теперь некоторые будут читать таблицы данных, схемы и т. Д., Писать драйверы устройств или API для использования другими, а на самом высоком уровне может быть кто-то, кто все программирование на уровне приложений, вызовы api и sdk, некоторые из которых могут быть разработаны компанией, некоторые могут быть куплены или другие.

Итог: Совершенно очевидно, что во встроенных есть особенности. Вы собираетесь все знать? НЕТ, может быть, 20 лет назад, скорее всего, 40 лет назад, не сегодня эта область слишком велика и широка. Что лучше всего вы можете сделать для себя в этой области? Изучите ассемблер для нескольких разных наборов инструкций. Популярные, определенно рука, версия руки для большого пальца, возможно, mips, powerpc или другие. Если вы склоняетесь к микроконтроллерам, изучите (arm, thumb,) avr, pic (blah), msp430, может быть, 8051. Прочтите некоторые спецификации, микроконтроллеры могут научить вас этому, даже если это не та область, которую вы хотите, тонны разработки стоимостью менее 50 долларов / eval доски (например, sparkfun.com), которые предоставляют таблицы данных, простые схемы, ассемблер, C и т. д. может избегать выбора сторон и оставаться нейтральным и говорить на обоих языках, на которых вы поможете себе, своей карьере и тем, на кого вы работаете и с кем работаете.Несмотря на ваши личные взгляды на порядок байтов, бит или байтовую нумерацию, вам, вероятно, придется иметь дело с некоторыми неприятными вещами и разговаривать с клиентами / коллегами, которые могут иметь дело только с восьмеричным числом (да, действительно) или иметь дело только с msbit все равно нулю. Я рекомендую посмотреть verilog и, возможно, vhdl. По крайней мере, в удобочитаемом смысле, не обязательно создавать его с нуля. Если вы уже умеете программировать и знаете C, он очень удобочитаем.В зависимости от работы и сотрудников verilog и схема могут быть единственной документацией, которую вы используете для написания программного обеспечения. Если вы не можете этого сделать, они могут заменить вас кем-то, кто сможет (вместо того, чтобы заставить специалистов по аппаратному обеспечению документировать свои данные).

2
ответ дан 8 December 2019 в 03:51
поделиться

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

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

2
ответ дан 8 December 2019 в 03:51
поделиться

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

3
ответ дан 8 December 2019 в 03:51
поделиться