0

私は、SD カード コネクタをサポートする評価ボード ( Olimex STM32-P103 ) を持っています。マイクロコントローラーの内部フラッシュではなく、SD メモリーにプログラムを入れたいです。そこから実行します。ブートローダーの問題によると、それが可能かどうかはわかりません!

PS私の目標は、このボードでLinuxを実行してから、アプリケーションを移植することです。

4

4 に答える 4

6

一般的にSDカードからプログラムを実行するには、「すぐに」実行できないことを知っておく必要があります。つまり、アドレス空間のどこかにある実行可能メモリにロードする必要があります。これは、(多かれ少なかれ)単純なブートローダーによって実行されます。最も単純な例では、ブートローダーはSDカードから特定のバイナリを読み取り、それをメモリにコピーすることができます。

そうは言っても、ボードにRAMが20k、フラッシュが128kしかないことを考えると、これについて考える必要があります。それで、あなたのプログラムはどこに行くべきですか?またはそれ以上:最初から128kのフラッシュでプログラムをフラッシュしてみませんか?特に、Linuxはメモリの点で少し「空腹」であることを知っておく必要があります。

あなたの目標がこのボード上で「通常の」Linuxを実行することであるなら、私はあなたが失敗しているのではないかと心配しています。これは、Linuxを実行するにはMMUが必要であり、このボード上のチップはMMUを提供しないためです(STからのデータシートにアクセスせずに調査できる限り)。

運が良ければ、uCLinuxを使用できます。STM32の完成したポートが存在するかどうかはわかりませんが、「STM32uCLinux」の短いグーグル検索に基づいたリソースがあるようです。しかし、uCLinuxを実行できたとしても、システムにアプリケーション用のファイルがあまり残っていないので、少しがっかりするかもしれません。

このMCUで実行されているLinuxを探している理由に応じて、lwIPスタック(ネットワークが必要な場合)と組み合わせたFreeRTOSや、 SDカードの読み取りを探している場合はFullFATなどのFATライブラリなどの他のソリューションがあります。もの。

編集:私が追加したいことの1つは、SDカードからの起動は通常、実行したいイメージ全体を保持するのに十分なRAMがある「より大きな」(それほどではないがわずかに)システムで行うことです。その中に、処理したいデータのためのスペースがまだ残っています。

于 2013-02-19T15:55:31.860 に答える
3

SDカードのデータはメモリマップされていないため、直接実行することはできません。

カードからRAMにデータを動的にロードして実行することができます。WindRiverのVxWorksRTOSは、オブジェクトモジュールの動的なロードとリンクをサポートしています。これを直接サポートするCortex-Mに拡張できるOSは他にありませんが、独自のOSを作成することは可能です。

ただし、マイクロコントローラーの場合、このアイデアを使用することはお勧めできません。Cortex-Mでの最適なパフォーマンスは、コードがオンチップフラッシュにあり、データがRAMにある場合に達成され、データと命令を別々のバスで同時にフェッチできるようにします(ハーバードアーキテクチャ)。RAMからコードを実行すると、パフォーマンスが大幅に低下します。そのため、データと命令を同じバス上で順番にフェッチする必要があります。

このボードはLinuxの実行にはまったく適しておらず、128Kバイトのプログラムフラッシュしかなく、20KバイトのRAMはまったく実現可能ではありません。最小のLinuxディストリビューションでも、600KbのRAMに加えて、アプリケーションコードに必要なものがすべて必要です。uClinuxは、外部RAMとフラッシュを備えたハイエンドSTM32でほぼ実行できますが、同じバス競合パフォーマンスの影響を受け、MMUのないLinuxには、Linuxを使用することの1つの大きな利点がまったくありません。ボード上のパーツには外部メモリインターフェイスがないため、Linuxをサポートするように拡張することはできません。

OSが必要な場合は、たとえばuC / OS-II、FreeRTOS、emBOSなどのRTOSを検討してください。

于 2013-02-19T21:21:00.893 に答える
3

「ベアメタル」はSDカードから起動できない可能性が非常に高いため、これを実装するSTMのオンボードフラッシュ(通常は「ブートローダー」と呼ばれる)にいくつかのコードが必要になります。

そのコードを作成する必要があります。これは、STM のオンボード周辺機器を使用して SD カードと通信する方法を理解し、ファイル システムで実行するファイルを見つけ (これも実装する必要があります)、ロードします。それ。

STM 標準周辺ライブラリへのリンクを入れたかったのですが、ダウン (移動中) のようです。:/

于 2013-02-19T14:42:39.027 に答える