Linux на ARM серії Cortex-M3


29

Я новачок в ARM і трохи розгублений з усіма різними серіями.

Мені потрібно побудувати шлюз низької потужності (ethernet, wifi ...), тож я здогадуюсь, що кортекс-M або cortex-R стане гарною відправною точкою. Але на ньому не було знайдено жодної плати розробників, яка б сказала cortex-m3 (що здається досить популярним), що підтримує Linux.

Мабуть, це можливо linuxM3 , тому мені цікаво, чому немає проекту Linux на mbed або LPCXpresso, наприклад?

Хто-небудь може вказати мені на борт розробників, якого я шукаю, чи пояснити мені, чому "cortex m" + linux не поступається більше відповідей?


NXP має деяку підтримку Linux для інших процесорів, не впевнених у цьому.
kenny

2
Якою низькою потужністю це потрібно? Мені вдалося створити повну систему Linux на 1/2 ватти на основі Freescale iMX283. 1/2 Вт при нормальному навантаженні без Ethernet, 1 Вт з Ethernet, <1,5 Вт Ethernet з повним навантаженням ... Ethernet PHY - це половина потужності системи при нормальному навантаженні.
darron

Відповіді:


18

Що стосується ARM Cortex-M3:

Для Linux потрібен MMU (блок управління пам’яттю). У ARM Cortex-M3 його немає. Запустити основне ядро ​​Linux на ARM Cortex-M3 неможливо.

Однак існує варіант ядра Linux для процесорів MMUless, який називається 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 на наступних MCU Cortex-M3: NXP LPC1788, STmicro STM32F2, Actel's SmartFusion, і зараз додаємо підтримку ще для пари: Freescale Kinetis, STM32F4 (ці два Cortex-M4, а не Cortex-M3) .

Правда, Linux (включений uClinux) вимагає запуску зовнішньої оперативної пам’яті - інтегрована SRAM Cortex-M недостатньо велика, навіть для надто крихітної конфігурації Linux; для практичних налаштувань вам потрібно щонайменше 4 Мб зовнішньої оперативної пам’яті. Тим більше, тим краще - якщо вашому додатку потрібні "функції", у Linux є підтримка нічого, і ви не пошкодуєте, що додали більше оперативної пам'яті, а не менше.

Що стосується конкретних пристроїв, які використовуються для зовнішньої оперативної пам’яті, все це визначається інтерфейсом зовнішньої пам’яті, що надається певним MCU. STM32F та SmartFusion підтримують лише SRAM; ви зможете отримати PSRAM розміром 70 Мб (70 МБ) (з режимом сторінки для більш швидкої роботи) за $ 6-7; LPC1788 підтримує швидші пам'яті SDRAM; Kinetis K70 підтримує DDR2 (5 доларів за пристрій 64 МБ) і т. Д. Усі ці спогади черпають живлення лише на рівні uA в статичний час.

Вам потрібно щось завантажувати з завантажувального Linux, але це може бути про що завгодно - мережу, SDcard, SPI EEPROM, NOR або NAND Flash тощо.

Загалом, я смію сказати, що Linux - це абсолютно практичний варіант для дизайну Cortex-M3.

Оновлення

Існує велика кількість енергочутливих програм, де ваш пристрій працює в режимі очікування, проте під час роботи йому потрібно робити багато речей, чого не буде легко досягти, використовуючи менший RTOS. Безпечні підключення, VLAN, тунелювання TCP / IP, SNMP, SD-карта, USB-пристрій / хост, WiFI тощо, і перелік вимог продовжується і продовжується.

З меншим RTOS деякі з цих функцій будуть доступні, а деякі ні, проте це лише частина історії. Що більше ми спостерігаємо з нашими замовниками, це те, що для вбудованих конструкцій, що використовують Cortex-M3, потрібно не лише 1, ані 2 цих розширених функцій, багато з них потрібно з одного пристрою. Навіть якщо RTOS надає всі функції, які потребують дизайну в повному обсязі, це завдасть все це пам'яті на мікросхемі. uClinux чи ні, я гадаю, що тенденція полягатиме в тому, що все більше дизайнів на основі Cortex-M будуть використовувати зовнішню пам'ять. Звичайно, щойно ви отримаєте зовнішню оперативну пам’ять у своєму дизайні, uClinux починає мати більше сенсу.

Що стосується низької потужності процесора, що надається Cortex-M (вимірюється відповідно до вимог ядра Linux), то як недавній досвід ми лише включили uClinux в MCU Freescale K70. Це Cortex-M4 (це те саме, що Cortex-M3 плюс апаратні модулі FP і DSP); інтерфейси мікросхеми до оперативної пам’яті високої щільності (DDR2) та Flash (NAND), з кеш-пам’ятьми 2x8KB. Ядро Cortex-M 120 МГц, незабаром вийде деталь на 150 МГц.

На цьому пристрої Linux (uClinux) працює просто чудово. Використовуючи "dhrystone", ми отримуємо близько 50% продуктивності, яку отримуємо на коробці PowerPC Freescale з частотою 250 МГц. Швидке завантаження, багато оперативної пам’яті (модуль TWR-K70 забезпечує 128 Мб оперативної пам’яті та 256 МБ NAND Flash), мережа, JFFS2, фреймбуфер, SSH, HTTPD, Qt / E - все це працює чудово на K70. Загальний досвід користувачів - це ваш звичайний "вбудований Linux" на мікропроцесорі, повному MMU.

Ось вказівник на відео сеансу uClinux в реальному часі, який працює на MCU Freescale Kinetis K70 Cortex-M4:

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


5

Без якоїсь підтримки зовнішньої пам’яті (як оперативної пам’яті, так і Flash) неможливо встановити навіть найменший дистрибутив Linux (скажімо, uclinux) на вбудованих ресурсах згаданих пристроїв.

Зазвичай це означає, що 32-бітна шина піддається впливу для підключення додаткових мікросхем. Ось чому в мегабайтному діапазоні, що використовується для запуску Linux, частіше бачити одноплаткові комп'ютери Linux (SBC) з додатковою оперативною пам’яттю та флеш-чіпами. Мікроконтролери, які ви перерахували, не пропонують цього. Як я це бачу, cortex-m0 / m3 призначений більше для застосувань, де 8-бітового мікросередовища не вистачить (або ледве) - таким чином усі необхідні ресурси вбудовуються в чіп.

Щоб краще відповісти на це питання, було б розумно проаналізувати вимоги до вбудованого Linux. Зазвичай це означає можливість встановлення завантажувача, ядра та файлової системи - і, звичайно, власне програмне забезпечення користувача та бібліотеки, необхідні для його запуску. Підсумуйте це, і незабаром ви побачите, що вам знадобиться кілька мегабайт оперативної пам’яті та флеш-пам’яті, щоб зробити все корисне.


3

На stm32 немає MMU, тому вам доведеться використовувати ucLinux.

Швидкий google для ucLinux відправить вас у правильному напрямку. https://www.google.com/search?q=stm32+uclinux

Але з іншого боку, Linux насправді не такий корисний для такого маленького комп'ютера, і для його запуску вам знадобиться зовнішній таран і SD-карта. І тоді ціна закривається на такі проекти, як Rasperry PI, тому вам потрібно подумати, які ваші потреби.

Можливо, інша менша ОС - кращий вибір? Навіть ти приємно мати Linux скрізь ...


3

Існує кілька застосувань малої потужності, таких як розумні вимірювання, де корисно використовувати Cortex-M3 із зовнішньою пам'яттю під управлінням Linux. Подумайте не з точки зору загальної вартості (плати коштуватимуть приблизно стільки ж, скільки з більш швидким Core), а з точки зору енергоспоживання.

Якщо ви живете заряд батареї, і ви працюєте в режимі очікування більшу частину часу, проводите вимірювання, можливо, щохвилини або близько того, а потім надсилаєте це по мережі, можливо, буде непогано мати можливість використовувати інфраструктуру, яку вам приніс Linux для TCP / IP, шифрування тощо.

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

Отже, якщо ви живете акумулятором і не потребуєте великих процесорів, це може бути рішенням для вас, якщо ні, ви можете вибрати більше ARM Core з MMU.


2

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.