最小の組み込みLinuxディストリビューション?


19

私はそこにいる専門家に尋ねるのが好きです。

  • フラッシュメモリ〜700Kb
  • ラム〜256Kb
  • プロセッサ:ハイエンドアーム皮質M3(STM32ファミリなど)

必要なモジュール:-カーネルコア-基本ドライバーセット:USB /ネットワーク(WiFi用-APなし、クライアントのみ、セキュリティなし)/ SPI / Uart / I2C

これは可能ですか、それとも夢を見ていますか?

アイデアは、5ドルのハイエンドCortexM3を使用し、外部メモリを使用しないことです。これにより、SDIO / WiFiなどの準備が整ったドライバーを楽しむことができます。

  • WiFiに関する説明を追加して質問を更新しました。Wi-Fiは、単純で、ミルクライアントの実行であるという意味で。派手なものは何もありません。おそらく私がそれに合うなら泣きます。

  • 別の更新:uCLinuxはどうですか?

回答:


26

あなたは夢を見ていると思います。主な問題は、RAMの制限です。

2004年に、Eric Beidermanは2.5 MBのRAMカーネルを起動し、多くの機能を削除しました。

ただし、それはx86でのことであり、ARMのことです。そこで、「汎用性のある」プラットフォーム(最も単純なプラットフォームの1つ)向けに、可能な限り最小のARMカーネルを構築しようとしました。探しているオプション(USB、WiFi、SPI、I2C)を含むすべての構成可能なオプションをオフにし、どれだけ小さくなるかを確認しました。今、私はここに、カーネルを参照していますが、これは含まれていない任意のユーザースペースコンポーネントを。

良いニュース:フラッシュに収まります。結果のzImageは383204バイトです。

悪いニュース:256kBのRAMでは、起動できません:

$ size obj/vmlinux
  text     data     bss     dec     hex filename
734580    51360   14944  800884   c3874 obj/vmlinux

.textセグメントは使用可能なRAMよりも大きいため、カーネルは解凍できず、起動用のメモリを割り当てることはできません。

回避策の1つは、システムでサポートされている場合(つまり、Flashから直接命令をフェッチできる場合)、インプレース実行サポート(CONFIG_XIP)を使用することです。ただし、それは、カーネルがフラッシュに非圧縮で収まる必要があり、734kB> 700kBであることを意味します。また、.dataセクションと.bssセクションの合計は66kBであり、他のすべて(つまり、カーネル内のすべての動的に割り当てられたデータ構造)に約190kBを残します。

それはただのカーネルです。必要なドライバー、またはユーザー空間なし。

したがって、はい、もう少しRAMが必要になります。


1
素晴らしい答え..裸のLinuxカーネルがこれほど重いことを知って驚いています。フォローアップの質問があります。Linuxドライバーを他のOSで使用できるラッパーはありますか?私がLinuxで気に入っているのは、ドライバーの可用性です。触れるハードウェアにはすべてLinuxドライバーがあり、これらを移植するのは常に苦痛です。Linuxに興味がある唯一の理由はドライバーです。
フランク

カーネルブートリンクについてのメモですが、次のEricの投稿で、圧縮されたカーネルイメージを190Kに圧縮し、360Kで非圧縮にしたので、理論的にはフラッシュに非圧縮で収まるようにしました。詳細:elinux.org/Linux_Tinyしかし、プロジェクトのステータスはわかりません。
ミハイロ

5

IMO、あなたは夢を見ています。特にUSB、ネットワーク、802.11 / wifiで。私はあなたがそれをできるとは思わない、そしてM3は本当にストレッチだ。

OpenWRTは、私がネットワーク用に知っている最小で最も組み込み可能なLinuxディストリビューションの1つであり、特にWifiで2MB未満にすることは困難です。

それが本当に必要な場合は、ハイエンドのARMチップを検討するか、現在ルーターで一般的なBroadcomまたはAtheros SoCを使用してください。


あなたは非常によく、右、しかし私は..私はすべてのプロトコル、DCHP / IPおよび基本的なソケットを必要としない...のWiFiを明確にして質問を更新することができる
フランク

4

プロセッサにMMUがありますか?見たくない場合は、http//www.uclinux.org/参照してください。記載されているよりもはるかに小さいカーネルサイズが得られます。一部のCortexM3 Atmelチップで動作するため、ご使用のデバイスで動作する可能性があります。私はそれを使用していないので、これは推測にすぎません。Doh、その質問が更新されたのを見ました-MMUがない場合(おそらくないでしょう)、「通常の」カーネルを使用できず、ucLinuxを使用する必要があります。


@mihaloはuclinux +1を指摘してくれてありがとう。私はそれについて質問しました..あなたが手を貸すことができれば感謝します。-
フランク

残念ながら、これについてはあまり経験がなく、ucLinuxポートを調べましたが、そこに記載されているすべてのボードには外部RAMが搭載されています。私が見た最小のカーネル(非圧縮)はADI Blackfin用でした-400KBのようなものですが、それはARMではなく、ARMの場合はかなり大きくなる可能性があります。Atmels ARMマイクロプロセッサの場合、約1.5 MBで、すべて外部RAMを使用しました。
ミハイロ

見回してくれてありがとう
フランク

2

小規模な非MMUプラットフォームでPOSIX準拠が本当に必要な場合は、NuttXを代替として検討することをお勧めします。


3
それはかなりきれいに見えますが、より完全な答えにするために、Linuxと比較して賛否両論を含める価値があるかもしれません。
PeterJ 14

2

詳細は覚えていませんが、uCLinuxを実行するSTM32F4を搭載したボードを製造している会社があります。ソフトウェアはダウンロード可能ですが、それらのボードには外部RAMとフラッシュの両方があります。

補足として、価格が非常に高いため、PiまたはPine64を取得するほうが学習経験として必要な場合を除きます。私たちの会社はそれを調査し、開発コストを考慮して、stm32f4を使用して組み込みLinuxで何かを実行する場合、パーツのコストを数えるだけで経済的に実行不可能であると判断しました。


BOMは、M3 / M4上でuClinuxを実行するためのコストが含ま優秀論文- electronicdesign.com/embedded/...
スコットサイドマン

0

uCLinuxはおそらく動作します。ただし、MMUがないため、システムのメモリ保護はありません。これは、アプリケーションのクラッシュがシステム全体をダウンさせる可能性があることを意味します。MMUがなくてもメモリの断片化の問題が発生する可能性があります。TIシタラスの1つを見てみませんか?それらはまだかなり安く、それらでフルLinuxを実行できます。

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