Насколько сложно разработчику программного обеспечения научиться программировать микроконтроллер?
Я разработчик программного обеспечения. Я программирую на языках высокого уровня в течение нескольких лет.
Я хотел бы знать, как сделать свой первый шаг в программировании оборудования. Не что-то сумасшедшее сложное, но может быть какое-то обычное устройство СЕ? Предполагая, что мне не нужно соединять печатную плату с различными компонентами, а просто программировать крошечный процессор?
На каком низком уровне я должен идти? КАК М? C? манипулировать регистрами? или комплект разработчика сейчас достаточно высокого уровня? Ява даже на картинке? ОО кодирование в аппаратном обеспечении, это даже мечта или реальность? Нужна проверка реальности.
Я также склонен учиться лучше с книгами или сайтами, которые написаны в учебном формате. Что-то, что ведет меня от чего-то простого к чему-то более сложному. Любые рекомендации? Может быть, что-то, что познакомит меня с популярным аппаратным обеспечением (микропроцессор / микроконтроллер), доступным сегодня?
Очень признателен, спасибо всем.
6 ответов
Фактическое программирование не имеет большого значения. Разочаровывающая и раздражающая часть заключается в настройке среды разработки и работе инструментов. Как только вы это сделали, вы наполовину сделали.
Я бы посоветовал приобрести комплект разработчика ('dev kit'), который имеет встроенный USB и работает с выбранной вами ОС. Получите это работает, и вы на полпути.
Если вам не хватает знаний, также важно знать основы работы процессора. Вы будете программировать на гораздо более низком уровне, чем любое другое программирование, поэтому основы немного важнее.
Я программирую на 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 и получите массу удовольствия. Все, что я могу сказать, это пойти на это, это очень затягивает и не особенно дорого делать в наши дни.
Если вы знаете C, то это всего лишь изучение шагов цепочки инструментов для загрузки кода.
Простое место для начала (дешевое оборудование / программное обеспечение) http://www.arduino.cc/en/Guide/HomePage
Получите гоночную доску. Дешево, много пользователей (поддержка сообщества будет ключевой), много вариантов ОС. http://beagleboard.org/
Также стоит обратить внимание на Microsoft Robotics Studio. Они поддерживают довольно много аппаратных плат (включая CE), и с его помощью довольно легко запустить и запустить небольшого робота. А какой классный проект для изучения встроенного программирования круче?
Все это прекрасно интегрируется в Visual Studio (экспресс), и их devkit также поставляется с бесплатной экспресс-версией.
Ну, если вы хотите знать, что вы делаете, вам нужно понимать язык ассемблера процессора и архитектуру процессора.
Вам нужно будет изучить C, чтобы быть компетентным в микроконтроллерах. Обойти это невозможно.
Во встроенных системах есть несколько языков уровня VM. Время от времени я вижу на своем мобильном телефоне исключение нехватки памяти Java (что также помогает составить четкое мнение о встроенных языках уровня VM).
ARM имеет некоторую поддержку байт-кодов Java аппаратного уровня.
Лучше всего взять что-то вроде чипов PIC или Atmel и начать хакерство с ними.
Если вы хотите сделать это с вашим существующим оборудованием, приобретите гипервизор для вашего ПК и начните писать базовое ядро.