Що потрібно для компіляції Linux на Arduino, якщо це взагалі можливо?


25

Чи можливо запустити Linux на Arduino? Якщо так, то які кроки та обмеження потрібно враховувати? Якщо ні, то які обмеження перешкоджають цьому?



3
Використовуйте замість RPi.
Анонімний пінгвін

Відповіді:


19

Linux - це дуже складна операційна система, але вона може бути спроможна вміститись на Arduino. Що слід врахувати:

  • Немає поточного порту AVR вихідного коду.
  • У вас не буде графіки, натомість доступ до терміналу через UART.
  • Драйвер файлової системи повинен бути переписаний для доступу до внутрішнього спалаху чи зовнішньої SD-карти.
  • Це було б надзвичайно повільно! ATmega328 працював би на частоті 16 МГц, або приблизно в 20 МГц (розігнаний). Більшість машин Linux працює на мінімум 400 МГц і більше з графікою.
  • Можливо, вам знадобиться додаткова оперативна пам’ять, можливо, хороша ідея використовувати ATmega2650 (той, що знаходиться в Mega), який має 16 разів більше оперативної пам'яті Uno. Ви також можете використовувати Due (6 разів швидше, ніж Uno, більше оперативної пам’яті).
  • Можливо, вам доведеться написати спеціальні драйвери USB для OTG (на Due) або MAX3421EE (Mega ADK, USB щит хосту).

Коротше кажучи, це займе багато часу та зусиль, і, ймовірно, буде занадто повільним для щоденного використання. Якщо ви дійсно хочете Arduino Linux, ознайомтесь з юном.


2
Ви б не «напевно» необхідність додаткової оперативної пам'яті, ви дійсно потребуєте в додаткової оперативної пам'яті. Для Linux потрібен 1 Мб + таран. Крім того, відсутність MMU означатиме, що вам доведеться розібратися, як емулювати один (або запустити ucLinux). Реально, в кращому випадку, ви б завершили емуляцію більш здатного процесора в атмезі, який був би на порядок повільнішим від рідного коду. Навіть у ардуїно, що належить, немає ніде потрібного барана.
Коннор Вольф

Також ATmega328P має 2 КБ SRAM, а ATmega2560P лише 8 КБ. Це лише 4X барана, а не 16x.
Коннор Вольф

16

Просто не вистачає оперативної пам’яті. Вам також потрібно було б навчити її завантажуватися з флеш-пам’яті, що передбачало б перезапис завантажувача.

Ви можете замість цього використати Arduino Yun або PCDuino ; а не "стандартні" Arduinos, ці Arduino підтримують екрани та запускають Linux.

Або завжди є Raspberry Pi .


Чому ти кажеш, що Юнь не "стандартний" Ардуїно? Я згоден, це може бути не найпоширенішим, але це дійсно ардуїно.
jfpoilpret

@jfpoilpret Більшість Arduinos - це дошки atmega, які виконують компільований C ++ через avr-gcc і мають чіп для обробки USB. Вони бувають різної форми / розміру / потужності, але вони по суті однакові (Mega вбік). Здавалося досить очевидним, що ОП говорило про ці, а не про Юнь / тощо, звідси і різниця.
Manishearth

Там також буде скоро випущений Ардуїно Тре , принаймні, я сподіваюся, що скоро ;-)
Кріс О

6

Коротка відповідь - ні.

В основному, вам знадобиться ЛОТИ більше оперативної пам'яті, ніж навіть найбільша ATmega спочатку.

Це є теоретично можливим додавати зовнішні пристрої, а також програмувати ATMEGA емулювати більш потужний процесор, і запустити Linux на цьому. Однак на простому ардуїно це неможливо.

Набагато реальніше було б запустити Linux на Arduino Due, який в основному є процесором AT91SAM3X8E. Однак вам все-таки потрібно буде додати деякі додаткові SRAM та сховище.

Є такі речі, як Arduino Yun, але це насправді абсолютно окремий модуль Linux на тій же платі, що й ATmega32U4, тому я не знаю, чи можна насправді вважати це ардуїно.


Можливо, актуально: Що потрібно для запуску вбудованого Linux?


1

Існує плата під назвою pcDuino, яка може запускати кілька варіантів Linux, таких як Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (згадую лише про деякі). Ця рада не є рідним Arduino, а Arduino AtHeart , і її виготовляє LinkSprite .
pcDuino

У Arduino є кілька плат, які підтримують запуск версії Linux під назвою Linino :

  • Arduino Юнь є мікроконтролер плати на основі ATmega32u4 і Atheros AR9331. Процесор Atheros підтримує дистрибутив Linux на основі OpenWrt з назвою Linino OS. На платі є вбудована підтримка Ethernet та WiFi, порт USB-A, слот для карти micro-SD, 20 цифрових штифтів для введення / виводу (7 з них можна використовувати як ШІМ-виходи, а 12 - як аналогові входи), кристал 16 МГц генератор, з'єднання мікро USB, заголовок ICSP і 3 кнопки скидання.
  • Нова плата Arduino Tian працює на базі SAMD21 MCU Atmel з 32-бітним ARM Cortex® M0 + ядром і Qualcomm Atheros AR9342, що є високо інтегрованим процесором MIPS, що працює на частоті до 533 МГц і багатим функціями IEEE802.11n 2x2 2.4 / Дводіапазонний Wi-Fi модуль 5 ГГц Qualcomm Atheros MIPS підтримує дистрибутив Linux, заснований на OpenWRT на ім'я Linino. Arduino Tian також має вбудовану пам'ять eMMC об'ємом 4 ГБ, яка може бути корисною для створення ваших проектів. Можна увімкнути / вимкнути порт Linux з MCU для зменшення споживання енергії.
  • Arduino Industrial 101 - це комітет з оцінювання модуля LGA Arduino 101. Мікроконтролер ATmega32u4 вбудований у плінтус. Модуль підтримує дистрибутив Linux на основі OpenWRT з назвою LininoOS. Плата має вбудований WiFi (операції IEEE 802.11b / g / n до 150 Мбіт / с 1x1 2,4 ГГц), 3 GPIO (з яких 2 можна використовувати як вихідні ШІМ), 4 аналогові входи, 1 USB, 1 сигнал Ethernet на контакт заголовки та вбудований перетворювач постійного та постійного струму. Перегляньте посібник зі збирання та просто підключіть плату до комп'ютера за допомогою кабелю micro USB, щоб розпочати роботу.

-1

Це декілька років, але, можливо, більш доречно, оскільки Arduinos отримує більше оперативної пам’яті та 32-бітових AVMega AVR тощо. Очевидна проблема, зокрема, не в найбільш популярній відповіді. Arduino використовує AVR MICROCONTROLLER, а не МІКРОПРОЦЕСОР. Це основна причина, чому немає порту Linux. Мікроконтролери призначені для виконання конкретного завдання, додатків, де співвідношення вводу та виводу добре визначено. Мікропроцесори призначені для запуску різноманітних програм в операційних системах. Пам'ятайте, з самого початку Linux потребував блоку управління пам'яттю і не міг працювати на 8088 або 286 ПК. Потім з'явився μClinux, який спочатку націлював сімейство Motorola DragonBall з вбудованими процесорами 68 к для Palm Pilots. Це ніколи не було особливо успішним. У вас може бути більший успіх при перенесенні FreeDOS або навіть Minix, ніж Linux, можливо, щось в асемблері, але компілювати ОС на мікроконтролері дуже недоцільно. Можливо, це складна академічна проблема,


-2

Можливо, проте це буде біль, тому що вам доведеться писати це в C. (не кажучи вже про додаткове обладнання, необхідне, наприклад, щит sd-картки та додаткові мікросхеми пам'яті) Щось на зразок Ontas, ядра, про яке я писав C для arduino допоможе, оскільки у нього є підтримка додавання драйверів, за рахунок того, щоб функція циклу недійсності повторювалася повільніше. (Це не така велика угода, як ви могли б подумати, що вона є) (Ontas все ще знаходиться в стадії розробки, і нові функції додаються постійно)

Клацніть тут для посилання на .ino та супровідні файли .h

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