Интересует программирование устройства.Когда начать - PullRequest
2 голосов
/ 25 сентября 2010

Все У меня хорошая команда над C ++, но я ничего не делал по программированию устройств. Я немного разбираюсь в дизайне цифровой логики. Но я полный нуб в электронике. В настоящее время я получаю огромный интерес к программированию микроконтроллеров.

С чего начать?

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

Я использую Linux. и я скачал Кейла. никогда не пытался запустить его через Wine. Я запустил его в Windows. Но как работает код, мне не совсем понятно. хотя я могу понять логику как написанную на C. Но она все равно для меня как туман.
Мне просто нужен быстрый кикстарт.

Ответы [ 2 ]

3 голосов
/ 25 сентября 2010

ТАК не лучший сайт, чтобы задать такой вопрос. Существует действительно большое различие между программированием для ПК и программированием для встроенной системы, другие сайты SE специализируются на физических вычислениях. Я получил это письмо от Роберта Картейно во вторник:

... Запрет на любой последний интерес от [chiphacker.com], мы запустим [electronics.stackexchange.com] либо завтра [среда 9/22] или Четверг.

Итак, перейдите на electronics.stackexchange.com здесь и просмотрите chiphacker.com , пока вы ждете. Посмотрите на эти вопросы на Chiphacker:

Есть несколько вещей, которые вы должны учитывать при планировании вашего пути к программированию встроенных систем.

  • Что вы хотите сделать?
  • Что ты умеешь делать?
  • Насколько быстро вы учитесь?

Я выделил несколько вариантов в следующих параграфах.

Вы отметили свой вопрос linux-device-driver, означает ли это, что вы хотите создать собственное устройство для использования в Linux? Если вы имели в виду embedded-linux, то вы относитесь к большему классу микроконтроллеров. Я предлагаю вам взглянуть на BeagleBoard , а также на этот вопрос о Chiphacker для некоторых других вариантов. Если вы хотите использовать встроенный Linux и хотите создать собственную плату, вам сначала нужно будет приобрести некоторый опыт в более простых уровнях проектирования встроенных систем.

Вы также отметили свой вопрос avr, который является популярным классом микроконтроллеров производства Atmel (для получения дополнительной информации посетите форум avrfreaks ). Я начал изучать встроенные системы на ATmega324p; у них действительно отличная документация, они просты в использовании, и для avr больше сайтов, чем в большинстве других процессоров.

Если вам нужна более легкая форма обучения, я предлагаю взглянуть на среду Arduino . Он использует Wiring , который очень похож на C / C ++, и Arduino можно усовершенствовать с помощью «экранов», которые представляют собой модули, которые можно подключить к основной плате Arduino для добавления функциональности. Это ваш быстрый кикстарт.

Хорошим способом обучения было бы ознакомиться с Arduino, затем собрать свою собственную плату AVR (возможно, устройство Linux, например, джойстик), затем работать с комплектом разработки на основе ARM и наконец перейдем к созданию вашей собственной встроенной платы Linux. Вы можете пропустить несколько шагов, если вы не против крутой кривой обучения, или остановиться в любой точке пути, если возможности данного уровня удовлетворят ваши потребности. Для запуска программы на микроконтроллере необязательно иметь «огромное количество знаний об электронике», это правда, но вы должны понимать некоторые базовые вещи, такие как напряжение и ток, прежде чем пытаться зажечь светодиод или подключить два устройства.

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

0 голосов
/ 27 сентября 2010

sparkfun.com имеет много плат, семейства ардуино и прочего.Я рекомендую Armmite Pro, LillyPad вместо Arduino Pro, потому что пайка не требуется, либо вам нужно / хотите, чтобы правильный USB для последовательного / питания.Mbed2 стоит немного дороже, синие светодиоды жестоки для глаз, но просты в использовании.Поскольку ни одно из вышеперечисленного не требуется для игры в их песочнице, вы можете использовать консервированную среду и т. Д., Но не обязательно.

Если вы разрабатываете Linux, вы после того, как я рекомендую hawkboard.org поверх beagleboard.org, чтобы сделать beagleboard пригодным для использования, стоит примерно вдвое больше, чем сама плата, ястреб можно использовать, только покупая что-то для питания.Но вы можете просто изучить драйверы Linux на своем настольном компьютере / ноутбуке, и вам не нужно обязательно связываться со встроенными.

Эмуляторы - хорошее начало.Qemu - это хороший инструмент, имитирующий множество процессоров, который отлично подходит для эмуляции виртуальных систем Linux, обучения разработке драйверов Linux и т. Д. Но получить представление о том, что делает (виртуальный / эмулированный) процессор, не цель.Я считаю полезным иметь видимость.GDB также включает в себя несколько эмуляторов.мама загружена ими, но, как и qemu, предназначена для быстрой эмуляции, а не для обучения.Визуальное продвижение мальчика - это хорошо.Эмуляция никогда не бывает идеальной, поэтому в конечном итоге вы захотите работать на аппаратном обеспечении, но эмуляторы и инструменты компилятора бесплатны, и вы можете узнать немало, прежде чем покупать оборудование.Тем не менее, вы не можете извлечь уроки из эмулятора, загружая свои программы во флэш / ram, отлаживая с помощью jtag или других интерфейсов.i2c, spi и т. д.

...