ArduinoでLinuxをコンパイルするには、可能な限り何が必要ですか?


回答:


19

Linuxは非常に複雑なオペレーティングシステムですが、Arduinoに適合できる場合があります。考慮事項:

  • ソースコードの現在のAVRポートはありません。
  • グラフィックはなく、代わりにUARTを介して端末にアクセスします。
  • 内部フラッシュまたは外部SDカードにアクセスするには、ファイルシステムドライバーを書き換える必要があります。
  • それは非常に遅いでしょう!ATmega328は16 MHz、または最大約20 MHz(オーバークロック)で動作します。ほとんどのLinuxマシンは、最低でも400 MHz以上で動作し、グラフィックスを搭載しています。
  • おそらく追加のRAMが必要になります。おそらく、Umegaの16倍のRAMを備えたATmega2650(メガの1つ)を使用することをお勧めします。Due(Unoの6倍の速度、より多くのRAM)を使用することもできます。
  • OTG(期限内)またはMAX3421EE(Mega ADK、USBホストシールド)用の特別なUSBドライバを作成する必要がある場合があります。

要するに、それは多くの時間と労力を要し、おそらく毎日の使用には遅すぎるでしょう。Arduino Linuxが本当に必要な場合は、Yúnをご覧ください。


2
あなたは「おそらく」余分なラムを必要としないでしょう、あなた余分なラムを必要とします。Linuxには1 MB以上のRAMが必要です。また、MMUがないため、MMUをエミュレートする(またはucLinuxを実行する)方法を理解する必要があります。現実的には、せいぜい、atmegaでより高性能なプロセッサをエミュレートすることになります。これは、ネイティブコードよりも1桁遅くなります。arduino dueでさえ、必要なRAMの近くには何もありません。
コナーウルフ

また、ATmega328Pには2KBのSRAMがあり、ATmega2560Pには8KBしかありません。それは16倍ではなく、4倍のラムです。
コナーウルフ

16

RAMが足りないだけです。また、ブートローダーの書き換えを伴うフラッシュメモリからの起動を教える必要があります。

代わりに、Arduino YunまたはPCDuinoを使用できます。「標準」のArduinoではありませんが、これらはArduinoシールドをサポートし、Linuxを実行します。

または、常にRaspberry Piがあります。


なぜユンは「標準」のArduinoではないと言うのですか?私はそれが最も一般的ではないかもしれないことに同意しますが、それは確かにArduinoです。
jfpoilpret 14

@jfpoilpretほとんどのArduinosは、avr-gccを介してコンパイル済みC ++を実行し、USB処理チップを備えたatmegaボードです。それらはさまざまな形状/サイズ/パワーで提供されますが、本質的には同じです(メガは別として)。OPがYun /などではなく、これらについて話しているのは明らかであるように見えたため、区別されました。
マニッシュアース14

まもなくリリースされるArduino Treもあります。少なくともすぐに期待しています;-)
クリスO 14

6

短い答えはノーです。

基本的に、最大のATmegaがネイティブに持っているよりも多くのRAMが必要になります。

理論的に、外部ハードウェアを追加し、ATmegaをプログラムしてより強力なCPUをエミュレートし、その上でLinuxを実行することができます。ただし、単純なarduinoでは不可能です。

基本的にAT91SAM3X8E CPUであるArduino DueでLinuxを実行する方がはるかに現実的です。ただし、SRAMとストレージをさらに追加する必要があります。

Arduino Yunのようなものがありますが、それは実際にはATmega32U4と同じPCB上の完全に独立したLinuxモジュールです。


おそらく関連性:組み込みLinuxを実行するには何が必要ですか?


1

Debian、Ubuntu、Open WRT、LEDE、Raspian PIXELなどのLinuxの複数のバリアントを実行できるpcDuinoと呼ばれるボードがあります(ほんの数例を挙げると)。このボードはネイティブのArduinoではなく、Arduino AtHeartであり、LinkSpriteによって作成されています。
pcDuino

Arduinoには、Lininoと呼ばれるLinuxのバリアントの実行をサポートするボードがいくつかあります。

  • Arduinoのユン ATmega32u4とAtherosのAR9331に基づいたマイクロコントローラボードです。Atherosプロセッサは、Linino OSという名前のOpenWrtに基づくLinuxディストリビューションをサポートしています。このボードには、イーサネットおよびWiFiサポートが組み込まれており、USB-Aポート、micro-SDカードスロット、20個のデジタル入力/出力ピン(そのうち7個はPWM出力として、12個はアナログ入力として使用可能)、16 MHzクリスタル発振器、マイクロUSB接続、ICSPヘッダー、3つのリセットボタン。
  • 新しいArduino Tianボードは、32ビットARMCortex®M0 +コアと最大533MHzで動作する高度に統合されたMIPSプロセッサであるQualcomm Atheros AR9342と機能豊富なIEEE802.11n 2x2 2.4 /を備えたAtmelのSAMD21 MCUを搭載しています5 GHzデュアルバンド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ではありません。これがLinuxの移植版がない主要な理由です。マイクロコントローラーは、入力と出力の関係が明確に定義された特定のタスク、アプリケーションを実行するように設計されています。マイクロプロセッサは、オペレーティングシステムでさまざまなアプリを実行するように設計されています。Linuxは最初からメモリ管理ユニットを必要としており、8088または286 PCでは実行できなかったことを思い出してください。次に、μClinuxがありました。これは元々、Palm Pilots用の組み込み68kプロセッサのMotorola DragonBallファミリを対象としていました。特に成功したことはありませんでした。LinuxよりもFreeDOSやMinixを移植する方が成功するかもしれませんが、おそらくアセンブラーの何かですが、マイクロコントローラーでOSをコンパイルすることは非常に非現実的です。おそらく、それは難しい学問的な問題です。


-2

可能ですが、Cで記述する必要があるため、苦痛になります(SDカードシールドや追加のメモリチップなど、必要なハードウェアは言うまでもありません)。 arduinoのCは、ドライバーの追加をサポートしますが、ボイドループ関数の繰り返しを遅くする代わりに役立ちます。(これはあなたが思っているほど大したことではない)(Ontasはまだ開発中であり、常に新しい機能が追加されている)

.inoおよび付随する.hファイルへのリンクについては、ここをクリックしてください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.