Каковы предпосылки для обучения программированию встроенных систем?
Я окончил факультет вычислительной техники. У нас были некоторые базовые курсы электроники в Digital Signal Processing, Information Theory и т.д., Но мое основное поле - программирование.
Тем не менее, я искал, чтобы попасть в программирование встроенных систем, и я не знаю, как это делается. Однако я очень заинтересован в этом.
Мои вопросы:
- Какие языки используются для программирования встроенных систем?
- Смогу ли я научиться без каких-либо оснований в электронике?
- Любые другие предпосылки, которые я должен знать?
Ответы
Ответ 1
Без сомнения, необходим опыт или, по крайней мере, значительное понимание цифровой электроники и компьютерной инженерии низкого уровня. Вы должны будете иметь возможность читать описания устройств и понимать их. Области, мультиметры, логические анализаторы и т.д. Являются инструментами торговли.
C используется в основном, но языки более высокого уровня медленно пробираются.
Ответ 2
Начало работы в Embedded Systems - сложная задача сама по себе, потому что это очень обширное поле с множеством опций в аппаратном и программном обеспечении.
Какие языки используются для программирования встроенных системных программ?
Язык ассемблера, C, С++, Python, С# и другие.
Могу ли я учиться без каких-либо оснований в электронике?
Изучение встроенных систем без базовых знаний в области электроники не будет хорошей идеей. Встроенные системы представляют собой сочетание аппаратного и программного обеспечения. Вы можете следовать подходу к обучению, а не проходить через длинные и подробные текстовые книги. Вы можете ссылаться на этот блог
поэтапно изучать встроенные системы, делая практические действия. Это поможет вам начать работу с нуля.
Любые другие предпосылки, которые я должен знать?
Основная электроника, цифровая электроника, знание микроконтроллеров и программирование на С. Поскольку вы находитесь на фоне компьютерных наук, вам понадобится плата разработки любого 8-битного микроконтроллера (студенты EE и ЕЭК имеют достаточные знания и опыт для его создания на макете или печатной плате), чтобы начать работу. (Не предпочитайте симуляторы в начале, вы можете ошибаться в своих представлениях!).
Ответ 3
Вы должны принять ограничения и иметь возможность работать с ними:
- Скорость процессора
- нехватка памяти
- отсутствие сетевых средств
- настраиваемые компиляторы и операционные системы
- пользовательские материнские платы и драйверы
- отладка с помощью логического анализатора
- странные методы кодирования и тестирования
- ...
Награда - это глубокое понимание того, что происходит.
Ответ 4
VHDL, Verilog и FPGA являются серьезными игроками на этой арене. С хорошим опытом работы в CS, большим количеством обязательств и, возможно, некоторыми MIT OpenCourseware вы сможете добиться чего-то хорошего. Хорошее знание архитектуры процессора и некоторых ASM также будет иметь большое значение.
Ответ 5
Я пошел в эту область, не зная, как это было сделано как новый выпускник и ушел после 1,5 лет. Итак, что я говорю, может быть немного ржавым, и определенно не всеобъемлющим.
Язык, которым мы пользовались, был C. Но в то время дисковое пространство составляло 4 МБ, а на устройствах, для которых мы разрабатывали, было 8 МБ, и я знаю, что C использовался из-за крошечного отпечатка его библиотек. По-видимому, производительность также была критерием.
Что касается базовой электроники, для позиции начального уровня практически нет необходимости. Вы получите необходимую информацию и опыт со временем.
Не предварительные условия, но наличие опыта работы с внутренними компонентами операционной системы и развитием системы, безусловно, является плюсом.
Ответ 6
Встроенные системы, как правило, программируются на C, хотя на концах диапазона используются системы, которые используют ассемблер, когда кодовое пространство или время очень жесткие (или нет подходящего компилятора C), а на другом конце С++ до .NET compact. Это зависит от того, что вы подразумеваете под встроенными системами, они идут от действительно небольших микроконтроллеров с несколькими сотнями байт оперативной памяти и программным пространством, вплоть до типа смартфона, работающего с полной многозадачной операционной системой и пользовательским интерфейсом.
Вы получите более высокий уровень этого диапазона без фона в электронике, потому что он меньше привязан к аппаратным средствам и больше похож на настольную разработку. По мере приближения к диапазону приложений знание электроники, аналогового и цифрового питания, источников питания, проблем с шумом, проблем с соблюдением, проблем с нагревом и других факторов в совокупности создают действительно сложную среду проектирования.
Начните с чтения некоторых ссылок здесь и embedded.com
Ответ 7
Единственное, что я не видел в ответах до сих пор, заключается в том, что до сих пор вы, вероятно, сделали большую часть своей кодировки в контексте операционной системы. Во многих (возможно, большинстве?) Случаях, с прошивкой, а не программным обеспечением, у вас не будет удобства и преимуществ кодирования поверх операционной системы. Вот почему многие из других ответов показали, что хорошее знание электроники имеет решающее значение.
Ответ 8
Языки: C, Assembler, Processing, Basic и целый ряд других, это зависит от того, какую платформу вы используете относительно того, что доступно.
Вы можете получить более конкретную информацию, если задаете тот же вопрос в ChipHacker или Electronics Exchange, которые оба стиля обмена файлами (например, это), но ориентированы на электронику и "физическую вычислительную технику".
Ответ 9
Вы хотите получить довольно удобный C и построить прочное понимание сборки. В системах/встроенных, как правило, вы работаете с небольшими объемами памяти и более медленными процессорами, поэтому вам нужно понять, как разумно использовать ограниченные ресурсы.
Если вы попадаете в это как хобби, забираете плату gumstix или arduino, эти платы для разработчиков дают вам сотни часов обучения и удовольствия.
Если вы пытаетесь сделать карьеру в этом, найдите работу, где проекты звучат интересными и загрязняют руки. Возьмите каждую задачу, которая приходит вам на ум, и спросите себя, как вы можете сделать лучше и учитесь на этом задании.
В любом случае, получайте удовольствие и счастливое кодирование!
Ответ 10
Как уже упоминалось, встроенное может означать много вещей. В моем мире (Aerospace and Defense) мы работаем с операционными системами реального времени (VxWorks и Integrity являются крупнейшими игроками), а иногда и Linux. Сначала мы программируем на C, хотя С++ также используется, если проект решил использовать объектно-ориентированное программирование и моделирование.
Итак, что касается Pre-Reqs, C точно. Вам действительно нужно узнать все о C, включая BIT-мудрые операции, касающиеся шестнадцатеричных значений, указателей, всего материала низкого уровня. Сборка также, но я использую ее только для отладки самых сложных вещей в наши дни. Вам нужно знать достаточно, чтобы читать и понимать.
Я думаю, Embedded Software Primer - отличное начало изменить свое мышление на встроенный. Обработка прерываний, проблем в реальном времени и т.д.
Как упоминал Микки, иногда у вас даже нет ОС. В этих случаях вы обычно пишете свой собственный диспетчер задач какого-то рода, но обычно это не будет для новичков. Удачи.
Ответ 11
Узнать C. Научитесь применять C ко всем проблемам. Другие языки могут подождать. В конечном итоге сборка поможет, и ни один программист не должен использовать язык сценариев.
В зависимости от того, какие встроенные цели вы используете, может быть очень небольшая разница между ПК и вашей целью. С небольшим электроникой это будет ваша самая легкая запись.
Маленькие процессоры предоставят вам самую крутую кривую обучения, но вы узнаете больше о встроенном программировании. Однако, не имея электронного фона, это может вызвать дополнительные проблемы, которые у вас могут не быть умения, которые вы решите еще.
В конце концов вам придется изучать электронику, если вы хотите добиться дальнейшего прогресса за пределами основ.