Имеет ли значение, какой микроконтроллер использовать для первого встраивания системного программиста?
У меня есть опыт работы в настольном и веб-программировании в течение нескольких лет. Я хотел бы перейти к программированию встроенной системы. Задав первоначальный вопрос, мне интересно, на каком аппаратном / программном IDE мне следует начинать...
Arduino + Arduino IDE?
Atmel AVR + AVR Studio 4?
Freescale HCS12 или Coldfire + CodeWarrior?
Микрочип ПИК + MPLAB?
ARM Cortex-M3 + ARM RealView / WinARM
Или... не имеет значения?
Какую платформу разработки легче всего изучать и программировать (с учетом удобства использования IDE)?
Какой из них легче всего отладить, если что-то пойдет не так?
Моя цель - узнать о том, "как работают порты ввода-вывода, ограничения / требования к памяти, включая, возможно, пейджинг, процедуры обработки прерываний". Лучше изучить тот, который я буду использовать позже, или концепция высокого уровня должна быть перенесена на большинство микроконтроллеров?
Спасибо!
Обновление: как этот комплект разработчика для начала? Комментарий? предложение?
13 ответов
Лично я бы порекомендовал микроконтроллер на базе 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.
Я буду второй ARM Cortex-M3 или даже на основе ARM7. Поскольку вы упомянули I/O, я предлагаю попробовать разных поставщиков. Некоторые поставщики заставляют вас выполнять чтение-изменение-запись в регистры для изменения выходных значений, другие делают это проще без чтения-изменения-записи, но этот метод также имеет свои недостатки. Зайдите на sparkfun.com и просмотрите доски разработки. Olimex (продается через sparkfun и др.) Предлагает широкий выбор недорогих плат eval, идеально подходящих для того, что вы делаете.
Я предпочитаю набор инструкций msp430 для изучения ассемблера (требуется некоторая сборка, если вы действительно хотите встроиться). Рука близка второй ИМО. Вы можете купить ez430 от ti примерно за 20 баксов или около того, а затем еще за 10 долларов вы можете взять еще три платы msp430. К сожалению, AVR, который, вероятно, является самой популярной архитектурой для любителей (рис. Раньше), является действительно ужасным набором инструкций, вы должны использовать C, чтобы избежать этого. Можно также пойти с чем-то чистым, чистым как в наборе команд, что значительно облегчает работу компиляторов, так что C также приводит к более чистому коду. и msp430, и семейство arm имеют решения gcc, а также легко использовать build и использовать llvm со своим clang (у llvm 64-битная проблема с внешним интерфейсом gcc).
Суть в том, что если вы действительно хотите узнать о встроенных операциях ввода-вывода и прерываниях, связанных с вводом-выводом. зайдите в sparkfun, возьмите пару долларовых крон7 от lpc и st и stm32, получите что-нибудь из stellaris, 1968 или 811, возможно. Ez430 от ti (семейство stellaris теперь является частью ti). Да, вернемся к sparkfun и возьмем arduino mini или лилию на одну из суб-20 долларов, но не забудьте получить от usb до serial вещь, которая одновременно питает его и дает вам доступ к serial/debug. Я был действительно очень разочарован демонстрационными устройствами stm32 от st, или это был на самом деле поставщик rtos. Я все еще очень близок к тому, чтобы никогда больше не покупать у st.
РЕДАКТИРОВАТЬ
Вау, я ударил несколько нервов своим первым ответом. Вероятно, ударить еще немного с редактированием.
Есть несколько способов сделать это. Одним из них является единичный тип регистра. решение для чтения, изменения и записи. Если вы хотите изменить один выход ввода / вывода, вам нужно прочитать регистр, изменить один бит, соответствующий выводу ввода / вывода (чтобы вы не меняли другие выводы ввода / вывода), и записать его обратно. Это потребляет инструкции, что плохо для встроенного, громоздкого и медленного esp, если вы делаете это на языке высокого уровня. Другое решение предназначено для битов. Существует регистр для установки выводов ввода / вывода, когда вы записываете на него, вы помещаете 1 в место для вывода ввода / вывода или выводов, которые вы хотите установить, а затем записываете, биты, которые вы записываете ноль, останутся неизменными. И еще один регистр, который, когда вы пишете 1, очищает соответствующий вывод ввода-вывода. Они отлично подходят для битов. Но плохо, если вы не знаете, что такое значение данных. Если вы берете какие-то данные со входа и просто передаете их на вывод ввода / вывода, тогда вам нужно сделать, если это так, тогда напишите здесь, иначе напишите туда. Вернуться к громоздкому и медленному. Суть моего ответа заключалась в том, что оба эти решения существуют, некоторые чипы дают вам оба, другие имеют только одно из двух решений. Это компромисс, и что-то стоит испытать, поставщики достаточно разные в этом отношении и другие. Другим примером различий между поставщиками и чипами является то, что некоторые предоставляют проводные или выходные сигналы и подтягивания или нет подтягиваний на входах, что может иметь значение, если вам придется начинать добавлять дискретные части для каждого вывода ввода / вывода, когда вы могли только что выбрать другой поставщик и сэкономил всем время и деньги. Такие вещи быстро сделают тебя безработным.
Cortex-M3, выбор, который я знаю, - это STM32 от ST, который я бы (сделал) купил у sparkfun. И семейство Stellaris, ранее Luminary Micro, теперь принадлежит TI. Я бы избежал 811 Eval Board, часы были неким числом, для которого было сложнее найти делители, чем для других. Также я замуровал свой первый в течение нескольких часов и должен был заказать и ждать другого. Остальные сложнее кирпичить. Если вы осторожны со своими возможностями ввода-вывода и направлениями, и просто хотите учиться / играть, 811 хорошо. Хм, я только что увидел, что у LPC есть кортекс м3 сейчас? Если нет, то все, кто занимается оружейным бизнесом, а некоторые нет, скорее всего, приобретут cortex-m3 для рынка встраиваемых систем. При рассмотрении всех факторов, таких как инструменты, доступные программисты, цена за единицу, стоимость разработки, производительность, мощность и т. Д., Эти вещи трудно превзойти.
Недостатки использования сначала cortex-m3 против arm7 заключаются в том, что с помощью arm7 вы можете сначала изучить набор инструкций arm, а затем переключиться на подмножество большого пальца. С cortex-m3 все, что у вас есть, это thumb и thumb2. Кроме того, таблица векторов прерываний глупа по сравнению с обычными руками. Не глупый, как у плохого или глупого, но глупый, как у другого. Многие посчитали бы путь ARM глупым, да, поняли и согласились. cortex-m3 - это скорее исключение из семейства рук, чем правило, поэтому я бы посоветовал изучать его как ваш второй или N-й ARM, а не первый. Здесь, опять же, все хорошие вещи, о которых стоит узнать, вы хотите узнать об этом рынке и окружающей среде. Плата str711 от olimex, которую вы можете приобрести на sparkfun, является хорошей для начала. Я думаю, что это был sam7-64, на котором я потратил больше времени. LPC довольно популярны. У sparkfun есть пара с 9-контактным последовательным портом на платах, поэтому вам не нужно добавлять один.
За исключением нескольких строк для загрузки того, что уже написали многие другие люди, да, это возможно без использования или изучения ASM. Я коснусь большего количества нервов этими утверждениями, но встроенный означает, что ресурсы и производительность ограничены, поэтому многие традиционные правила программирования выходят за рамки, как, например, не использование глобалов. Языки высокого уровня, такие как C, могут стать довольно болезненным явлением для плохих наборов команд, таких как PIC. Поскольку вы настолько близки к металлу, заметный объем кода не переносится из одного семейства в другое или даже в одно и то же семейство. Поэтому использование C для переносимости не является допустимым аргументом. Большинство компиляторов являются мусором, например, gcc является маргинальным (один размер подходит всем, по определению никому не подходит). Это зависит от того, сколько вы хотите контролировать и насколько вы хотите быть рабом других. Интерес к встраиваемым системам для меня означает, что вы хотите контролировать, то есть понимать векторную таблицу, знать, когда, где и почему ваш компилятор выбрасывает 50% или более вашей производительности, вы могли бы сделать это дистанционное управление последним дольше с одной батареей вместо того, чтобы требовать три, чтобы просто пискнуть, просто не зная инструментов и что они делают. Подавляющее большинство программистов в мире запускают свои программы с половинной скоростью или меньше и удваивают размер. Громоздкий и медленный, просто подумайте об экономии электроэнергии и хранения. Вы обычно не видите это на рабочем столе, но вы будете видеть, когда вы встраиваете. Теперь, говоря, что почти весь мой код написан на C, у меня обычно есть только несколько строк ассемблера для установки стека и загрузки и несколько строковых функций здесь и там, где компилятор никогда не будет конкурировать или решать проблемы, с которыми обычно сталкиваются компиляторы.,
Я хотел stm32, будучи в то время единственным другим кортексом-м3. Хотелось кое-что сравнить с семейством звездных. Когда они прибыли, я обнаружил, что ты должен жить в их песочнице. Я не использую rtos, я хочу удалить его и хочу использовать свой собственный загрузчик и код. По крайней мере, в то время это было предметом за дополнительную плату за то, что я уже заплатил вдвое больше, чем обычно за конкурирующие продукты. Таким образом, они находятся в своей коробке, никогда не будут открыты или использованы. В конце концов, чтобы быть брошенным. Да, половина проблемы заключалась в том, что я не проводил достаточного количества исследований, я предполагал, что доски похожи на другие обычные платы eval, это был первый раз для меня. Сожги меня однажды позор на тебя, сожги меня дважды позор на меня. И это был реальный преступник, а не поставщик rtos, а не ST. Поэтому, как только плата olimex stm32 стала доступна от sparkfun, я купил ее.
У arduino также есть проблема с песочницей. Таким образом, большинство поисковых запросов, которые вы делаете для поиска информации, будут в этой песочнице. Разница в том, что все открыто для просмотра, информация есть, если вы хотите сделать свое дело и контролировать доску. Arduino не так прост, как бабочка AVR для тех, кто помнит эту платформу.
Бабочка AVR и теперь arduino удивительны в смысле последователей, которых она привлекла. Возможно, Atmel просто более дружественен как компания, чтобы преодолеть набор инструкций и инструментов. Они не ограничивают себя AVR Кстати, у них также есть линия ARM и, возможно, больше вещей, я не смотрел в последнее время. Вам определенно не понадобится stackru для помощи, если вы идете с Arduino. И вам не понадобится ассемблер, если вы не хотите. А с Arduino Mini или Lillypad от SparkFun стоимость игры практически равна нулю.
Я думаю, что они могли бы сделать намного больше с msp430. Конечно, у них есть этот сверхмощный рынок электроэнергии, который они хотят завоевать. Но у набора инструкций было такое чувство pdp-11, когда я впервые увидел его. Очень чисто, я рекомендую msp430 сначала тем, кто хочет изучать ассемблер, а затем переключиться на ARM, и тогда вы увидите, что все языки ассемблера являются всего лишь синтаксисом в изучении. Производительность, боль и другие вещи - это, конечно, другая история. Я думаю, что они могли бы легко увеличить скорость msp430 и позволить больше использовать адресное пространство. Недавно я потратил некоторое время на игры с opencore msp430, который вы можете поместить в fpga и получить больше памяти, скорости и возможностей, если хотите, даже можете добавить usb, если хотите. Не в супер низком энергопотреблении, конечно. Я также баловался написанием своего собственного клона msp430, просто чтобы выучить немного hdl, не закончил его, но повеселился.
Учитывая, что у вас уже есть опыт программирования, вы можете подумать о приобретении 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 доступным бесплатно, но вам, возможно, придется заплатить за оборудование для отладки (хотя это относительно недорого). Многие поставщики коммерческих инструментов предоставляют ограниченные по размеру кода версии своих инструментов для оценки и некоммерческого использования, но остерегайтесь, что большинству отладчиков требуется специальное оборудование, которое может быть дорогостоящим, хотя в некоторых случаях вы можете создать его самостоятельно, если вам нужны только базовые функциональные возможности и низкие скорости
Что бы вы ни делали, взгляните на http://www.embedded.com/. Если вы выбираете ARM, я успешно использовал WinARM в коммерческих проектах, хотя он не создан для комфорта! Хороший список ресурсов ARM доступен здесь. Для AVR обязательно проверьте http://www.avrfreaks.net/
Я бы порекомендовал только детали PIC от Microchip (по крайней мере, младшие) для проектов с высокой стоимостью, где периферийное соединение хорошо подходит для приложения; не для изучения встроенных систем. PIC - это скорее брендинг, чем архитектура, различные диапазоны PIC12, 16, 18, 24 и PIC32 сильно отличаются друг от друга, поэтому изучение одного не обязательно поможет вам в использовании другого - часто вам даже нужно купить новые инструменты! Тем не менее, dsPIC, основанный на архитектуре PIC24, может быть хорошим выбором, если вы хотите одновременно получить простую работу с DSP.
Во всех случаях проверьте доступность компилятора (особенно, если требуется поддержка C++), а также стоимость и требования к аппаратному обеспечению отладчика, поскольку зачастую это будут самые дорогие части вашего комплекта разработчика, платы и компоненты часто являются наименее дорогими.
Это довольно сложный вопрос, поскольку ваш идеальный ответ во многом зависит от того, что вас интересует в обучении.
Если ваша цель - просто немного глубже погрузиться во внутреннюю работу вычислительных систем, я бы почти порекомендовал вам отказаться от встроенного маршрута и взять книгу о написании модуля ядра Linux. Напишите что-нибудь простое, что считывает датчик температуры с SMbus или что-то в этом роде.
Если вы хотите начать разработку встроенных приложений высокого уровня (для телефонов и т. Д.), Загрузите Android SDK, вы можете написать код на Java под Eclipse и даже иметь хороший эмулятор.
Если вы смотрите на "реальное" пространство микроконтроллеров и действительно смотрите на низкоуровневое системное программирование, я бы порекомендовал вам начать с очень простой архитектуры, такой как AVR или PIC, что-то без MMU.
Погружение в середину, например, ARM с MMU и какая-то ОС, будь то Linux или другое, будет шоком, так как без знания системного программирования и аппаратного взаимодействия я думаю, что переход будет очень грубым если вы планируете делать что-то иное, кроме написания очень простых приложений, подсчета нажатий кнопок или тому подобного.
Нет, это не имеет значения, если вы хотите узнать, как программировать встроенное устройство. Но вам нужно знать, с чего начать и куда идти дальше. Потому что есть много микроконтроллеров, и вы не знаете, какой из них выбрать. Так что лучше начните с дорожной карты.
На мой взгляд, вы должны начать с - любой платы AVR (платы atmega 328P- arduino или плат AVR), затем вам следует перейти на микроконтроллер ARM - сначала выполните ARM CORTEX TDMI, а затем плату ARM cortex M3. Таким образом, вы получите общий обзор. после чего вы можете выбрать любую доску в зависимости от того, над каким проектом вы работаете и каковы ваши требования.
Узнайте больше о встроенных на-doafco.com
Texas Instruments выпустила очень интересный набор для разработки по очень низкой цене: инструмент разработки eZ430-Chronos содержит MSP430 с дисплеем и различными датчиками в спортивных часах, включая программатор отладки usb и точку доступа радио usb за 50$.
Существует также вики, содержащая много-много информации.
Я уже создал предложение по обмену стеками для комплекта eZ430-Chronos.
Я использую микросхемы PIC, это то, с чего я начинал, я в основном начал работать из-за 123 проектов микроконтроллеров для книги злых гений. Я учился в школе на классе микропроцессоров и немного узнал о прерываниях, времени и других вещах, это помогло мне с моими микроконтроллерами. Я предполагаю, что некоторые другие программисты и т.д. могут быть лучше / проще, но за 36 долларов за PicKit1 я слишком дешев, чтобы пойти купить другой... и, честно говоря, не используя их, я не знаю, проще ли они / лучше Мне нравится мой, и я рекомендую его каждый раз, когда получаю, и мне действительно потребовалось целую вечность, чтобы действительно посмотреть на него, но я смог наконец запрограммировать другой чип вне платы с помощью ICSP. Я не знаю, что делают другие программисты, но для меня это самый приятный 5-проводной интерфейс, и вы запрограммированы. Не могу победить это палкой...
Что бы вы ни делали, убедитесь, что у вас хорошая среда разработки. Я не фанат средств разработки Microchip, хотя мне нравятся их микроконтроллеры (MPLAB + ICD меня слишком много сжигал, слишком много хлопот и дисфункций). DSP серии TI 2800 довольно хороши и имеют среду разработки на C++ на основе Eclipse, в которую вы можете попасть за <100 долларов США (получите один из наборов для экспериментатора на основе controlCARD, например, для 28335) - канал связи отладчика действительно твердый; IDE хороша, хотя я иногда вырываю ее.
Где-то есть микросхемы и платы, которые лучше; Я не очень знаком с ландшафтом встроенных микроконтроллеров, но у меня не так много терпения для плохих IDE с еще одной цепочкой программных инструментов, которую я должен выяснить, как обойти все ошибки.
Это важно, вам нужно постепенно приобретать опыт, начиная с более простых систем. Обратите внимание, что под более простым словом я не имею в виду менее мощный, я имею в виду простоту использования, простоту настройки и т. Д. В этом ключе я бы порекомендовал следующее (я не заинтересован в каком-либо из продуктов, я просто нашел их лучшим):
Я начал использовать один из них (доска для разработчиков MBED). Большим преимуществом для меня было то, что я мог программировать на C или C++, прямое соединение с USB и удобная онлайн-среда разработки (никакой локальной установки инструмента вообще не требовалось!).
Через пять минут после открытия окна у меня была примерная мигающая программа ("привет мир изгнанного мира"), выполняющая следующее:
#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, но гораздо проще в использовании и обучении.
Я использовал только один из них.
Freescale - прекрасный чип. Я годами использовал чипы HC-что-то для небольших проектов. Единственное предостережение в том, что я не буду касаться встроенного CodeWarrier с 10-футовым шестом. Вы можете найти маленькие бесплатные компиляторы и ассемблеры C (я не помню названия последнего, который я использовал), которые отлично справляются со своей работой. Codewarrior был большим и сбивающим с толку, и независимо от того, насколько я знал об архитектуре чипа и программировании на С, всегда казалось, что все только усложняется. Если вы использовали Codewarrior на Mac в прежние времена и думаете, что CW довольно аккуратный, ну, это совсем не так. Встроенный CW выглядит примерно одинаково, но работает совсем по-другому и не очень хорошо.
Компилятор командной строки, как правило, в порядке. Профессионалы, которые могут выложить большие деньги, получают дорогостоящие среды разработки, и я уверен, что они улучшают ситуацию, но без этого это все же намного лучше, чем написание ассемблерного кода для настольного ПК в 1990 году, и каким-то образом нам удалось сделать это просто отлично,:-)
Некоторые рекомендуют ARM. Я бы порекомендовал это не как первую платформу для обучения, а как вторую платформу. ARM немного сложен как платформа для изучения низкоуровневых деталей встраиваемых систем, потому что его стартовый код и требования к инициализации сложнее, чем многие другие микро-системы. Но ARM является крупным игроком на рынке встраиваемых систем, поэтому его стоит изучить. Поэтому я бы порекомендовал это как вторую платформу для изучения.
Atmel AVR будет полезен для изучения многих встроенных элементов по трем основным причинам:
- Архитектура достаточно проста
- Доступны хорошие комплекты для разработки с учебными пособиями
- Фан-форум с большим количеством ресурсов
Другие микросхемы с наборами для разработки также могут быть хорошими - например, MSP430 - хотя у них может не быть такого форума поклонников. Использование набора для разработки - это хороший способ, так как они направлены на быстрое освоение микропроцессора и способствуют эффективному обучению. Вероятно, у них есть учебники, ориентированные на быстрое начало работы.
Ну, я полагаю, что наборы для разработки и их учебные пособия, вероятно, затушевывают такие вещи, как загрузчики и стартовый код, в пользу того, чтобы ваш код мигал светодиодом как можно скорее. Но это может быть хорошим способом для начала, и вы можете исследовать цепочку событий от включения питания до запуска кода в своем темпе.
Я не фанат PIC, по крайней мере PIC16, из-за их архитектуры. Это не очень дружелюбно. И банки памяти болезненны.
Я использую PIC, но рассмотрел бы Arduino, если бы я выбрал сегодня. Но из ваших целей:
- как работают порты ввода-вывода
- ограничения / требования к памяти
- процедуры обработки прерываний
Интересно, лучше ли вам просто взломать ядро Linux?
Вы можете рассмотреть RoBoard. Теперь эта плата может быть не тем, что вы ищете с точки зрения микроконтроллера, но она имеет то преимущество, что может запускать Windows или DOS, и, таким образом, вы можете использовать инструменты разработки Microsoft .NET или даже C/C++ для игры на скрипке. вокруг с такими вещами, как сервоприводы или датчики или даже, какого черта, построить робот! Это на самом деле довольно весело.
Есть также Axon II, который имеет процессор ATmega640.
В любом случае, обе доски должны помочь вам достичь вашей цели.
Извините за фокус робототехники, просто то, что меня интересует, и подумал, что это может вам тоже помочь.
BBC Micro Bit
https://en.wikipedia.org/wiki/Micro_Bit
ARM Holdings провела эту дешевую небольшую доску (~20 фунтов) в качестве учебного пособия, и британским студентам бесплатно были розданы 1 млн. Единиц.
Он содержит ARM Cortex-M0, самое маленькое ядро ARM из всех.
Я рекомендую ее в качестве первой платы с микроконтроллером из-за ее широкой доступности, низкой стоимости, простоты и того факта, что она знакомит вас с архитектурой ARM, которая имеет много более продвинутых плат, также доступных для более серьезных приложений.