가능하다면 Arduino에서 Linux를 컴파일하려면 무엇이 필요합니까?


답변:


19

Linux는 매우 복잡한 운영 체제이지만 Arduino에 적합 할 수 있습니다. 고려해야 할 사항 :

  • 소스 코드의 현재 AVR 포트가 없습니다.
  • 그래픽이없는 대신 UART를 통해 터미널에 액세스하십시오.
  • 내부 플래시 또는 외부 SD 카드에 액세스하려면 파일 시스템 드라이버를 다시 작성해야합니다.
  • 그것은 것입니다 매우 느린! ATmega328은 16MHz 또는 최대 약 20MHz (오버 클럭)에서 작동합니다. 대부분의 Linux 시스템은 그래픽을 사용하여 최소 400MHz 이상에서 실행됩니다.
  • 아마도 여분의 RAM이 필요할 것입니다. 아마도 Uno RAM의 16 배인 ATmega2650 (Mega에있는 것)을 사용하는 것이 좋습니다. Due (Uno, RAM보다 6 배 빠름)를 사용할 수도 있습니다.
  • OTG (Due) 또는 MAX3421EE (Mega ADK, USB 호스트 실드) 용 특수 USB 드라이버를 작성해야 할 수도 있습니다.

요컨대, 많은 시간과 노력이 필요하며, 일상적으로 사용하기에는 너무 느릴 것입니다. Arduino Linux를 정말로 원한다면 Yún을 확인하십시오.


2
"아마도"추가 램 필요 하지 않으며 추가 램 필요합니다. Linux에는 1MB 이상의 램이 필요합니다. 또한 MMU가 부족하면 MMU를 에뮬레이트하는 방법 (또는 ucLinux를 실행하는 방법)을 알아야합니다. 현실적으로 기껏해야 atmega에서 더 유능한 프로세서를 모방 할 수 있습니다. 이는 원시 코드보다 훨씬 느린 속도입니다. 아두 이노조차도 필요한 램 근처에는 없습니다.
코너 울프

또한 ATmega328P에는 2KB SRAM이 있고 ATmega2560P에는 8KB 만 있습니다. 그것은 16 배가 아닌 램의 4 배에 불과합니다.
코너 울프

16

RAM이 충분하지 않습니다. 또한 부트 로더를 다시 작성해야하는 플래시 메모리에서 부팅하도록 지시해야합니다.

대신 Arduino Yun 또는 PCDuino 를 사용할 수 있습니다 . "표준"Arduino는 아니지만 Arduino 쉴드를 지원하고 Linux를 실행합니다.

또는 항상 라즈베리 파이가 있습니다.


Yun이 "표준"Arduino가 아닌 이유는 무엇입니까? 나는 그것이 가장 일반적이지 않을 수도 있지만 실제로 Arduino입니다.
jfpoilpret

@jfpoilpret 대부분의 Arduino는 avr-gcc를 통해 컴파일 된 C ++를 실행하고 USB 처리 칩이있는 atmega 보드입니다. 그것들은 다양한 모양 / 크기 / 힘으로 나옵니다. OP가 Yun / etc가 아닌 이것에 대해 이야기하고 있었기 때문에 분명한 것처럼 보였습니다.
Manishearth

또한 곧 출시 될 Arduino Tre 도 있습니다. 적어도 그것이 곧 바라고 있습니다. ;-)
Chris O

6

짧은 대답은 '아니요'입니다.

기본적으로 가장 큰 ATmega보다 기본적으로 더 많은 RAM이 필요합니다.

이다 외부 하드웨어를 추가하고, 더 강력한 CPU를 에뮬레이션하기 위해 ATMEGA 프로그램, 그리고에 리눅스를 실행하는 데 이론적으로 가능. 그러나 일반 arduino에서는 불가능합니다.

기본적으로 AT91SAM3X8E CPU 인 Arduino Due에서 Linux를 실행하는 것이 훨씬 더 현실적입니다. 그러나 여전히 일부 SRAM 및 스토리지를 추가해야합니다.

Arduino Yun과 같은 것이 있지만 실제로는 ATmega32U4와 동일한 PCB에 완전히 별개의 Linux 모듈이므로 실제로 arduino로 계산할 수 있는지 모르겠습니다.


아마도 관련성 : 임베디드 리눅스를 실행하려면 무엇이 필요합니까?


1

pcDuino 라는 보드가 있으며 데비안, 우분투, Open WRT, LEDE, Raspian PIXEL과 같은 Linux의 여러 변형을 실행할 수 있습니다 (몇몇 언급). 이 보드는 네이티브 Arduino가 아니라 Arduino AtHeart 이며 LinkSprite 로 제작되었습니다 . .
pcDuino

Arduino에는 Linux라는 변형을 지원하는 두 개의 보드가 있습니다. Linino .

  • 그만큼 아두 이노 윤 ATmega32u4과 아테 로스 AR9331을 기반으로 마이크로 컨트롤러 보드입니다. Atheros 프로세서는 Linino OS라는 OpenWrt 기반 Linux 배포판을 지원합니다. 이 보드에는 내장 이더넷 및 WiFi 지원, USB-A 포트, 마이크로 SD 카드 슬롯, 20 개의 디지털 입력 / 출력 핀 (7 개는 PWM 출력으로, 12 개는 아날로그 입력으로 사용 가능), 16MHz 크리스털 발진기, 마이크로 USB 연결, ICSP 헤더 및 3 개의 리셋 버튼.
  • 새로운 Arduino Tian 보드는 Atmel의 SAMD21 MCU로 구동되며 32 비트 ARM Cortex® M0 + 코어와 Qualcomm Atheros AR9342를 특징으로하며 최대 533MHz에서 작동하는 고집적 MIPS 프로세서이며 풍부한 IEEE802.11n 2x2 2.4 / 5GHz 듀얼 밴드 WiFi 모듈. Qualcomm Atheros MIPS는 Linino라는 OpenWRT를 기반으로 Linux 배포를 지원합니다. Arduino Tian에는 프로젝트를 빌드하는 데 도움이되는 4GB eMMC 메모리 빌드도 있습니다. 전력 소비를 줄이기 위해 MCU에서 Linux 포트를 켜거나 끌 수 있습니다.
  • Arduino Industrial 101 은 Arduino 101 LGA 모듈 용 평가 보드입니다. ATmega32u4 마이크로 컨트롤러는베이스 보드에 통합되어 있습니다. 이 모듈은 LininoOS라는 OpenWRT 기반 Linux 배포를 지원합니다. 이 보드에는 내장 WiFi (IEEE 802.11b / g / n 동작 최대 150Mbps 1x1 2.4 GHz), 3 GPIO (2 개는 PWM 출력으로 사용 가능), 4 개의 아날로그 입력, 1 개의 USB, 1 개의 이더넷 신호 헤더 및 내장 DC / DC 컨버터. 조립 안내서를 확인하고 간단히 마이크로 USB 케이블로 보드를 컴퓨터에 연결하여 시작하십시오.

-1

이것은 몇 살이지만 Arduinos가 더 많은 RAM과 32 비트 ATMega AVR 등을 얻음에 따라 더 적절할 수 있습니다. 가장 인기있는 답변에는 명백한 문제가 없습니다. Arduino는 AVR을 사용합니다 MICROCONTROLLER를MICROPROCESSOR가 아닙니다. 이것이 리눅스 포트가없는 주된 이유입니다. 마이크로 컨트롤러는 입력과 출력의 관계가 잘 정의 된 특정 작업, 응용 프로그램을 수행하도록 설계되었습니다. 마이크로 프로세서는 운영 체제에서 다양한 앱을 실행하도록 설계되었습니다. 리눅스는 처음부터 메모리 관리 장치가 필요했으며 8088 또는 286 PC에서 실행할 수 없었습니다. 그런 다음 원래 Palm Pilots 용 Motorola DragonBall 임베디드 68k 프로세서 제품군을 대상으로하는 μClinux가있었습니다. 특별히 성공한 적은 없었습니다. 어쩌면 어쩌면 어쩌면 Linux보다 FreeDOS 또는 Minix를 포팅하는 데 더 성공했을 수도 있지만 마이크로 컨트롤러에서 OS를 컴파일하는 것은 매우 비실용적입니다. 아마도 어려운 학업 문제 일 것입니다.


-2

가능하지만 C로 작성해야하기 때문에 고통 스럽습니다. (sd 카드 쉴드 및 추가 메모리 칩과 같은 추가 하드웨어는 말할 것도 없습니다.) 내가 쓴 커널 Ontas와 같은 것 Arduino의 C는 void 루프 기능 반복 속도를 늦추는 대신 드라이버를 추가하는 것을 지원하므로 도움이됩니다. (이것은 당신이 생각하는 것만 큼 큰 거래는 아닙니다) (Ontas는 여전히 개발 중이며 새로운 기능이 항상 추가됩니다)

.ino 및 해당 .h 파일에 대한 링크를 보려면 여기를 클릭하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.