如果可能的话,在Arduino上编译Linux需要做什么?


Answers:


19

Linux是一个非常复杂的操作系统,但它可能可以安装在Arduino上。注意事项:

  • 当前没有源代码的AVR端口。
  • 您将没有图形,而是通过UART访问终端。
  • 必须重新编写文件系统驱动程序才能访问内部闪存或外部SD卡。
  • 这将是非常慢!ATmega328将以16 MHz或最大约20 MHz(超频)运行。大多数Linux机器的最低运行频率为400 MHz,而更多的显卡则使用图形。
  • 您可能需要一些额外的RAM,使用ATmega2650(Mega中的ATmega2650)可能是个好主意,它的容量是Uno的16倍。您还可以使用Due(与Uno一样快6倍,更多RAM)。
  • 您可能需要为OTG(在到期日)或MAX3421EE(Mega ADK,USB主机屏蔽)编写特殊的USB驱动程序。

简而言之,这将花费大量时间和精力,并且可能对于日常使用而言太慢。如果您真的想要Arduino Linux,请查看Yún。


2
您不会“可能”需要额外的内存,而您确实需要额外的内存。Linux需要1 MB以上的RAM。另外,缺少MMU意味着您必须弄清楚如何模拟一个(或运行ucLinux)。实际上,充其量,您最终会仿真atmega中功能更强大的处理器,这将比本地代码慢一个数量级。即使是arduino Due,也没有所需的ram附近的任何地方。
康纳·沃尔夫

此外,ATmega328P具有2 KB SRAM,而ATmega2560P仅具有8 KB。那只是公羊的4倍,而不是16倍。
康纳·沃尔夫

16

它只是没有足够的RAM。您还需要教它从闪存启动,这将涉及重写引导加载程序。

您可以改为使用Arduino YunPCDuino;虽然不是“标准” Arduino,但它们支持Arduino防护板并运行Linux。

还是总有Raspberry Pi


为什么说Yun不是“标准” Arduino?我同意这可能不是最常见的,但确实是Arduino。
jfpoilpret 2014年

@jfpoilpret大多数Arduino是atmega板,可通过avr-gcc运行编译的C ++,并具有USB处理芯片。它们具有各种形状/大小/功效,但它们本质上是相同的(除了Mega)。很明显,OP在谈论这些而不是Yun / etc,因此是区别。
Manishearth 2014年

还有即将发布的Arduino Tre,至少我希望它很快;-)
Chris O

6

最简洁的答案是不。

基本上,您甚至需要最大的ATmega来提供更多的RAM。

理论上可以添加外部硬件和编程的ATmega来模拟一个更强大的CPU,并在运行Linux操作系统。但是,在普通的arduino上,这是不可能的。

在Arduino Due(基本上是AT91SAM3X8E CPU)上运行linux会更加现实。但是,您仍然需要添加一些其他的SRAM和存储。

像Arduino Yun这样的东西,但这实际上是与ATmega32U4在同一PCB上的一个完全独立的linux模块,因此我不知道您是否真的可以将其视为arduino。


可能相关:运行嵌入式Linux需要什么?


1

有一个名为pcDuino的板,可以运行Linux的多种变体,例如Debian,Ubuntu,Open WRT,LEDE,Raspian PIXEL(仅举几例)。该开发板不是本机Arduino,而是Arduino AtHeart,由LinkSprite制造
pcDuino

Arduino有两个板卡支持运行名为Linino的Linux变体:

  • Arduino的云是一种基于ATmega32u4和Atheros的AR9331的微控制器板。Atheros处理器支持基于OpenWrt的Linux发行版,名为Linino OS。该开发板具有内置的以太网和WiFi支持,USB-A端口,micro-SD卡插槽,20个数字输入/输出引脚(其中7个可用作PWM输出和12个用作模拟输入),一个16 MHz晶振振荡器,微型USB连接,ICSP接头连接器和3个复位按钮。
  • 新的Arduino Tian板由Atmel的SAMD21 MCU提供支持,具有32位ARMCortex®M0 +内核和Qualcomm Atheros AR9342,后者是高度集成的MIPS处理器,工作频率高达533MHz,功能丰富的IEEE802.11n 2x2 2.4 / 5 GHz双频WiFi模块。高通Atheros MIPS支持基于OpenWRT的Linux发行版,名为Linino。Arduino Tian还内置了4GB eMMC内存,可以帮助您构建项目。可以从MCU开启/关闭Linux端口以减少功耗。
  • Arduino工业101是Arduino 101 LGA模块的评估板。ATmega32u4微控制器集成在底板中。该模块支持基于OpenWRT的Linux发行版,名为LininoOS。该开发板具有内置WiFi(IEEE 802.11b / g / n操作,最高150Mbps 1x1 2.4 GHz),3个GPIO(其中2个可用作PWM输出),4个模拟输入,1个USB,1个以太网信号引脚接头连接器和内置DC / DC转换器。查看组装指南,只需使用Micro USB电缆将开发板连接至计算机即可开始使用。

-1

这已经有好几年了,但是随着Arduino获得更多的RAM和32位ATMega AVR等,也许更有意义。这里有一个明显的问题,尤其是在最流行的答案中。Arduino使用AVR 微控制器,而不是微处理器。这是为什么没有linux端口的主要原因。微控制器被设计为执行特定任务,即输入和输出关系得到很好定义的应用。微处理器旨在在操作系统上运行各种应用程序。请记住,从一开始,Linux就需要一个内存管理单元,并且不能在8088或286台PC上运行。然后是μClinux,最初是针对Palm Pilots的Motorola DragonBall嵌入式68k处理器系列。它从来没有特别成功。与Linux相比,移植FreeDOS甚至Minix可能比在Linux上获得更大的成功,也许是在汇编程序中获得成功,但是在微控制器上编译OS是非常不切实际的。也许这是一个充满挑战的学术问题,


-2

这是可能的,但是这很痛苦,因为您必须使用C编写它。(更不用说需要额外的硬件,例如sd卡挡板和额外的存储芯片)像Ontas这样的内核arduino的C会有所帮助,因为它具有添加驱动程序的支持,但以使void循环函数的重复速度变慢为代价。(这并不像您想象的那么重要)(Ontas仍在开发中,并且一直在添加新功能)

单击此处以链接到.ino和随附的.h文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.