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

Arduino에서 Linux를 실행할 수 있습니까? 그렇다면 어떤 단계와 제한을 고려해야합니까? 그렇지 않은 경우이를 방지하는 제한 사항은 무엇입니까?

댓글

Answer

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

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

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

댓글

  • " 아마도 " 추가 램이 필요하고 추가 램이 필요합니다 . Linux에는 1MB 이상의 램이 필요합니다. 또한 MMU가 없기 때문에 ' MMU를 에뮬레이션 (또는 ucLinux 실행)하는 방법을 알아 내야합니다. 현실적으로 기껏해야 ' 아트 메가에서 더 유능한 프로세서를 에뮬레이션하게되는데, 이는 네이티브 코드보다 훨씬 느립니다. arduino도 ' 필요한 램 근처에는 없습니다.
  • 또한 ATmega328P에는 2KB SRAM이 있고 ATmega2560P에는 8KB 만 있습니다. 이는 16x가 아니라 램의 4 배에 불과합니다.

답변

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

대신 Arduino Yun 또는 PCDuino ; “표준”Arduino는 아니지만 Arduino 실드를 지원하고 Linux를 실행합니다.

아니면 항상 Raspberry Pi 가 있습니다.

댓글

  • 윤이 " 표준 " Arduino? 가장 일반적인 것은 아니지만 실제로 Arduino입니다.
  • @jfpoilpret 대부분의 Arduino는 avr-gcc를 통해 컴파일 된 C ++를 실행하고 USB 핸들링 칩이있는 atmega 보드입니다. 다양한 모양 / 크기 / 파워로 제공되지만 ' 기본적으로 동일합니다 (메가 제외). OP가 윤 등이 아니라 이것에 대해 이야기하고있는 것이 분명해 보였습니다. 따라서 차이점이 있습니다.
  • '도 곧 출시 될 Arduino Tre , 적어도 ' 곧 ' 곧 가능합니다;-)

답변

단순히 아니오입니다.

Basicall y, 기본적으로 가장 큰 ATmega보다 훨씬 많은 RAM이 필요합니다.

이론적으로 외부 하드웨어를 추가하고 ATmega를 프로그래밍하여 더 강력한 CPU를 에뮬레이트하는 것이 가능합니다. 그것에 리눅스를 실행하십시오. 그러나 일반 arduino에서는 불가능합니다.

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

Arduino Yun과 같은 것이 있지만 실제로는 ATmega32U4와 동일한 PCB에있는 완전히 분리 된 Linux 모듈이므로 “정말 arduino로 간주 할 수 있는지 모르겠습니다.


관련성이있을 수 있음 : 임베디드 Linux를 실행하려면 무엇이 필요합니까?

답변

pcDuino Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (몇 가지만 언급)과 같은 다양한 Linux 변형을 실행할 수 있습니다. 이 보드는 기본 Arduino가 아니라 Arduino AtHeart 이며 LinkSprite 에서 제작했습니다.
pcDuino

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

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

Answer

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

답변

가능하지만 C로 작성해야하기 때문에 고통 스러울 것입니다. (sd 카드 실드 및 추가 메모리 칩과 같은 추가 하드웨어는 말할 것도없고) 내가 작성한 커널 인 Ontas와 같은 것 arduino에 대한 C는 void 루프 기능을 더 느리게 반복하는 대신 드라이버 추가를 지원하므로 도움이 될 것입니다. (이것은 생각만큼 큰 거래가 아닙니다) (Ontas는 아직 개발 중이며 새로운 기능이 항상 추가됨)

.ino 및 함께 제공되는 .h 파일에 대한 링크를 보려면 여기를 클릭하십시오.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다