Имеет ли значение, какой микроконтроллер использовать для первого встраивания системного программатора?

StackOverflow https://stackoverflow.com/questions/2137153

Вопрос

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

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

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

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

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

Спасибо!

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

Это было полезно?

Решение

Лично я бы порекомендовал ARM Cortex-М3 на базе микроконтроллера.Более могущественный РУКА ядра чрезвычайно популярны, и эти версии с низким энергопотреблением вполне могут занять место в пространстве, которое все еще заполнено проприетарными 8/16-разрядными ядрами.Вот недавняя статья на эту тему: ARM Cortex-M3 и конвергенция рынка микроконтроллеров.

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

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

Кроме того, загляните в Бесплатные игры если вы заинтересованы в разработке операционной системы реального времени (RTOS).Это открытый исходный код, и он содержит подробное описание того, что такое RTOS и как они его реализовали.На самом деле, их пошаговый пример даже нацелен на AVR.


Инструменты разработки для встраиваемых систем могут быть очень дорогими.Однако часто существуют альтернативы с открытым исходным кодом для более открытых ядер, таких как ARM и AVR.Например, смотрите Выигрышное оружие и ВинАВР Проекты.

Эти цепочки инструментов основаны на GCC и, таким образом, также доступны (и, ИМХО, проще в использовании) на платформах, отличных от Windows.Если вы знакомы с использованием GCC, то вы знаете, что существует множество "IDE" на ваш вкус от EMACS и vi (мой любимый), чтобы Затмение.

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


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


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


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

Другие советы

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

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

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

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

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

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

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

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

Что бы вы ни делали, убедитесь, что у вас хорошая среда разработки.Я не фанат средств разработки Microchip, хотя мне нравятся их микроконтроллеры (слишком много раз обжигался MPLAB + ICD, слишком много хлопот и дисфункций).ЦСП серии 2800 от TI довольно хороши и имеют среду разработки на C++ на базе Eclipse, в которую можно войти за <100 долларов США (приобретите один из наборов экспериментаторов на базе "controlCARD", например, для 28335) -- канал связи с отладчиком действительно надежный;IDE хороша, хотя иногда у меня случаются сбои.

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

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

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

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

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

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

Я не фанат PIC, по крайней мере PIC16. благодаря своей архитектуре.Это не очень дружелюбно к C.А банки памяти — это больно.

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

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

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

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

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

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

Я начал использовать одну из них (плату разработчика 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, НО его гораздо проще использовать и изучать.

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

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

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

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

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

На мой взгляд, вам следует начать с любой платы AVR (платы atmega 328P- arduino или платы AVR). затем вам следует перейти к микроконтроллеру ARM - сначала сделайте ARM CORTEX TDMI затем ARM cortex M3 board.Таким образом, это даст вам общее представление, после чего вы сможете выбрать любую доску в зависимости от того, над каким проектом вы работаете и каковы ваши требования.

Узнайте больше о встроенных на- doafco.com

Ты мог бы учитывать а РоБорд.Теперь эта доска может нет быть тем, что вы ищете с точки зрения микроконтроллера, но у него есть то преимущество, что он может запускать Windows или DOS, и, таким образом, вы мог используйте инструменты разработки Microsoft .NET или даже C/C++, чтобы возиться с такими вещами, как сервоприводы или датчики, или даже, какого черта, создавать роботов!На самом деле это довольно весело.

Также есть Аксон II, оснащенный процессором ATmega640.

В любом случае обе доски должны помочь вам достичь цели.

Извините за внимание к робототехнике, меня это просто интересует, и я думаю, что это тоже может вам помочь.

Я использую PIC, но сегодня рассмотрю вариант Arduino.Но из ваших целей:

  • как работают порты ввода-вывода
  • ограничения/требования к памяти
  • процедуры обслуживания прерываний

Интересно, не лучше ли просто взломать ядро ​​Linux?

BBC Микро Бит

https://en.wikipedia.org/wiki/Micro_Bit

Эта дешевая маленькая доска (~20 фунтов) был создан ARM Holdings как образовательное устройство, а 1 миллион единиц был бесплатно роздан британским студентам.

Он содержит ARM Cortex-M0, самое маленькое ядро ​​ARM из всех.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top