Это имеет значение, какой микроконтроллер использовать в 1-й раз встраивают системного программиста?

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

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

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

Какой самое легкое должно отладить, если что-то идет не так, как надо?

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

Спасибо!

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

35
задан 14 revs 23 May 2017 в 12:16
поделиться

12 ответов

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

Однако Core Foundation включает API CFP ropertyList , который поддерживает как создание глубоких изменяемых копий объектов перечислять свойств, так и чтение в перечислять свойств с диска в качестве изменяемых типов данных. (И, конечно, типы перечислять собственности Core Foundation являются бесплатными мостами с Cocoa's, что означает, что между ними не нужно конвертировать - NSArray является CFArray и наоборот.)

-121--4605387-

При открытии файла в текстовом режиме, т.е. без b во втором аргументе fopen () , можно считывать символы один за другим, пока не будет нажат '\n ' для определения размера строки. Лежащая в основе система должна обеспечивать преобразование конца признаков конца строки только в один символ, '\n '. Последняя строка текстового файла в некоторых системах не может заканчиваться '\n ', что является особым случаем.

Псевдокод:

count := 0
c := next()
while c != EOF and c != '\n'"
    count := count + 1

выше подсчитывается количество символов в данной строке. next () - функция для возврата следующего символа из файла.

Можно также использовать fgets () с буфером:

char buf[SIZE];
count = 0;
while (fgets(buf, sizeof buf, fp) != NULL) {
    /* see if the string represented by buf has a '\n' in it,
       if yes, add the index of that '\n' to count, and that's
       the number of characters on that line, which you can
       return to the caller.  If not, add sizeof buf - 1 to count */
}
/* If count is non-zero here, the last line ended without a newline */
-121--4817770-

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

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

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

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


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

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

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


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


Недорогие Советы Коры-M3:


Новый Ардуино, чтобы использовать Кору-M3 РУКИ вместо микроконтроллера AVR.

18
ответ дан 27 November 2019 в 15:43
поделиться

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

Также есть Axon II , который имеет процессор ATMEGA640.

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

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

0
ответ дан 27 November 2019 в 15:43
поделиться

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

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

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

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

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

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

3
ответ дан 27 November 2019 в 15:43
поделиться

Все, что вы делаете, убедитесь, что вы получите хорошую среду разработки. Я не являюсь поклонником инструментов развития микрочипа, хотя мне нравятся их микроконтроллеры (я был сожжен слишком много раз от MPlab + ICD, слишком много хлопот и дисфункции). Ti 2800 Series DSPS довольно хороши и имеют среду разработки на основе Eclipse C ++, которые вы можете войти в 28335 ) - связь отладчика связи действительно солидная; IDE хорош, хотя иногда я его разбиваю.

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

1
ответ дан 27 November 2019 в 15:43
поделиться

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

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

5
ответ дан 27 November 2019 в 15:43
поделиться

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

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

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

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

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

1
ответ дан 27 November 2019 в 15:43
поделиться

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

ATMEL AVR будет хорошим для изучения многих встроенных основных преимуществ, для 3 основных причин:

  1. Архитектура достаточно прямая
  2. Хорошо Доступны комплекты развития, с учебниками
  3. Fan Fian С множеством ресурсов

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

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

Я не поклонник фотографий, по крайней мере, PIC16S, из-за их архитектуры . Это не очень Chired. И банки памяти болезненные.

1
ответ дан 27 November 2019 в 15:43
поделиться

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

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

http://mbed.org/

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

#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
ответ дан 27 November 2019 в 15:43
поделиться

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

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

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

0
ответ дан 27 November 2019 в 15:43
поделиться

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

1
ответ дан 27 November 2019 в 15:43
поделиться

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

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

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

1
ответ дан 27 November 2019 в 15:43
поделиться

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

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

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

2
ответ дан 27 November 2019 в 15:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: