可能であれば、ArduinoでLinuxをコンパイルするには何が必要ですか?

ArduinoでLinuxを実行することは可能ですか?はいの場合、どのような手順と制限を考慮する必要がありますか?そうでない場合、これを妨げる制限は何ですか?

コメント

回答

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

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

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

コメント

  • "はありません。おそらく"には追加のRAMが必要ですが、必要には追加のRAMが必要です。 Linuxには1MB以上のRAMが必要です。また、MMUがないということは、' MMUをエミュレートする(またはucLinuxを実行する)方法を理解する必要があることを意味します。現実的には、せいぜい、'は、atmegaでより高性能なプロセッサをエミュレートすることになります。これは、ネイティブコードよりも桁違いに遅くなります。 arduinoの期限でさえ'必要なRAMの近くにはありません。
  • また、ATmega328Pには2 KBのSRAMがあり、ATmega2560Pには8KBしかありません。これはRAMの4倍であり、16倍ではありません。

回答

十分なRAMがありません。また、フラッシュメモリから起動するように教える必要があります。これには、ブートローダーの書き換えが含まれます。

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

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

コメント

  • ユンが"標準" Arduino?私はそれが最も一般的ではないかもしれないことに同意しますが、それは確かにArduinoです。
  • @jfpoilpretほとんどのArduinoは、avr-gccを介してコンパイルされたC ++を実行し、USB処理チップを備えたatmegaボードです。さまざまな形/サイズ/パワーがありますが、'は基本的に同じです(メガは別として)。OPがYunなどではなくこれらについて話していることは明らかでした。したがって、違いがあります。
  • '間もなくリリースされる Arduino Tre 、少なくとも私は'すぐに'を期待しています;-)

回答

短い答えはノーです。

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

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

基本的にAT91SAM3X8ECPUであるArduinoDueで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の例:

  • ArduinoYún ATmega32u4とAtherosAR9331をベースにしたマイクロコンピュータボードです。Atherosプロセッサは、LininoOSという名前のOpenWrtに基づくLinuxディストリビューションをサポートしています。このボードには、イーサネットとWiFiのサポートが組み込まれており、USB-Aポート、micro-SDカードスロット、20個のデジタル入力/出力ピン(そのうち7個はPWM出力として、12個はアナログ入力として使用できます)、16MHz水晶水晶発振器、マイクロUSB接続、ICSPヘッダー、および3つのリセットボタン。
  • 新しい Arduino Tian ボードは、32ビットARMCortex®M0+コアとQualcomm AtherosAR9342を搭載したAtmelのSAMD21MCUを搭載しています。は、最大533MHzで動作する高度に統合されたMIPSプロセッサであり、機能豊富なIEEE802.11n 2×2 2.4 / 5GHzデュアルバンドWiFiモジュールです。 Qualcomm Atheros MIPSは、Lininoという名前のOpenWRTに基づくLinuxディストリビューションをサポートしています。 Arduino Tianには、プロジェクトの構築に役立つ4GBのeMMCメモリも組み込まれています。消費電力を削減するために、MCUからLinuxポートのオン/オフを切り替えることができます。
  • Arduino Industrial 101 は評価ボードですArduino 101LGAモジュール用。 ATmega32u4マイクロコントローラーはベースボードに統合されています。このモジュールは、LininoOSという名前のOpenWRTに基づくLinuxディストリビューションをサポートしています。ボードにはWiFi(IEEE 802.11b / g / n動作最大150Mbps1x1 2.4 GHz)、3つのGPIO(そのうち2つはPWM出力として使用可能)、4つのアナログ入力、1つのUSB、1つのイーサネット信号がピンに組み込まれていますヘッダーと内蔵のDC / DCコンバーター。組み立てガイドを確認し、マイクロUSBケーブルを使用してボードをコンピューターに接続するだけで開始できます。

回答

これは数年前のことですが、Arduinoがより多くのRAMと32ビットATMegaを取得するため、おそらくより適切です。 AVRなど。ここで最も人気のある回答には特にない明らかな問題があります。ArduinoはAVR MICROCONTROLLER 、マイクロプロセッサではありません。これがLinuxのポートがない主な理由です。マイクロコントローラは特定のタスク、入力と出力の関係が明確に定義されているアプリケーションを実行するように設計されています。マイクロプロセッサは実行するように設計されていますオペレーティングシステム上のさまざまなアプリ。最初から、Linuxにはメモリ管理ユニットが必要であり、8088または286 PCでは実行できなかったことを思い出してください。その後、PalmPilots用にMotorolaDragonBallファミリーの組み込み68kプロセッサをターゲットにしたμClinuxがありました。 。特に成功したことはありません。FreeDOSやMinixの移植は、Linuxよりも成功する可能性があります。おそらくアセンブラーの何かですが、マイクロコントローラにOSを実装することは非常に非現実的です。おそらくそれは「挑戦的な学術的問題ですが、特にマイクロプロセッサの代わりにマイクロコントローラを使用するという目的に反します。

回答

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

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です