Имеет ли значение, какой микроконтроллер использовать для первого встраивания системного программиста? - PullRequest
35 голосов
/ 26 января 2010

У меня есть опыт работы в настольном и веб-программировании в течение нескольких лет. Я хотел бы перейти к программированию встроенной системы. Задав начальный вопрос , я задаюсь вопросом, на какой аппаратной / программной IDE мне следует начинать ...

Или ... не имеет значения?

Какую платформу разработки легче всего изучать и программировать (с учетом удобства использования IDE)?

Какой из них легче всего отладить, если что-то пойдет не так?

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

Спасибо!

обновление: как этот комплект разработчика для начала? Комментарий? предложение

Ответы [ 13 ]

18 голосов
/ 26 января 2010

Лично я бы порекомендовал микроконтроллер на базе ARM Cortex-M3 . Ядра с более высокой мощностью ARM чрезвычайно популярны, и эти версии с низким энергопотреблением вполне могут взлететь в пространство, которое все еще завалено проприетарными 8/16-битными ядрами. Вот недавняя статья на эту тему: ARM Cortex-M3 и конвергенция рынка MCU .

Arduino очень популярен среди любителей. Периферийная библиотека Atmel довольно распространена среди типов процессоров. Таким образом, это сгладит более поздний переход от AVR к ARM .

Я не хочу утверждать, что ARM лучше, чем AVR или любое другое ядро. Выбор MCU для коммерческого продукта обычно сводится к периферии и цене, а затем к существующей кодовой базе и инструментам разработки. Кроме того, микроконтроллеры, как правило, намного проще, чем настольные ПК. Так что на самом деле не так сложно перемещаться из одного в другое после того, как вы его освоили.

Кроме того, посмотрите FreeRTOS , если вы заинтересованы в разработке операционной системы реального времени (RTOS). Это открытый исходный код и содержит подробное описание того, что такое ОСРВ и как они ее реализовали. Фактически, их пример прохождения даже нацелен на AVR.


Средства разработки для встроенных систем могут быть очень дорогими. Однако часто есть альтернативы с открытым исходным кодом для более открытых ядер, таких как ARM и AVR. Например, см. Проекты WinARM и WinAVR .

Эти цепочки инструментов основаны на GCC и, следовательно, также доступны (и проще в использовании IMHO) на платформах, отличных от Windows. Если вы знакомы с использованием GCC, то знаете, что существует множество «IDE» на ваш вкус от EMACS и vi (мой любимый) до Eclipse .

Коммерческие предложения могут избавить вас от головной боли при настройке. Однако выбор одного из них будет во многом зависеть от вашего целевого оборудования и бюджета. Кроме того, некоторые устройства поддерживают прямую отладку по USB, в то время как другим может потребоваться дорогой адаптер JTAG .


Другие ссылки:


Недорогие платы Cortex-M3:


Новый Arduino для использования ARM Cortex-M3 вместо микроконтроллера AVR.

5 голосов
/ 26 января 2010

Учитывая, что у вас уже есть опыт программирования, вы можете подумать о приобретении Arduino и стирании прошивки, чтобы делать свои собственные вещи с AVR Studio + WinAVR. Arduino дает вам хорошую отправную точку в понимании электронной стороны. Извлечение загрузчика Arduino даст вам лучший доступ к внутренностям Atmel.

Чтобы достичь поставленных целей, я бы также рекомендовал более подробно изучить настольные компьютеры с помощью программирования на x86. Например, вы можете собрать ядро ​​операционной системы x86.

3 голосов
/ 27 января 2010

ARM является наиболее широко используемой встроенной архитектурой и охватывает огромный спектр устройств от разных поставщиков и широкий диапазон затрат. Тем не менее, существуют существенные различия между устройствами ARM7, 9, 11 и Cortex - особенно Cortex. Однако, если ваша цель - профессионально освоить встраиваемые системы, ARM поможет вам.

8-битные архитектуры, как правило, проще в использовании, но часто очень ограничены как по объему памяти, так и по скорости ядра. Кроме того, поскольку они просты в использовании, 8-разрядные навыки относительно легки в приобретении, поэтому это менее привлекательный навык для потенциального работодателя, потому что его легко реализовать внутри компании или с менее опытным (и, следовательно, менее дорогим) персоналом.

Однако, если это хобби, а не карьера, низкая стоимость деталей, досок и инструментов, а также простота использования могут сделать 8 бит привлекательным. Я бы предложил AVR просто потому, что он поддерживается бесплатным набором инструментов avr-gcc. Некоторые 8-битные цели поддерживаются SDCC, еще одним компилятором C с открытым исходным кодом. Я полагаю, что Zilog сделает их компилятор Z8 доступным бесплатно, но вам, возможно, придется заплатить за оборудование для отладки (хотя это относительно недорого). Многие поставщики коммерческих инструментов предоставляют ограниченные по размеру кода версии своих инструментов для оценки и некоммерческого использования, но остерегайтесь, что большинству отладчиков требуется специальное оборудование, которое может быть дорогостоящим, хотя в некоторых случаях вы можете создать его самостоятельно, если вам нужны только базовые функциональные возможности и низкие скорости.

Что бы вы ни делали, взгляните на www.embedded.com . Если вы выбираете ARM, я успешно использовал WinARM в коммерческих проектах, хотя он не создан для комфорта! Хороший список ресурсов ARM доступен здесь . Для AVR обязательно посмотрите www.avrfreaks.net

Я бы порекомендовал только детали PIC от Microchip (по крайней мере, бюджетные) для проектов, чувствительных к высокой стоимости, где периферийное соединение хорошо подходит для приложения; не для изучения встроенных систем. PIC - это скорее брендинг, чем архитектура, различные диапазоны PIC12, 16, 18, 24 и PIC32 сильно отличаются друг от друга, поэтому изучение одного не обязательно поможет вам в использовании другого - часто вам даже нужно купить новые инструменты! Тем не менее, dsPIC, основанный на архитектуре PIC24, может быть хорошим выбором, если вы хотите одновременно получить простой опыт работы с DSP.

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

2 голосов
/ 14 июля 2010

Texas Instruments выпустила очень интересный набор для разработки по очень низкой цене: eZ430-Chronos Development Tool содержит MSP430 с дисплеем и различными датчиками в спортивных часах, включая USB-программатор Точка доступа USB-радио за 50 $

Существует также вики, содержащая много и много информации.

Я уже создал предложение по обмену стека для набора eZ430-Chronos.

1 голос
/ 19 марта 2010

Я использовал только один из них.

Freescale - тонкий чип. Я годами использовал чипы HC-что-то для небольших проектов. Единственное предостережение в том, что я не буду касаться встроенного CodeWarrier с 10-футовым шестом. Вы можете найти немного бесплатных компиляторов C и ассемблеров (я не помню названия последнего, который я использовал), которые отлично справляются со своей задачей. Codewarrior был большим и сбивающим с толку, и независимо от того, насколько я знал об архитектуре чипа и программировании на С, всегда казалось, что все только усложняется. Если вы использовали Codewarrior на Mac в прежние времена и думаете, что CW довольно аккуратный, ну, это совсем не так. CW встроенный выглядит неопределенно похожим, но он работает совсем по-другому и не очень хорошо.

Компилятор командной строки обычно штраф . Профессионалы, которые могут выложить большие деньги, получают дорогостоящие среды разработки, и я уверен, что они улучшают ситуацию, но без этого это все же намного лучше, чем написание ассемблерного кода для настольного ПК в 1990 году, и каким-то образом нам удалось сделать это просто отлично , : -)

1 голос
/ 15 февраля 2010

Я использую микрочипы PIC, это то, с чего я начал, в основном я начал заниматься этим благодаря 123 проектам микроконтроллеров для книги злых гений. Я взял курс микропроцессоров в школе для получения степени и немного узнал о прерываниях, времени и других вещах, это помогло мне с моими микроконтроллерами. Я полагаю, что некоторые другие программисты и т.д. могут быть лучше / проще, но за $ 36 для PicKit1 я слишком дешев, чтобы пойти купить другой ... и, честно говоря, не используя их, я не знаю, проще ли они / лучше Мне нравится мой, и я рекомендую его каждый раз, когда получаю, и мне действительно потребовалось целую вечность, чтобы действительно посмотреть на него, но я смог наконец запрограммировать другой чип вне платы с помощью ICSP. Я не знаю, что делают другие программисты, но для меня это самый приятный 5-проводной интерфейс, и вы запрограммированы. Не могу победить это палкой ...

1 голос
/ 04 февраля 2010

Имеет значение, вам нужно постепенно приобретать опыт, начиная с более простых систем. Обратите внимание, что под более простым словом я не подразумеваю менее мощный, я имею в виду простоту использования, простоту настройки и т. Д. В этом ключе я бы порекомендовал следующее (я не заинтересован ни в одном из продуктов, я просто нашел их лучшим):

Я начал использовать один из них (доска для разработчиков MBED). Большим преимуществом для меня было то, что я мог программировать на C или C ++, прямое соединение с USB и удобная онлайн-среда разработки (никакой локальной установки инструмента вообще не требуется!).

http://mbed.org/

Через пять минут после открытия окна у меня была примерная мигающая программа («привет мир изгнанного мира»), выполняющая следующее:

#include "mbed.h"

DigitalOut myled(LED1);

int main()
{
    while(1)
    {
        myled = 1;
        wait(0.2);
        myled = 0;
        wait(0.2);
    }
}

Вот и все! Выше полная программа!

Он основан на ARM Cortex M3, быстром и большом количестве памяти для встроенных проектов (100 МГц, 256 КБ флэш-памяти и 32 КБ оперативной памяти). У инструментов онлайн-разработки есть очень хорошая библиотека, множество примеров и очень активный форум. Много помощи при подключении устройств к MBED и т. Д.

Несмотря на то, что у меня есть большой опыт работы со встроенными системами (ARM 7/9, Renases M8 / 16/32, Coldfire, Zilog, PIC и т. Д.), Я все еще находил эту систему чрезвычайно удобной для работы, имея серьезные возможности. .

После первоначальной игры с ним на базовом макете я купил базовую плату у этих парней: http://www.embeddedartists.com/products/lpcxpresso/xpr_base.php?PHPSESSID=lj20urpsh9isa0c8ddcfmmn207. Здесь есть куча устройств ввода / вывода (включая миниатюрный OLED и 3-осевой акселерометр). С того же сайта я также купил одну из процессорных плат LCPExpresso, которая является дешевой, с меньшим энергопотреблением и памятью, чем MBED, но идеально подходит для небольших работ (но все же вышибает дерьмо из процессоров PIC / Atmega). Базовая плата поддерживает как LCPExpresso, так и MBED. Приобретая плату процессора LCPExpress, я также получил отладчик JTAG и автономную среду разработки (набор разработчика Code Red на основе GCC / Eclipse). Это намного сложнее, чем онлайновая среда разработки MBED, но является логическим шагом после того, как вы приобрели опыт работы с MBED.

Что касается моего первоначального замечания, обратите внимание, что контроллер MBED гораздо более эффективен, чем контроллер LPCExpresso, НО гораздо проще в использовании и обучении.

1 голос
/ 28 января 2010

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

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

Если вы хотите начать разработку встроенных приложений высокого уровня (для телефонов и т. Д.), Загрузите Android SDK, вы можете писать код на Java в Eclipse и даже иметь хороший эмулятор.

Если вы смотрите на «реальное» пространство микроконтроллеров и действительно смотрите на низкоуровневое системное программирование, я бы порекомендовал вам начать с очень простой архитектуры, такой как AVR или PIC, что-то без MMU.

Погружение в середину, например, ARM с MMU и какая-то ОС, будь то Linux или иное, будет шоком, так как без знания системного программирования и аппаратного взаимодействия я думаю, что переход будет будьте очень грубыми, если вы планируете делать что-то иное, кроме написания очень простых приложений, подсчета нажатий кнопок или тому подобного.

1 голос
/ 27 января 2010

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

Atmel AVR будет полезен для изучения многих встроенных элементов по трем основным причинам:

  1. Архитектура достаточно проста
  2. Хорошо доступны комплекты для разработки, с учебными пособиями
  3. Фан-форум с большим количеством ресурсов

Другие микро-системы с комплектами для разработки также могут быть хорошими - например, MSP430 - хотя у них может не быть такого форума поклонников. Использование набора для разработки - это хороший способ, так как они направлены на быстрое освоение микропроцессора и способствуют эффективному обучению. Вероятно, у них есть учебные пособия, ориентированные на быстрое начало работы .

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

Я не фанат PIC, по крайней мере, PIC16, из-за их архитектуры . Это не очень дружелюбно. И банки памяти болезненны.

1 голос
/ 26 января 2010

Что бы вы ни делали, убедитесь, что у вас хорошая среда разработки.Я не фанат средств разработки Microchip, хотя мне нравятся их микроконтроллеры (MPLAB + ICD меня слишком много сжигал, слишком много хлопот и дисфункций).DSP серии TI 2800 довольно хороши и имеют среду разработки на C ++ на основе Eclipse, в которую вы можете попасть за <100 долларов США (получите один из наборов для экспериментатора на основе controlCARD, например, комплект для <a href="http://focus.ti.com/docs/toolsw/folders/print/tmdsdock28335.html" rel="nofollow noreferrer"> 28335 )- канал связи отладчика действительно надежный;IDE хороша, хотя иногда я ее выкидываю.

Где-то есть микросхемы и платы, которые лучше;Я не очень знаком со средой встроенных микроконтроллеров, но у меня нет большого терпения для плохих IDE с еще одной цепочкой программных инструментов, которую я должен выяснить, как обойти все ошибки.

...