É possível rodar o Linux no Arduino? Se sim, quais etapas e limitações precisam ser consideradas? Caso contrário, quais são as limitações que impedem isso?
É possível rodar o Linux no Arduino? Se sim, quais etapas e limitações precisam ser consideradas? Caso contrário, quais são as limitações que impedem isso?
Respostas:
O Linux é um sistema operacional muito complexo, mas pode caber em um Arduino. Coisas a considerar:
Em suma, levaria muito tempo e esforço e provavelmente seria muito lento para o uso diário. Se você realmente quer o Arduino Linux, confira o Yún.
Apenas não tem RAM suficiente. Você também precisa ensiná-lo a inicializar a partir da memória flash, o que envolveria a reescrita do carregador de inicialização.
Você pode usar um Arduino Yun ou um PCDuino ; embora não sejam Arduinos "padrão", eles suportam escudos do Arduino e executam o Linux.
Ou sempre há o Raspberry Pi .
A resposta curta é não.
Basicamente, você precisaria de muito mais memória RAM do que até o maior ATmega possui nativamente.
Ele é teoricamente possível adicionar hardware externo, e programar o ATmega para emular uma CPU mais potente, e rodar o Linux em que. No entanto, em um arduino simples, não é possível.
Seria muito mais realista rodar o Linux em um Arduino Due, que é basicamente uma CPU AT91SAM3X8E. No entanto, você ainda precisará adicionar SRAM e armazenamento adicionais.
Existem coisas como o Arduino Yun, mas esse é realmente um módulo linux totalmente separado no mesmo PCB que o ATmega32U4, então não sei se você pode realmente contá-lo como um arduino.
Possivelmente relevante: o que é necessário para executar o linux incorporado?
Existe uma placa chamada pcDuino que pode executar várias variantes do Linux, como Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (apenas para citar algumas). Esta placa não é um Arduino nativo, e sim o Arduino AtHeart , e é feita pelo LinkSprite .
O Arduino possui algumas placas que suportam a execução de uma variante do Linux chamada Linino :
Isso tem vários anos, mas talvez seja mais pertinente, pois os Arduinos recebem mais RAM e AVRs ATMega de 32 bits, etc. Há um problema óbvio, notavelmente não na resposta mais popular aqui. O Arduino usa um MICROCONTROLADOR AVR, não um microprocessador. Esta é uma das principais razões pelas quais não há porta do linux. Os microcontroladores são projetados para executar uma tarefa específica, aplicações em que o relacionamento de entrada e saída é bem definido. Os microprocessadores são projetados para executar 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 rodar em 8088 ou 286 PCs. Havia o μClinux, que originalmente tinha como alvo a família Motorola DragonBall de processadores embarcados de 68k para Palm Pilots. Nunca foi particularmente bem sucedido. Você pode ter mais sucesso portando FreeDOS ou Minix que Linux, talvez algo em assembler, mas compilar um sistema operacional em um microcontrolador é muito impraticável. Talvez seja um problema acadêmico desafiador,
É possível, no entanto, seria uma dor, porque você teria que escrevê-lo em C. (para não mencionar o hardware extra necessário, como um escudo de cartão SD e chip (s) de memória extra) Algo como Ontas, um kernel que escrevi em C para o arduino, ajudaria, pois possui suporte para adicionar drivers, às custas de fazer com que a função de loop vazio se repita mais lentamente. (Isso não é tão importante quanto você imagina) (o Ontas ainda está em desenvolvimento e novos recursos são adicionados o tempo todo)
Clique aqui para o link para os arquivos .ino e .h que os acompanham