Linux on ARM Cortex-M3シリーズ


29

私はARMが初めてで、すべての異なるシリーズと少し混同しています。

低電力のゲートウェイ(イーサネット、wifi ...)を構築する必要があるため、cortex-Mまたはcortex-Rが出発点として適していると思います。しかし、Linuxをサポートするcortex-m3(非常に人気が高いようです)などの開発ボードは見つかりませんでした。

linuxM3の可能があるので、たとえば、mbedLPCXpressoの周りにLinuxプロジェクトがないのはなぜだろうか。

誰も私が探している開発ボードを教えてもらえますか、または「cortex m」+ linuxがより多くの答えを出せない理由を説明できますか?


NXPには、特定のプロセッサについて不明な他のプロセッサのLinuxサポートがあります。
ケニー

2
どのくらい低電力にする必要がありますか?Freescale iMX283をベースにした1/2ワットの完全なLinuxシステムを構築することができました。イーサネットなしの通常負荷時は1 / 2W、イーサネット付き1W、全負荷時は1.5W未満のイーサネット...イーサネットPHYは、通常負荷時のシステム電力の半分です。
ダロン

回答:


18

ARM Cortex-M3について:

LinuxにはMMU(メモリ管理ユニット)が必要です。ARM Cortex-M3にはありません。メインラインLinuxカーネルをARM Cortex-M3で実行することはできません。

ただし、uCLinuxと呼ばれるMMUlessプロセッサ用のLinuxカーネルのバリアントがあります。

Linux on M3ガイド

uCLinuxに関するSTのアプリケーションノート

しかし、他の人が指摘しているように、LinuxはM3上で実用的ではないでしょう。外部RAMなしでは実行されません。最大のCortex-M3パーツでもフラッシュは1MBしかないため、追加のストレージも必要になる可能性が高いと思います。


12

Cortex-Mは仕事に任せていません。ARM926EJ-Sが必要です

Cortex-MはLinux向けに設計されていないため、「Cortex-M + Linux」を検索しても多くの回答が得られません。LinuxのようなフルOSを実行できると一般に考えられている最もパワーの低いARM は、ARMv5アーキテクチャを使用するARM926EJ -Sシリーズです。これは、広く採用されている(多くのNASボックス、古いスマートフォン、Chumby Classicに搭載されている)クラシックプロセッサであり、多くのサポートがありますが、後継機よりも少し効率が劣ります。ARMv5アーキテクチャを備え、数百MHzで動作します。

これは本当にあなたが欲しいものですが、あなたはそれを持つことはできません

本当に必要なプロセッサはCortex-A5です。ARM11に取って代わる(そしてそれよりも少し強力になる)ように設計されていますが、はるかに電力効率が良く、より最新のプロセスで動作します。(注:AppleのA5とは関係ありません。これは特別なCortex-A9です)これは2009年に発表され、「いつでも」シリコンが登場するのを待っています。スマートフォンが市場を牽引し、より強力なA9と古いARM11の間の市場は魅力的ではないため、このプロセッサ用の汎用SoCをまだ誰も作成していない 詳細については、このディスカッションを参照してください:http : //forum.beyond3d.com/archive/index.php/t-60145.html

より強力なオプション

ARM11のARMv6は、もう少し効率的ですが、より強力です(したがって、電力バジェットの節約が見られない場合があります)。iPhone 3GやiPod Touch、Kindle、Zuneなどの古いスマートフォンに電力を供給し、500〜800 MHzで動作します。最新のアーキテクチャ、ARMv7はCortexシリーズです。Cortex-A8および-A9は、800MHz〜1.2GHzで最新のスマートフォンおよびタブレットに電力を供給しているため、ミニマリスト設計を目指す場合は、より小型で低速のプロセッサを使用することをお勧めします。これらのプロセッサのワットあたりのパフォーマンスは素晴らしいですが、ARMv5パーツを使用する方が安全かもしれません(確かに複雑ではありません)。


2
注:Cortex-A5は現在出荷中であり、AtmelはそのバージョンのLinuxサポートを提供すると主張しています。atmel.com
sama5d3

10

Linux(uClinux)をサポートするCortex-M3プラットフォームについては、このサイトを確認してください。

http://www.emcraft.com/

次のCortex-M3 MCUでuClinuxを正常に実行します:NXPのLPC1788、STmicroのSTM32F2、ActelのSmartFusion。 。

確かに、Linux(uClinuxを含む)を実行するには外部RAMが必要です-Cortex-Mの統合SRAMは、超小型のLinux構成でも十分な大きさではありません。実際の構成には、少なくとも4MBの外部RAMが必要です。実際、アプリケーションが「機能」を必要とする場合、Linuxはあらゆるものをサポートしており、RAMの容量を減らしたのではなく、増やしたのは残念です。

外部RAMに使用する特定のデバイスに関しては、すべて特定のMCUが提供する外部メモリインターフェイスによって定義されます。STM32FおよびSmartFusionはSRAMのみをサポートします。$ 6-7で16MB 70ns PSRAM(より高速な操作のためのページモード)を取得できます。LPC1788は、より高速なSDRAMメモリをサポートしています。Kinetis K70はDDR2(64MBデバイスの場合は5ドル)などをサポートします。これらのメモリはすべて、静的な時間にわずかuAレベルで電力を消費します。

起動可能なLinuxをロードするには何かが必要ですが、これには何でもかまいません-ネットワーク、SDカード、SPI EEPROM、NORまたはNANDフラッシュなど。

全体として、LinuxはCortex-M3デザインの完全に実用的なオプションであると思います。

更新

デバイスがほとんどの時間アイドル状態になっている消費電力に敏感なアプリケーションがたくさんありますが、実行時には、小さなRTOSを使用して簡単に達成できない多くのことを実行できる必要があります。安全な接続、VLAN、TCP / IPトンネリング、SNMP、SDカード、USBデバイス/ホスト、WiFIなど、および要件のリストは延々と続く。

より小さなRTOSでは、これらの機能の一部が利用可能になりますが、一部は利用できませんが、それはストーリーの一部にすぎません。お客様にますます多く見られるのは、Cortex-M3を使用する組み込み設計では、1つまたは2つの高度な機能だけでなく、単一のデバイスから多くの機能が必要なことです。RTOSがすぐに使用できる設計に必要なすべての機能を提供している場合でも、すべてをオンチップメモリ​​に詰め込むのは困難です。uClinuxかどうかはともかく、トレンドは、ますます多くのCortex-Mベースの設計が外部メモリを使用するようになるだろうと推測しています。もちろん、デザインで外部RAMを取得すると、uClinuxがさらに意味を持ち始めます。

Cortex-Mが提供する低処理能力(Linuxカーネルの要件に対して測定)に関して、最近の経験として、Freescale K70 MCUでuClinuxを有効にしたところです。これはCortex-M4です(Cortex-M3にハードウェアFPおよびDSPユニットを加えたものと同じです)。2x8KBオンチップキャッシュを備えた、高密度RAM(DDR2)およびフラッシュ(NAND)へのオンチップインターフェイス。120Mhz Cortex-Mコア、150Mhzの部品がまもなくリリースされます。

Linux(uClinux)は、このデバイス上で美しく動作します。「dhrystone」を使用すると、250MhzのFreescale PowerPCボックスで約50%のパフォーマンスが得られます。高速起動、大量のRAM(TWR-K70モジュールは128MBのRAMと256MBのNANDフラッシュを提供)、ネットワーキング、JFFS2、フレームバッファー、SSH、HTTPD、Qt / E-これらはすべてK70で正常に動作します。全体的なユーザーエクスペリエンスは、MMUフルマイクロプロセッサ上の通常の「組み込みLinux」です。

以下は、Freescale Kinetis K70 Cortex-M4 MCUで実行されているライブuClinuxセッションのビデオへのポインターです。

http://www.youtube.com/watch?v=UZjJrLG9CeA


5

外部メモリ(RAMとFlashの両方)に対する何らかのサポートがなければ、上記のデバイスの組み込みリソースに最小のLinuxディストリビューション(たとえばuclinux)を適合させることは不可能です。

これは通常、追加のチップを接続するために32ビットバスが公開されていることを意味します。これが、Linuxを実行するために使用されるメガバイト範囲の追加のRAMとフラッシュチップを備えたLinuxシングルボードコンピューター(SBC)を見るのがより一般的である理由です。あなたがリストしたマイクロコントローラーはこれを提供しません。私の考えでは、cortex-m0 / m3は、8ビットマイクロでは不十分(またはほとんど)でないアプリケーション向けです。したがって、必要なリソースはすべてチップに組み込まれています。

この質問に答えるには、組み込みLinuxの要件を分析するのが賢明でしょう。これは通常、ブートローダー、カーネル、およびファイルシステム、そしてもちろんそれを実行するために必要な実際のユーザーアプリケーションとライブラリを適合できることを意味します。これを合計すると、有用なことを行うには、数メガバイトのRAMとフラッシュが必要になることがすぐにわかります。


3

stm32にはMMUがないため、ucLinuxを使用する必要があります。

ucLinuxの簡単なGoogleは、正しい方向にあなたを送ります。 https://www.google.com/search?q=stm32+uclinux

しかし、一方で、Linuxはこの種の小さなmcuでは実際にはそれほど有用ではなく、ほとんどの場合、それを実行するには外部RAMとSDカードが必要です。そして、Rasperry PIのようなプロジェクトで値札がクローズアップされるので、ニーズを考える必要があります。

別の小さなOSの方が良いでしょうか?Linuxがどこにでもあると便利です...


3

Linuxを実行する外部メモリでCortex-M3を使用することが実際に役立つスマートミータリングなどの低電力アプリケーションがいくつかあります。総コスト(ボードのコストはコアの高速化とほぼ同じ)ではなく、エネルギー消費の観点から考えてください。

バッテリーで生活していて、ほとんどの時間アイドルモードになっている場合は、1分ごとに測定を行ってからネットワーク経由で送信すると、Linuxが提供するインフラストラクチャをTCPに使用できると便利です/ IP、暗号化など。

今年の組み込みの世界展示会で、Pengutronixは、外部RAMとアイドルモード時の消費電力1.6mWのCortex-M3上でuCLinuxを実行するEnergyMicroのプロトタイプボード上のLinuxを示しました。Energy Microのポートフォリオには、RAMからコードを実行しながら32MHzで実行する場合に約16mWの電力を必要とする低電力アプリケーション向けに最適化された信じられないほどの低電力Cortex-M3およびM4 MCUがあります。これにより、大型で高速のプロセッサがエネルギー予算に収まらないさまざまなバッテリー駆動デバイスでLinuxを有効にできます。一方、これらからも多くの処理能力は得られません...

したがって、基本的にバッテリを使用していて、処理能力をあまり必要としない場合、これはあなたにとってのソリューションかもしれません。そうでない場合は、MMUを備えたより大きなARMコアを選択するかもしれません。


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