web-dev-qa-db-ja.com

QEMUを作成する方法ARMカスタムペリフェラルとメモリマップを備えたマシン?

Cortex-M3 CPUのコードを書いていて、qemu-armバイナリを使用してユニットテストを実行しています。今のところ、すべてがうまくいきます。しかし、qemu-system-armを使用してシステム全体をテストできるかどうか疑問に思っています。つまり、希望するメモリマップを定義し、最終的には希望する周​​辺機器のソフトウェアの模倣を定義するqemuのカスタム「マシン」を作成したいのですが、そのようなモジュールの例はありますか?これに関する情報はほとんど見つかりませんでした。 qemuソースツリーのhwディレクトリでいくつかのソースコードを読みましたが、ほとんどコメント化されていません。qemuに新しいマシンを追加する方法と、アドレススペースにペリフェラルを追加する方法を理解しているかどうかはまだわかりません?

28
mucka

独自のマシンを追加するには、マシンのパラメータと周辺機器を含む少なくとも1つのソースファイルを作成する必要があります。その後、qemu/hw/arm /の下のMakefile.objs内にエントリを追加します。 STM32 P103マシンエントリ

Olimex STM32 P103開発ボードの例を見てみましょう: Olimex STM32 P103開発ボードコード 。 105行目と106行目には、flash_sizeとram_sizeがあります。 114行目と115行目には、コードがLEDをGPIO Aピン0に接続することを追加しています。130行目には、「Olimex STM32 p103 Dev Board」というマシンの説明があります。 131行目では、マシンの初期化関数:stm32_p103_init。より完全なマシンの別の例: Pebble machine code

周辺機器については、stm32のケースを考慮して、各ファミリコードでインスタンス化されます。 stm32f1ファミリ: stm32f1xx.c 、stm32f2ファミリ:stm32f2xx.c、stm32f4ファミリ:stm32f4xx.c。周辺機器自体は、通常は示唆的な名前を持つドライバーに実装されています:stm32f2xx_adc.c、stm32f2xx_crc.cなど。新しい周辺機器を追加するパッチの例: STM32へのADCの追加

28
ViniCoder

シミュレーションにJumper Virtual Labを使用できます。チェックアウト このブログ ARM mBed。

0