Насколько сложно разработчику программного обеспечения научиться программировать микроконтроллер? - PullRequest
14 голосов
/ 25 января 2010

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

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

На каком низком уровне я должен идти? КАК М? C? манипулировать регистрами? или комплект разработчика сейчас достаточно высокого уровня? Ява даже на картинке? ОО кодирование в аппаратном обеспечении, это даже мечта или реальность? Нужна проверка реальности.

Я также склонен учиться лучше с книгами или сайтами, которые написаны в учебном формате. Что-то, что ведет меня от чего-то простого к чему-то более сложному. Любые рекомендации? Может быть, что-то, что познакомит меня с популярным аппаратным обеспечением (микропроцессором / микроконтроллером), доступным сегодня?

Очень признателен, спасибо всем.

Ответы [ 6 ]

8 голосов
/ 25 января 2010

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

Я бы посоветовал купить комплект разработчика ('dev kit'), который имеет встроенный USB и работает с выбранной вами ОС. Получите это, и вы наполовину закончили.

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

2 голосов
/ 25 января 2010

Я программирую на C как хобби и профессионально уже около 16 лет, но всегда для пользовательского кода (т.е. программ, а не ядра или драйверов). Большая часть моей работы была связана с языками высокого уровня (я выполнил много программирования на Perl и Ruby, с промежуточными сценариями Java, Python и shell между ними). Я много занимался разработкой для MS-DOS (которая, вероятно, была настолько же близка к программированию с нуля, как и на машине с x86), но моя последняя работа была связана с 5-летней веб-разработкой на Perl и Ruby on Rails.

При этом я теперь старший инженер по разработке встраиваемых Linux-систем, занимаюсь разработкой драйверов (включая эмулятор для устаревшего простого микропроцессора внутри модуля ядра) для uClinux на Blackfin Платформа. Бывали случаи, когда моя неопытность в отношении проблем, связанных с аппаратным обеспечением (т. Е. Плавающие уровни сигналов из-за отсутствия подтягивания / опускания булавки), мешала, но это был в основном очень приятный и захватывающий опыт. Как утверждают другие, понимание ваших инструментов очень важно - для uClinux это означало GNU Toolchain , с которым, к счастью, я уже был знаком из-за своего опыта в технологиях FOSS.

Blackfin вряд ли является микропроцессором начального уровня (в частности, он не имеет MMU , который имеет некоторые соответствующие эффекты для разработки Linux ), но, как уже говорилось, Вы можете купить Beagleboard примерно за 200 долларов США со всеми необходимыми аксессуарами и начать возиться с ним всего за несколько дней. Если вы хотите что-то более простое, есть много вариантов Arduino , хотя, если у вас есть какой-то реальный опыт разработки, я думаю, вы найдете их среду разработки немного ограничивающей (я знаю, что сделал).

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

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

2 голосов
/ 25 января 2010

Если вы знаете C, то всего лишь нужно изучить шаги цепочки инструментов для загрузки кода.

Простое место для начала (дешевое аппаратное / программное обеспечение) http://www.arduino.cc/en/Guide/HomePage

0 голосов
/ 25 января 2010

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

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

В встроенных системах есть несколько языков уровня VM. Время от времени я вижу на своем мобильном телефоне исключение нехватки памяти Java (, что также помогает мне высказать свое мнение о встроенных языках уровня VM ).

ARM имеет некоторую поддержку байт-кодов Java аппаратного уровня.

Ваш лучший выбор - взять что-то вроде чипов PIC или Atmel и начать взламывать их.

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

0 голосов
/ 25 января 2010

Получите гоночную доску. Дешево, много пользователей (поддержка сообщества будет ключевой), много вариантов ОС. http://beagleboard.org/

0 голосов
/ 25 января 2010

Также стоит обратить внимание на Microsoft Robotics Studio . Они поддерживают довольно много аппаратных плат (включая CE), и с его помощью довольно легко запустить и запустить маленького робота. А какой классный проект для изучения встроенного программирования круче?

Все это прекрасно интегрируется в Visual Studio (экспресс), и их devkit также поставляется с бесплатной экспресс-версией.

...