Каковы предпосылки для изучения программирования встроенных систем? [закрытый]

13
задан Philip Conrad 22 January 2013 в 23:17
поделиться

10 ответов

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

C используется в основном, но языки более высокого уровня постепенно проникают внутрь.

9
ответ дан 1 December 2019 в 19:49
поделиться

Вы захотите хорошо освоиться с C и хорошо разбираться в ассемблере. В системах / встроенных обычно вы работаете с небольшим объемом памяти и более медленными процессорами, поэтому вам нужно понимать, как разумно использовать ограниченные ресурсы.

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

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

В любом случае, получайте удовольствие и счастливого кодирования!

1
ответ дан 1 December 2019 в 19:49
поделиться

VHDL, Verilog и FPGA также являются серьезными игроками на этой арене. Имея хороший опыт в CS, много приверженности и, возможно, немного MIT OpenCourseware, вы сможете сделать что-то хорошее. Хорошее знание архитектур ЦП и некоторых ASM тоже пригодится.

4
ответ дан 1 December 2019 в 19:49
поделиться

Вы должны принять ограничения и уметь работать с ними:

  • Скорость процессора
  • дефицит памяти
  • отсутствие сетевых средств
  • пользовательские компиляторы и ОС
  • пользовательские материнские платы и драйверы
  • отладка с помощью логического анализатора
  • странные практики кодирования и тестирования
  • ...

Наградой является глубокое понимание того, что происходит.

4
ответ дан 1 December 2019 в 19:49
поделиться

Я пришел в эту сферу, не имея ни малейшего представления о том, как это делается, будучи первокурсником, и уволился через 1,5 года. Поэтому то, что я говорю, может быть немного ржавым и определенно не полным.

Язык, который мы использовали, был C. Но в то время дисковое пространство составляло 4 МБ, а память - 8 МБ на устройствах, для которых мы разрабатывали, и я знаю, что C использовался из-за того, что его библиотеки занимали мало места. Очевидно, производительность тоже была критерием".

Что касается основ электроники, то для должности начального уровня практически ничего не нужно. Со временем вы приобретете необходимую информацию и опыт.

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

2
ответ дан 1 December 2019 в 19:49
поделиться

Встраиваемые системы обычно программируются на C, хотя есть системы на концах диапазона, которые используют ассемблер, когда пространство кода или время действительно ограничены (или нет достойного компилятора C), а на другом конце - C++ вплоть до .NET compact. Это зависит от того, что вы подразумеваете под встраиваемыми системами, они варьируются от действительно маленьких микроконтроллеров с несколькими сотнями байт оперативной памяти и программного пространства до устройств типа смартфонов, работающих с полной многозадачной операционной системой и пользовательским интерфейсом.

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

Начните с чтения некоторых ссылок здесь и embedded.com

2
ответ дан 1 December 2019 в 19:49
поделиться

Языки: C, Ассемблер, Обработка, Базовый и многие другие, все зависит от того, какую платформу вы используете, и что доступно.

Вы можете получить более конкретную информацию, если зададите тот же вопрос на ChipHacker или Electronics Exchange , которые являются сайтами в стиле обмена стеками (например, этот), но ориентированы на электронику и " физические вычисления ".

1
ответ дан 1 December 2019 в 19:49
поделиться

Изучите C. Научитесь применять C ко всем проблемам. Другие языки могут подождать. В конце концов, сборка поможет, и ни один программист не должен оставаться без языка сценариев.

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

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

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

0
ответ дан 1 December 2019 в 19:49
поделиться

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

2
ответ дан 1 December 2019 в 19:49
поделиться

Как отмечали другие, встроенная система может означать множество вещей. В моем мире (аэрокосмическая и оборонная промышленность) мы работаем с операционными системами реального времени (VxWorks и Integrity - самые крупные игроки) и иногда с Linux. Мы программируем в основном на C, хотя C++ также используется, если проект решил использовать объектно-ориентированное программирование и моделирование.

Итак, что касается предварительных требований, то C - это точно. Вам действительно нужно выучить весь язык C, включая операции с битами, работу с шестнадцатеричными значениями, указатели, все низкоуровневые вещи. Ассемблер тоже, но сейчас я использую его только для отладки самых сложных вещей. Вам нужно знать достаточно, чтобы читать и понимать.

Я думаю, что An Embedded Software Primer - это отличное начало, чтобы изменить ваше представление о встроенном ПО. Обработка прерываний, проблемы реального времени и т.д...

Как упомянул Микки, иногда у вас даже нет ОС. В таких случаях обычно пишут свой собственный диспетчер задач, но это обычно не то, с чего стоит начинать новичку. Удачи.

1
ответ дан 1 December 2019 в 19:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: