O que é necessário para compilar o Linux no Arduino, se possível?

É possível executar Linux no Arduino? Em caso afirmativo, quais etapas e limitações precisam ser consideradas? Se não, quais são as limitações que impedem isso?

Comentários

Resposta

Linux é um sistema operacional muito complexo, mas pode caber em um Arduino. Pontos a serem considerados:

  • Não há uma porta AVR atual do código-fonte.
  • Você não teria gráficos, em vez disso, acesse o terminal pelo UART.
  • O driver do sistema de arquivos teria que ser reescrito para acessar o flash interno ou um cartão SD externo.
  • Seria extremamente lento! O ATmega328 funcionaria a 16 MHz, ou cerca de 20 MHz no máximo (com overclock). A maioria das máquinas Linux roda a um mínimo de 400 MHz, e mais com gráficos.
  • Você provavelmente precisaria de um pouco de RAM extra, provavelmente uma boa ideia usar um ATmega2650 (aquele do Mega), que tem 16 vezes a RAM do Uno. Você também pode usar um Due (6x mais rápido que o Uno, mais RAM).
  • Você pode ter que escrever drivers USB especiais para OTG (no Due) ou MAX3421EE (Mega ADK, escudo host USB) .

Em suma, levaria muito de tempo e esforço e provavelmente seria muito lento para o uso diário. Se você realmente quer o Arduino Linux, verifique o Yún.

Comentários

  • Você não ” provavelmente ” precisa de memória extra, você precisa de memória extra. Linux requer 1 MB + ram. Além disso, a falta de um MMU significaria que você ‘ teria que descobrir como emular um (ou executar o ucLinux). Realisticamente, na melhor das hipóteses, você ‘ d acabaria emulando um processador mais capaz no atmega, o que seria uma ordem de magnitude mais lento que o código nativo. Mesmo o arduino devido não ‘ tem em qualquer lugar perto da memória RAM necessária.
  • Além disso, o ATmega328P tem 2 KB SRAM, e o ATmega2560P tem apenas 8 KB. Isso é apenas 4X a RAM, não 16x.

Resposta

Simplesmente não tem RAM suficiente. Você também precisa ensiná-lo a inicializar a partir da memória flash, o que envolveria reescrever o carregador de inicialização.

Você pode usar um Arduino Yun ou um PCDuino ; embora não sejam Arduinos “padrão”, eles suportam escudos Arduino e executam Linux.

Ou há sempre o Raspberry Pi .

Comentários

  • Por que você diz que Yun não é ” padrão ” Arduino? Concordo que pode não ser o mais comum, mas é um Arduino de fato.
  • @jfpoilpret A maioria dos Arduinos são placas atmega que executam C ++ compilado via avr-gcc e têm um chip de manipulação USB. vêm em várias formas / tamanhos / poderes, mas eles ‘ são essencialmente os mesmos (Mega à parte). Parecia bastante óbvio que o OP estava falando sobre eles e não o Yun / etc, daí a distinção.
  • Há ‘ s também o Arduino Tre , pelo menos eu ‘ estou esperando ‘ em breve 😉

Resposta

A resposta curta é não.

Basicall y, você precisaria de MUITO mais memória RAM do que até mesmo o maior ATmega tem nativamente.

É teoricamente possível adicionar hardware externo e programar o ATmega para emular uma CPU mais poderosa, e execute o Linux nisso. No entanto, em um arduino simples, isso não é possível.

Seria muito mais realista executar o Linux em um Arduino Due, que é basicamente uma CPU AT91SAM3X8E. No entanto, você ainda precisa adicionar algum SRAM e armazenamento adicionais.

Existem coisas como o Arduino Yun, mas ele é realmente um módulo Linux totalmente separado no mesmo PCB de um ATmega32U4, então eu não “Não sei se você pode realmente contá-lo como um arduino.


Possivelmente relevante: O que é necessário para executar o Linux embutido?

Resposta

Há um quadro chamado pcDuino que pode executar várias variantes do Linux, como Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (apenas para mencionar alguns). Esta placa não é um Arduino nativo, em vez do Arduino AtHeart , e é feito por LinkSprite .
pcDuino

O Arduino tem algumas placas que suportam a execução de uma variante do Linux chamado Linino :

  • O Arduino Yún é uma placa microcontrolada baseada no ATmega32u4 e no Atheros AR9331.O processador Atheros suporta uma distribuição Linux baseada em OpenWrt chamada Linino OS. A placa possui Ethernet e suporte WiFi integrados, uma porta USB-A, slot para cartão micro-SD, 20 pinos de entrada / saída digital (7 deles podem ser usados como saídas PWM e 12 como entradas analógicas), um cristal de 16 MHz oscilador, uma conexão micro USB, um cabeçalho ICSP e 3 botões de reinicialização.
  • A nova placa Arduino Tian é alimentada por SAMD21 MCU da Atmel, apresentando um núcleo ARM Cortex® M0 + de 32 bits e um Qualcomm Atheros AR9342 , que é um processador MIPS altamente integrado operando a até 533 MHz e um módulo WiFi de banda dupla IEEE802.11n 2×2 2,4 / 5 GHz rico em recursos. Qualcomm Atheros MIPS suporta uma distribuição Linux, baseada em OpenWRT chamada Linino. O Arduino Tian também possui uma memória eMMC integrada de 4GB que pode ser útil para construir seus projetos. É possível ligar / desligar a porta Linux do MCU para reduzir o consumo de energia.
  • Arduino Industrial 101 é uma placa de avaliação para o módulo Arduino 101 LGA. O microcontrolador ATmega32u4 está integrado na placa de base. O módulo suporta uma distribuição Linux baseada em OpenWRT chamada LininoOS. A placa possui WiFi integrado (operações IEEE 802.11b / g / n até 150Mbps 1×1 2,4 GHz), 3 GPIOs (dos quais 2 podem ser usados como saídas PWM), 4 entradas analógicas, 1 USB, 1 sinal Ethernet no pino cabeçalhos e um conversor DC / DC integrado. Confira o guia de montagem e simplesmente conecte sua placa a um computador com um cabo micro USB para começar.

Resposta

Isso tem vários anos, mas talvez seja mais pertinente porque os Arduinos obtêm mais RAM e ATMega de 32 bits AVRs, etc. Há um problema óbvio, notavelmente não na resposta mais popular aqui. O Arduino usa um AVR MICROCONTROLLER , não um MICROPROCESSADOR. Esta é a principal razão pela qual não há porta do Linux. Os microcontroladores são projetados para executar uma tarefa específica, aplicativos onde a relação de entrada e saída é bem definida. Os microprocessadores são projetados para funcionar uma variedade de aplicativos em sistemas operacionais. Lembre-se, desde o início, o Linux precisava de uma unidade de gerenciamento de memória e não podia ser executado em 8088 ou 286 PCs. Depois, havia o μClinux, que originalmente tinha como alvo a família Motorola DragonBall de processadores 68k incorporados, para Palm Pilots . Nunca foi particularmente bem-sucedido. Você pode ter mais sucesso portando FreeDOS ou mesmo Minix do que Linux, talvez algo em assembler, mas co Empilhar um sistema operacional em um microcontrolador é muito impraticável. Talvez seja um problema acadêmico desafiador, mas especificamente contrário ao propósito de usar um microcontrolador em vez de um microprocessador.

Resposta

É possível, no entanto, seria uma dor porque você teria que escrevê-lo em C. (sem mencionar o hardware extra necessário como um escudo para cartão SD e chip (s) de memória extra (s)) Algo como Ontas, um kernel que escrevi em C para o arduino ajudaria, pois tem suporte para adicionar drivers, ao custo de fazer com que a função de loop vazio se repita mais lentamente. (Isso não é tão importante quanto você pode pensar que é) (Ontas ainda está em desenvolvimento e novos recursos são adicionados o tempo todo)

Clique aqui para obter o link para o .ino e os arquivos .h que os acompanham

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *