Linux на ARM Cortex-M3 серии

29

Я новичок в ARM и немного запутался со всеми различными сериями.

Мне нужно построить шлюз с низким энергопотреблением (Ethernet, Wi-Fi ...), поэтому я думаю, что Cortex-M или Cortex-R будет хорошей отправной точкой. Но он не нашел ни одной dev-платы, скажем, с cortex-m3 (которая кажется довольно популярной), поддерживающей linux.

Кажется возможным linuxM3 , поэтому мне интересно, почему нет проекта linux вокруг mbed или LPCXpresso, например?

Может кто-нибудь указать мне на панель разработки, которую я ищу, или объяснить, почему «cortex m» + linux не соответствует большему количеству ответов?

Jojo L'abricot
источник
NXP имеет некоторую поддержку linux для других процессоров, которые не уверены в этом конкретном процессоре.
Кенни
2
Насколько низкое энергопотребление должно быть? Мне удалось построить полноценную систему Linux на 1/2 ватта на основе Freescale iMX283. 1/2 Вт при нормальной нагрузке без Ethernet, 1 Вт с Ethernet, <1,5 Вт Ethernet с полной нагрузкой ... Ethernet PHY - это половина мощности системы при нормальной нагрузке.
Даррон

Ответы:

18

Что касается ARM Cortex-M3:

Linux требует MMU (блок управления памятью). У ARM Cortex-M3 его нет. Невозможно запустить основное ядро ​​Linux на ARM Cortex-M3.

Однако существует вариант ядра Linux для процессоров без MMU, называемый uCLinux .

Руководство по Linux на M3

Замечания по применению ST на uCLinux

Однако, как отмечают другие, Linux вряд ли будет практичным на M3. Он не будет работать без внешней оперативной памяти. Я полагаю, что даже самые большие части Cortex-M3 имеют только 1 МБ флэш-памяти, поэтому вам, вероятно, понадобится и дополнительное хранилище.

Тоби джеффи
источник
12

Cortex-M не подходит для работы, вам нужен ARM926EJ-S

Поиск "Cortex-M + Linux" не дает много ответов, потому что Cortex-M не предназначен для Linux. Наименее мощным ARM, который обычно считается способным работать с полноценной ОС, такой как Linux, является серия ARM926EJ-S , в которой используется архитектура ARMv5. Это классический процессор с широким распространением (он встречается во многих устройствах NAS, старых смартфонах и Chumby Classic) и большой поддержкой, но он немного менее эффективен, чем его преемники. Он имеет архитектуру ARMv5 и работает на паре сотен МГц.

Это то, что вы действительно хотите, но вы не можете иметь это

Я думаю, что процессор, который вам действительно нужен, это Cortex-A5: он разработан, чтобы заменить (и быть чуть более мощным, чем) ARM11, но гораздо более энергоэффективен и более современен. (Примечание. Ничего общего с Apple A5, это специальный Cortex-A9) Он был анонсирован в 2009 году, и мы ожидаем увидеть кремний «в любой день». Никто еще не выпустил универсальную SoC для этого процессора, потому что смартфоны управляют рынком, и рынок между более мощным A9 и старым ARM11 просто не является убедительным. См. Это обсуждение для получения дополнительной информации: http://forum.beyond3d.com/archive/index.php/t-60145.html

Более мощные опции

ARMv6 в ARM11 немного более эффективен, но также и более мощный (так что вы можете не увидеть никакой экономии в вашем бюджете на энергопотребление). Он работает на менее старых смартфонах, таких как iPhone 3G, а также на iPod Touch, Kindle и Zune и работает на частоте 500–800 МГц. Последняя архитектура ARMv7 - это серия Cortex. Cortex-A8 и -A9 работают на новейших смартфонах и планшетах с частотой 800 МГц - 1,2 ГГц, и вам, вероятно, захочется использовать меньшие, более медленные процессоры, если вы стремитесь к минималистичному дизайну. Производительность на ватт этих процессоров просто фантастическая, но может быть безопаснее (и, конечно, будет менее сложно) просто использовать компоненты ARMv5.

Кевин Вермеер
источник
2
Примечание: Cortex-A5 уже поставляется, и Atmel заявляет о предоставлении поддержки Linux для своей версии: atmel.com/Microsite/sama5d3/…
pjc50
10

Пожалуйста, проверьте этот сайт на наличие некоторых платформ Cortex-M3, которые поддерживают Linux (uClinux):

http://www.emcraft.com/

Мы успешно запустили uClinux на следующих микроконтроллерах Cortex-M3: LPC1788 от NXP, STM32F2 от STmicro, SmartFusion от Actel и добавляем поддержку еще пары: Freescale Kinetis, STM32F4 (это два Cortex-M4, а не Cortex-M3) ,

Правда, для работы Linux (включая uClinux) требуется внешнее ОЗУ - встроенная SRAM Cortex-M недостаточно велика даже для ультра-крошечной конфигурации Linux; для практической конфигурации вам нужно как минимум 4 МБ внешней памяти. На самом деле, чем больше, тем лучше - если вашему приложению нужны «функции», Linux поддерживает практически все, и вы не пожалеете, что добавили больше оперативной памяти, а не меньше.

Что касается конкретных устройств, используемых для внешней оперативной памяти, то все это определяется интерфейсом внешней памяти, предоставляемым конкретным MCU. STM32F и SmartFusion поддерживают только SRAM; Вы сможете получить 16 МБ 70 нс PSRAM (с режимом Page для более быстрой работы) за 6-7 долларов США; LPC1788 поддерживает более быструю память SDRAM; Kinetis K70 поддерживает DDR2 (5 долларов за устройство объемом 64 МБ) и т. Д. Все эти запоминающие устройства потребляют энергию только на уровне uA в статические моменты времени.

Вам нужно что-то для загрузки загрузочного Linux с, но это может быть что угодно - сеть, SD-карта, SPI EEPROM, NOR или NAND Flash и т. Д.

В целом, осмелюсь сказать, что Linux - это абсолютно практичный вариант для разработки Cortex-M3.

Обновить

Существует множество чувствительных к энергопотреблению приложений, в которых ваше устройство простаивает большую часть времени, однако во время работы оно должно иметь возможность выполнять многие действия, которые не могут быть легко выполнены с помощью меньшей ОСРВ. Безопасные соединения, VLAN, туннелирование TCP / IP, SNMP, SD-карта, USB-устройство / хост, WiFI и т. Д., И список требований можно продолжать и продолжать.

С меньшей RTOS некоторые из этих функций будут доступны, некоторые нет, но это только часть истории. Что мы видим у наших клиентов все больше и больше, так это то, что для встраиваемых конструкций, использующих Cortex-M3, требуется не просто одна или две из этих расширенных функций, а многие из них с одного устройства. Даже если ОСРВ предоставляет все функции, необходимые для готового проекта, втиснуть их в оперативную память будет непросто. uClinux или нет, я предполагаю, что тенденция будет такова, что все больше и больше проектов на основе Cortex-M будут использовать внешнюю память. Конечно, как только вы получите внешнее ОЗУ в своем дизайне, uClinux станет более понятным.

Что касается низкой вычислительной мощности, предоставляемой Cortex-M (по сравнению с требованиями ядра Linux), в качестве недавнего опыта мы только что включили uClinux на микроконтроллере Freescale K70. Это Cortex-M4 (такой же, как Cortex-M3 плюс аппаратные блоки FP и DSP); встроенные в кристаллы интерфейсы с ОЗУ высокой плотности (DDR2) и Flash (NAND) с кэш-памятью 2x8 КБ. 120-МГц ядро ​​Cortex-M с частотой 150 МГц, выходящей в ближайшее время.

Linux (uClinux) прекрасно работает на этом устройстве. Используя 'dhrystone', мы получаем около 50% производительности, которую мы получаем на коробке Freescale PowerPC 250 МГц. Быстрая загрузка, много оперативной памяти (модуль TWR-K70 обеспечивает 128 МБ ОЗУ и 256 МБ NAND Flash), работа в сети, JFFS2, кадровый буфер, SSH, HTTPD, Qt / E - все это прекрасно работает на K70. В целом, пользовательский опыт - это ваш обычный «встроенный Linux» на микропроцессоре, полном MMU.

Вот указатель на видео сеанса uClinux в реальном времени, запущенного на микроконтроллере Freescale Kinetis K70 Cortex-M4:

http://www.youtube.com/watch?v=UZjJrLG9CeA

владимир хусаинов
источник
5

Без какой-либо поддержки внешней памяти (как ОЗУ, так и Flash) невозможно установить даже самый маленький дистрибутив Linux (скажем, uclinux) на встроенные ресурсы упомянутых устройств.

Обычно это означает, что 32-битная шина открыта для подключения дополнительных чипов. Вот почему чаще всего встречаются одноплатные компьютеры Linux (SBC) с дополнительной оперативной памятью и флэш-чипами в диапазоне мегабайт, которые используются для запуска Linux. Микроконтроллеры, которые вы перечислили, не предлагают этого. На мой взгляд, cortex-m0 / m3 больше предназначен для приложений, где 8-битный микро не будет (или едва) достаточен - таким образом, все необходимые вам ресурсы встроены в чип.

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

Джон Л
источник
3

На stm32 нет MMU, поэтому вы должны использовать ucLinux.

Быстрый Google для ucLinux отправит вас в правильном направлении. https://www.google.com/search?q=stm32+uclinux

Но, с другой стороны, Linux не очень полезен для такого небольшого mcu, и большую часть времени вам нужны внешний RAM и SD-карта для его запуска. И затем цена закрывается на таких проектах, как Rasperry PI, так что вам нужно подумать о своих потребностях.

Может быть, другая меньшая ОС - лучший выбор? Даже если тебе приятно иметь Linux везде ...

Johan
источник
3

Существуют некоторые приложения с низким энергопотреблением, такие как интеллектуальные измерения, где действительно полезно использовать Cortex-M3 с внешней памятью под управлением Linux. Думайте не с точки зрения общей стоимости (платы будут стоить почти столько же, сколько с более быстрым ядром), а с точки зрения потребления энергии.

Если вы работаете от батареи и большую часть времени находитесь в режиме ожидания, проводя измерения, возможно, каждую минуту или около того, а затем отправляя их по сети, было бы неплохо иметь возможность использовать инфраструктуру, предоставленную вам linux для TCP / IP, шифрование и т. Д.

На Всемирной выставке встраиваемых систем в этом году Pengutronix продемонстрировал Linux на макетной плате от EnergyMicro с uCLinux на Cortex-M3 с внешней оперативной памятью и потребляемой мощностью 1,6 мВт в режиме ожидания. Energy Micro имеет в своем портфеле невероятно маломощные микроконтроллеры Cortex-M3 и M4, специально оптимизированные для приложений с низким энергопотреблением, которым требуется приблизительно 16 МВт мощности при работе на 32 МГц при выполнении кода из ОЗУ. Это может включить Linux на различных устройствах с батарейным питанием, где более крупные и быстрые процессоры просто не соответствуют вашему энергетическому бюджету. С другой стороны, вы не получите от этого большой вычислительной мощности ...

Поэтому, если вы живете от батареи и вам не нужно много вычислительной мощности, это может быть решением для вас, в противном случае вы можете выбрать большее ядро ​​ARM с MMU.

кортик
источник
2

Я полагаю, что есть пара поставщиков Cortex-M3, которые предлагают замечания по применению об использовании урезанных версий Linux ( uCLinux ), работающих на их продуктовых предложениях. К счастью, у ST Micro были некоторые предложения. В настоящее время я работаю с Actel / Microsemi SmartFusion (Cortex-M3 + FPGA Fabric), в котором есть примечание к приложению PDF, указывающее на предложение Emcraft .

Nate
источник