Cần gì để biên dịch Linux trên Arduino, nếu có thể?


Câu trả lời:


19

Linux là một hệ điều hành rất phức tạp, nhưng nó có thể phù hợp với Arduino. Những điều cần cân nhắc:

  • Không có cổng AVR hiện tại của mã nguồn.
  • Bạn sẽ không có đồ họa, thay vào đó truy cập thiết bị đầu cuối qua UART.
  • Trình điều khiển hệ thống tập tin sẽ phải được viết lại để truy cập flash bên trong hoặc thẻ SD bên ngoài.
  • Nó sẽ cực kỳ chậm! ATmega328 sẽ chạy ở 16 MHz, hoặc tối đa khoảng 20 MHz (được ép xung). Hầu hết các máy Linux chạy ở mức tối thiểu 400 MHz và hơn thế nữa với đồ họa.
  • Bạn có thể sẽ cần thêm một chút RAM, có lẽ là một ý tưởng tốt để sử dụng ATmega2650 (một trong Mega), có 16 lần RAM của Uno. Bạn cũng có thể sử dụng Hạn mức (nhanh gấp 6 lần so với Uno, nhiều RAM hơn).
  • Bạn có thể phải viết trình điều khiển USB đặc biệt cho OTG (trên Hạn) hoặc MAX3421EE (Mega ADK, lá chắn máy chủ USB).

Nói tóm lại, nó sẽ tốn rất nhiều thời gian và công sức, và có lẽ sẽ quá chậm để sử dụng hàng ngày. Nếu bạn thực sự muốn Arduino Linux, hãy xem Yún.


2
Bạn sẽ không phải là "có lẽ" cần thêm ram, bạn làm cần thêm ram. Linux cần 1 MB + ram. Ngoài ra, việc thiếu MMU có nghĩa là bạn phải tìm ra cách mô phỏng một (hoặc chạy ucLinux). Trên thực tế, tốt nhất, bạn sẽ kết thúc việc mô phỏng bộ xử lý có khả năng cao hơn trong atmega, đây sẽ là một thứ tự cường độ chậm hơn mã gốc. Ngay cả arduino do không có bất cứ nơi nào gần ram yêu cầu.
Sói Connor

Ngoài ra, ATmega328P có 2 KB SRAM và ATmega2560P chỉ có 8 KB. Đó chỉ là 4X ram chứ không phải 16x.
Sói Connor

16

Nó chỉ không có đủ RAM. Bạn cũng cần dạy nó khởi động từ bộ nhớ flash, điều này sẽ liên quan đến việc viết lại bộ nạp khởi động.

Thay vào đó, bạn có thể sử dụng Arduino Yun hoặc PCDuino ; trong khi không phải là "tiêu chuẩn" Arduinos, chúng hỗ trợ các lá chắn Arduino và chạy Linux.

Hoặc luôn có Raspberry Pi .


Tại sao bạn nói Yun không phải là Arduino "chuẩn"? Tôi đồng ý nó có thể không phải là phổ biến nhất, nhưng nó thực sự là một Arduino.
jfpoilpret

@jfpoilpret Hầu hết các Arduinos là các bảng atmega chạy C ++ được biên dịch thông qua avr-gcc và có chip xử lý USB. Chúng có nhiều hình dạng / kích cỡ / sức mạnh khác nhau, nhưng về cơ bản là giống nhau (bỏ qua một bên). Có vẻ như khá rõ ràng rằng OP đã nói về những điều này chứ không phải Yun / vv, do đó là sự khác biệt.
Manishearth

Ngoài ra còn có Arduino Tre sắp được phát hành , ít nhất là tôi hy vọng nó sẽ sớm ra mắt ;-)
Chris O

6

Câu trả lời ngắn gọn là không.

Về cơ bản, bạn sẽ cần RẤT NHIỀU ram hơn, ngay cả ATmega lớn nhất cũng có.

Đó về mặt lý thuyết có thể để thêm phần cứng bên ngoài, và chương trình ATmega để mô phỏng một CPU mạnh hơn, và chạy Linux trên đó. Tuy nhiên, trên một arduino đơn giản, điều đó là không thể.

Sẽ thực tế hơn nhiều khi chạy linux trên Arduino Do, về cơ bản là CPU AT91SAM3X8E. Tuy nhiên, bạn vẫn cần thêm một số SRAM và dung lượng lưu trữ bổ sung.

Có những thứ như Arduino Yun, nhưng đó thực sự là một mô-đun linux hoàn toàn riêng biệt trên cùng PCB với ATmega32U4, vì vậy tôi không biết liệu bạn có thực sự coi nó là một arduino hay không.


Có thể có liên quan: Cần gì để chạy linux nhúng?


1

Có một bảng gọi là pcDuino có thể chạy nhiều biến thể của Linux như Debian, Ubuntu, Open WRT, LEDE, Raspian PIXEL (chỉ đề cập đến một vài). Bảng này không phải là Arduino bản địa, thay vào đó là Arduino AtHeart và được tạo bởi LinkSprite .
pcDuino

Arduino có một vài bảng hỗ trợ chạy một biến thể của Linux có tên Linino :

  • Các Arduino Yun là một hội đồng quản trị vi điều khiển dựa trên ATmega32u4 và Atheros AR9331. Bộ xử lý Atheros hỗ trợ phân phối Linux dựa trên OpenWrt có tên Linino OS. Bảng mạch có hỗ trợ Ethernet và WiFi tích hợp, cổng USB-A, khe cắm thẻ micro-SD, 20 chân đầu vào / đầu ra kỹ thuật số (7 trong số chúng có thể được sử dụng làm đầu ra PWM và 12 làm đầu vào analog), tinh thể 16 MHz bộ tạo dao động, kết nối micro USB, tiêu đề ICSP và 3 nút đặt lại.
  • Bo mạch Arduino Tian mới được cung cấp bởi SAMD21 MCU của Atmel, bao gồm lõi ARM Cortex® M0 + 32 bit và Qualcomm Atheros AR9342, đây là bộ xử lý MIPS tích hợp cao hoạt động lên đến 533 MHz và có nhiều tính năng IEEE802.11n 2x2 2.4 / Mô-đun WiFi băng tần kép 5 GHz. Qualcomm Atheros MIPS hỗ trợ phân phối Linux, dựa trên OpenWRT có tên Linino. Arduino Tian cũng có một bộ nhớ eMMC 4GB tích hợp có thể hữu ích để xây dựng các dự án của bạn. Có thể BẬT / TẮT cổng Linux từ MCU để giảm mức tiêu thụ điện.
  • Arduino Industrial 101 là bảng đánh giá cho mô-đun Arduino 101 LGA. Bộ vi điều khiển ATmega32u4 được tích hợp trong ván chân tường. Mô-đun này hỗ trợ phân phối Linux dựa trên OpenWRT có tên LininoOS. Bo mạch có WiFi tích hợp (hoạt động của IEEE 802.11b / g / n lên đến 150Mbps 1x1 2.4 GHz), 3 GPIO (trong đó 2 có thể được sử dụng làm Đầu ra PWM), 4 Đầu vào analog, 1 USB, 1 tín hiệu Ethernet trên pin các tiêu đề và bộ chuyển đổi DC / DC tích hợp. Kiểm tra hướng dẫn lắp ráp và chỉ cần kết nối bo mạch của bạn với máy tính bằng cáp micro USB để bắt đầu.

-1

Điều này đã được vài năm tuổi, nhưng có lẽ thích hợp hơn khi Arduinos có thêm RAM và 32 bit ATMega, v.v. Có một vấn đề rõ ràng không có trong câu trả lời phổ biến nhất ở đây. Arduino sử dụng một MICROCONTROLLER AVR, không phải là MICROPROCESSOR. Đây là một lý do chính tại sao không có cổng linux. Vi điều khiển được thiết kế để thực hiện một nhiệm vụ cụ thể, các ứng dụng trong đó mối quan hệ của đầu vào và đầu ra được xác định rõ. Bộ vi xử lý được thiết kế để chạy nhiều ứng dụng trên hệ điều hành. Hãy nhớ rằng, ngay từ đầu, Linux cần một đơn vị quản lý bộ nhớ và không thể chạy trên 8088 hoặc 286 PC. Sau đó, có μClinux, ban đầu nhắm đến nhóm vi xử lý nhúng 68k của Motorola DragonBall, cho Palm Pilots. Nó không bao giờ đặc biệt thành công. Bạn có thể chuyển thành công FreeDOS hoặc thậm chí Minix nhiều hơn Linux, có thể là thứ gì đó trong trình biên dịch chương trình, nhưng việc biên dịch HĐH trên vi điều khiển là rất không thực tế. Có lẽ đó là một vấn đề học tập đầy thách thức,


-2

Tuy nhiên, điều đó có thể là một nỗi đau vì bạn sẽ phải viết nó bằng C. (không đề cập đến phần cứng bổ sung cần thiết như tấm chắn thẻ sd và (các) chip bộ nhớ bổ sung) Một cái gì đó giống như Onas, một hạt nhân tôi đã viết C cho arduino, sẽ giúp vì nó có hỗ trợ thêm trình điều khiển, với chi phí làm cho hàm void loop lặp lại chậm hơn. (Đây không phải là vấn đề lớn như bạn nghĩ) (Ontas vẫn đang được phát triển và các tính năng mới được thêm vào mọi lúc)

Bấm vào đây để liên kết đến các tệp .ino và các tệp .h đi kèm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.