Что нужно для компиляции Linux на Arduino, если это вообще возможно?

Можно ли запустить Linux на Arduino? Если да, то какие шаги и ограничения необходимо учитывать? Если нет, каковы ограничения, препятствующие этому?

24 голоса | спросил Jakub Arnold 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 03:44:46 +0400000000amWed, 12 Feb 2014 03:44:46 +040014 2014, 03:44:46

6 ответов


18

Linux - очень сложная операционная система, но она может быть пригодна для Arduino. Что нужно учитывать:

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

Короче говоря, это потребует много времени и усилий и, вероятно, будет слишком медленным для повседневного использования. Если вы действительно хотите Arduino Linux, посмотрите Yún.

ответил TheDoctor 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 04:11:57 +0400000000amWed, 12 Feb 2014 04:11:57 +040014 2014, 04:11:57
15

У него просто недостаточно оперативной памяти. Вам также нужно научить его загружать из флеш-памяти, что связано с переписыванием загрузчика.

Вместо этого вы можете использовать Arduino Yun или PCDuino ; в то время как не «стандартные» Arduinos, они поддерживают экраны Arduino и запускают Linux.

Или всегда есть Малина Pi .

ответил Manishearth 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 04:12:59 +0400000000amWed, 12 Feb 2014 04:12:59 +040014 2014, 04:12:59
6

Короткий ответ - нет.

В принципе, вам понадобится LOTS больше бара, и даже самый большой ATmega изначально.

Теоретически возможно добавить внешнее оборудование и запрограммировать ATmega для эмуляции более мощного процессора и запустить linux. Однако на простом ардуине это невозможно.

Было бы намного реалистично запускать linux на Arduino Due, который в основном является процессором AT91SAM3X8E. Однако вам все равно нужно добавить дополнительные SRAM и хранилище.

Есть такие вещи, как Arduino Yun, но это действительно совершенно отдельный модуль Linux на той же PCB, что и ATmega32U4, поэтому я не знаю, можете ли вы действительно считать его как arduino.


Возможно, релевантно: Что требуется для запуска встроенный linux?

ответил Connor Wolf 12 FebruaryEurope/MoscowbWed, 12 Feb 2014 10:24:58 +0400000000amWed, 12 Feb 2014 10:24:58 +040014 2014, 10:24:58
1

Существует панель под названием pcDuino , которая может запускать несколько вариантов Linux, таких как Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (только некоторые из них). Этот совет не является родным Arduino, скорее Arduino AtHeart , и сделан LinkSprite .  pcDuino

В Arduino есть несколько плат, поддерживающих версию Linux под названием Linino :

  • Arduino Yún - это микроконтроллерная плата, основанная на ATmega32u4 и Atheros AR9331 , Процессор Atheros поддерживает дистрибутив Linux на базе OpenWrt с именем Linino OS. Плата имеет встроенную поддержку Ethernet и WiFi, порт USB-A, слот для карт micro-SD, 20 цифровых входов /выходов (7 из них могут использоваться как выходы PWM и 12 в качестве аналоговых входов), кристалл 16 МГц осциллятор, микро-USB-соединение, заголовок ICSP и три кнопки сброса.
  • Новый советник Arduino Tian работает от MCM Atmel SAMD21, с 32-битным ARM Cortex® M0 + и Qualcomm Atheros AR9342, который является высокоинтегрированным процессором MIPS, работающим на частоте до 533 МГц, и многофункциональным двухдиапазонным WiFi-модулем IEEE802.11n 2x2 2,4 /5 ГГц. Qualcomm Atheros MIPS поддерживает дистрибутив Linux, основанный на OpenWRT с именем Linino. Arduino Tian также имеет встроенную память объемом 4 ГБ eMMC, которая может быть полезна для создания ваших проектов. Для снижения энергопотребления можно включить /выключить порт Linux с MCU.
  • Arduino Industrial 101 - это оценочная плата для модуля Arduino 101 LGA. Микроконтроллер ATmega32u4 встроен в плинтус. Модуль поддерживает дистрибутив Linux на базе OpenWRT с именем LininoOS. Плата имеет встроенный WiFi (операции IEEE 802.11b /g /n до 150 Мбит /с 1x1 2,4 ГГц), 3 GPIO (из которых 2 могут использоваться как PWM-выходы), 4 аналоговых входа, 1 USB, 1 Ethernet-сигнал на выводе и встроенный DC /DC преобразователь. Ознакомьтесь с руководством по сборке и просто подключите плату к компьютеру с помощью микро-USB-кабеля, чтобы начать работу.
ответил sa_leinad 2 J0000006Europe/Moscow 2017, 07:48:17
-2

Возможно, однако, это было бы больно, потому что вам нужно было бы написать его на C. (не говоря уже о дополнительном аппаратном обеспечении, необходимом, как щит sd-карты и дополнительный чип памяти). Что-то вроде Ontas, ядро Я написал в C для arduino, помог бы, поскольку он имеет поддержку для добавления драйверов, за счет того, что функция цикла void повторяется медленнее. (Это не такая большая сделка, как вы думаете, это так) (Ontas все еще находится в разработке, и все новые функции добавляются все время)

Нажмите здесь, чтобы перейти к .ino и сопровождающим файлам .h

ответил Luke Tindale 2 J0000006Europe/Moscow 2017, 06:11:06
-2

Это несколько лет, но, возможно, более уместно, поскольку Arduinos получает больше ОЗУ и 32-битных ATM-AVR и т. д. Очевидная проблема, особенно не в самом популярном ответе. Arduino использует AVR MICROCONTROLLER , а не MICROPROCESSOR. Это основная причина, почему нет порта linux. Микроконтроллеры предназначены для выполнения конкретной задачи, приложения, где отношения ввода и вывода четко определены. Микропроцессоры предназначены для запуска различных приложений на операционных системах. Помните, с самого начала Linux нуждался в блоке управления памятью и не мог работать на 8088 или 286 ПК. Тогда появился μClinux, который первоначально ориентировался на семейство встроенных 68k-процессоров Motorola DragonBall для Palm Pilots. Это никогда не было особенно успешным. Возможно, у вас больше шансов портировать FreeDOS или даже Minix, чем Linux, возможно, что-то в ассемблере, но компиляция ОС на микроконтроллере очень непрактична. Возможно, это сложная академическая проблема, но в особенности противоречит цели использования микроконтроллера вместо микропроцессора.

ответил Cuvtixo 1 J0000006Europe/Moscow 2018, 01:38:37

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132