Я хотел бы получить несколько советов для тех, кто хочет стать хорошим разработчиком встроенного программного обеспечения или хочет улучшить свою работу в этой области.
Что мне нужно узнать об оборудовании, программном обеспечении?
Какие книги наиболее рекомендуются? Блоги?
В конце концов, как я могу превратиться из начинающего любителя в превосходного профессионала?
Для книг я бы порекомендовал копаться в истории. Большинство современных методов встраиваемого программного обеспечения происходят из самых последних достижений прошлого.
Как и все, практикуйте ежедневно.
источник
Другие ответы хороши, но самое большое различие между любителем и профессионалом должно быть в мышлении о качестве. Так что продвигайте свой проект до конца, не останавливайтесь, когда вы на 80% закончили с проектом. Возьмите его полностью, докажите, что он работает, и документируйте его правильно.
Убедитесь, что ваш код читабелен и удобен в обслуживании.
И не забудьте также повеселиться :)
источник
Помимо очевидного, как изучение C и начните с какой-нибудь доски для разработчиков, вы захотите научиться читать таблицы данных микроконтроллеров .
Производители добавляют все больше и больше функций в микроконтроллеры, которые становятся все более и более сложными. Таблица данных не только предоставляет электрические характеристики (что более интересно для инженера-электронщика, чем разработчика программного обеспечения), но также подробное описание регистров, карт памяти и т. Д.
При первом чтении таблица данных может выглядеть устрашающе, но не понимает их может вызвать более сильную головную боль на этапе отладки.
источник
«Встроенный» - это немного загруженный термин.
В некоторых отношениях любая система, предназначенная для запуска одного приложения, может называться встроенной системой, если имеется некоторое оборудование, которым нужно управлять. Можно с уверенностью назвать 400 МГц PPC604 с 2 ГБ ОЗУ, на котором запущено Java-приложение поверх linux, встроенной системой, если она управляет процессом через локальные модули ввода / вывода. С другой стороны, Arduino, просто запускающий какое-то минимальное сетевое приложение, не будет в значительной степени встроенной системой. Но, вероятно, «встроенный» заставляет большинство людей думать о контроллерах на базе флэш-памяти, имеющих всего несколько сотен байтов оперативной памяти, об отсутствующей операционной системе и множестве встроенных периферийных устройств.
При этом, вероятно, две большие проблемы, с которыми не встроенные программисты обычно сталкиваются при изучении встроенных систем, - это регистры ввода-вывода и прерывания.
Прерывания могут быть на самом деле более простой из двух концепций для не встроенных программистов, поскольку основные проблемы с ними, параллелизм и программирование на основе событий, часто встречаются в основных приложениях. Боль в прерываниях связана с чрезвычайной чувствительностью системы к качеству обработки прерываний и сложностями работы с аппаратными средствами для устранения состояния прерывания и его настройки для следующего. С графическим интерфейсом тупик убивает только приложение. С обработчиком прерываний, тупик вызывает блокировку всей вашей системы.
Устройства ввода / вывода кажутся той областью, которая вызывает наибольшую сложность. Для непосвященных, это может быть весьма удивительно обнаружить , что чтение этого регистра здесь оказывает влияние на этот регистр там . Написание 1, чтобы очистить биты. Биты состояния, которые очищаются, когда вы читаете регистр данных и т. Д. С аппаратным обеспечением ввода-вывода существует так много возможностей, что нет общего правила обращения с ним, кроме как научиться находить и интерпретировать листы данных устройства. Написание драйвера устройства для последовательного порта многому научит вас при программировании ввода / вывода низкого уровня.
На самом деле ничто не заменит изучение этих вещей, чем закатать рукава и запрограммировать какой-нибудь прямой язык C и / или ассемблер на голом металле. Даже вышеупомянутой встроенной системе на основе Java в конечном итоге требуется драйвер устройства для ввода / вывода, и это означает, что в конечном итоге нужно иметь дело с C. Опыт - лучший учитель. Выберите микроконтроллер, будь то MSP430, TMS320, AVR, ARM, PIC, 68HC11, что угодно, найдите набор eval и соберите несколько систем.
источник
Здесь вы хотите узнать ассемблер для различных платформ. C. C и ассемблерное взаимодействие. Различные инструменты GCC и не GCC. Как прочитать справочную таблицу / справку программистов (и понять, что все они имеют некоторые ошибки или могут вводить в заблуждение, никогда не доверять им, аппаратное обеспечение побеждает документы) и как читать или использовать схему. Обычно это не сложные схемы. Некоторые платы хороши для взаимодействия в проектах, то есть на них нет мусора, просто прямой доступ к выводам ввода / вывода. Но это не лучшее для обучения. Что-то вроде StellarisНа плате, которая является болезненной для проектов, есть много забавных вещей для обучения встроенному и обучению брать / использовать драйверы или писать свои собственные из таблиц данных. Бабочка Atmel AVR также является хорошей платой, если она еще доступна, возможно, придется припаять ее на собственном последовательном порту, чтобы запрограммировать ее, или просто заклинить некоторые провода в отверстиях. Это дает вам несколько периферийных устройств, которые вы можете научиться программировать.
Даже если вы в конечном итоге выполняете встроенную работу, которая включает в себя написание приложений с использованием вызовов SDK или API на linux или RTOS (не затрагивая аппаратное обеспечение и не читая таблицы данных), вышеупомянутые знания по-прежнему ставят вас впереди всех остальных.
источник
Эта статья (автоматически переведенная с португальского на английский) содержит хороший обзор развития карьеры разработчика встроенного программного обеспечения. Примечание: оригинал здесь .
Он начинается с описания областей знаний, которые вы должны развивать:
Затем он дает следующие советы для освоения этих областей (и развивает их с дальнейшим текстом, это только заголовки):
источник
Подумайте дважды, прежде чем стать инженером встроенного программного обеспечения. У меня были этапы в моей карьере. Первые 5 лет я разрабатывал программное обеспечение, затем перешел к продажам / маркетингу, сделал это в течение 15 лет, управлял бизнесом стоимостью более 100 миллионов долларов, и теперь я вернулся к программному обеспечению.
Когда я возвращаюсь к программному обеспечению через 15 лет, я помню, почему я ушел в первую очередь. Это трудно. Это требует концентрации, нескольких сотен строк кода, соприкасающихся друг с другом, и вы все должны держать это в памяти. Встраивать это особенно сложно.
Вы также должны понимать себя. Если вы, как правило, умный парень, дотошный и терпеливый, вы станете отличным инженером. Если вам не хватает одного из них, вы будете в лучшем случае средним. Подумай об этом. Если вы очень умны и не терпеливы, это ничего не стоит, потому что независимо от того, насколько вы умны, хорошая инженерия требует терпения и внимания к деталям.
Вы также должны чувствовать себя комфортно, глядя на часы кода без разговоров. Я наблюдаю, что люди с хорошими социальными навыками считают это невыносимым.
Если все это подтвердится, чем читать все эти великие книги, выполнять упражнения, и вы станете отличным инженером .. Удачи
источник
Все остальные говорят великие вещи. Поэтому я дам вам общий совет: читай читай читай читай читай читай читай читай!
Прочитайте каждую статью на http://embeddedgurus.com. Если вы чего-то не понимаете, изучите это. Если в объяснении этих вещей вы найдете что-то, чего не понимаете, прочитайте еще немного. Я собираюсь занять позицию в области встроенного программного обеспечения, и мой опыт - это несколько профессиональных проектов за последние несколько лет и много чтения. Опыт позволяет вам что-то пробовать, а чтение позволяет узнать, были ли уже пробованные вами вещи, возможно, лучше, чем вы могли. Он знакомит вас с концепциями, с которыми вы можете работать в любых обстоятельствах.
Просто читать!
источник
Станьте экспертом в C Понимают Таймеры и Последовательные коммуникации. Вы должны испачкать руки этим. Разберитесь с протоколами RF, настройте их в соответствии с вашими требованиями. Не просто слепо опробуйте комбинации кода во время отладки. Код делает именно то, что вы говорите. Прочтите руководство пользователя и таблицу данных, а затем внесите изменения, если что-то не работает. Все, что сказано и сделано, единственный реальный способ стать экспертом - это практиковаться. Продолжайте создавать приложения. Вскоре это станет второй натурой.
источник