参考記事
序文
-
qemu-virt64-aarch64
最近、RT-Thread を使用してaarch64 プラットフォーム、つまりqemu-virt64-aarch64
有効にする必要がある ARM64 プラットフォームの一部のネットワーク機能を検証する必要があります。 -
開発環境で使用される ubuntu 20.04 では、ネットワーク ドライバーとコンポーネントを有効にした後、qemu ネットワーク デバイスを正常に初期化できないことがわかりました。
-
検証の結果、qemu を更新する必要があることがわかりました
qemu-system-aarch64
。更新方法については、以前の記事「
qemu ソース コードから qemu-system-aarch64 をコンパイルする方法」を参照してください。
開発環境
-
をコンパイルするには
qemu-virt64-aarch64
、Windows 環境ではなく、ubuntu 20.04 Linux 環境を使用することをお勧めします。 -
特定のコンパイル環境リファレンス: RT-Thread 5.0.1 qemu-virt64-aarch64 はコンパイルの問題を解決します
-
set_env.sh
#!/bin/bash
export RTT_CC=gcc
#export RTT_EXEC_PATH=/home/zhangsz/linux/tools/gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf/bin
export RTT_EXEC_PATH=/home/zhangsz/linux/tools/gcc-arm-11.2-2022.02-x86_64-aarch64-none-elf/bin
export RTT_CC_PREFIX=aarch64-none-elf-
export PATH=$PATH:$RTT_EXEC_PATH
echo "CC => ${RTT_CC}"
echo "PREFIX => ${RTT_CC_PREFIX}"
echo "EXEC_PATH => ${RTT_EXEC_PATH}"
source set_env.sh
aarch64-none-elf-
、ツールチェーンの使用に注意してください。そうしないとコンパイルが失敗する可能性があります。
qemu-virt64-aarch64 ネットワークを開く
-
デフォルトの RT スレッド BSP は
qemu-virt64-aarch64
ネットワーク機能を有効にするため、手動で有効にする必要があります。 -
scons --menuconfig
グラフィカル設定インターフェイスに入る
.config - RT-Thread Project Configuration
> AARCH64 qemu virt64 configs
[*] Using VirtIO NET
-
ネットワーク コンポーネントを有効にする: SAL、ネット デバイス、LWIP
-
tcp スレッドと lwip スレッドのスタック サイズを適切に増やす
-
Using VirtIO NET
ドライバー フレームワークが有効になっていることを確認します
.config - RT-Thread Project Configuration
> RT-Thread Components
> Device Drivers
> Using VirtIO device drivers
--- Using VirtIO device drivers
VirtIO Version (VirtIO v1.0) --->
-*- Using VirtIO NET
コンパイルして実行する
-
sconsはコンパイル可能で、現在ツールチェーン
gcc-arm-10.2-2020.11-x86_64-aarch64-none-elf.tar.xz
、gcc-arm-11.2-2022.02-x86_64-aarch64-none-elf.tar.xz
qemuともに正常に動作することを確認しています。 -
実行結果
まとめ
-
qemu の起動後にネットワーク デバイスが見つからない場合: たとえば
virtio-net0 Network Interface 1
、qemu のバージョン、つまりqemu-system-aarch64
のバージョン (7.0 以降など) を更新する必要がある場合、最新バージョンは 8.0 である必要があります。 -
wget
https
qemu ネットワーク コンポーネントを開いた後、対応するネットワーク機能 (など)を実現するには、ネットワーク コンポーネントをさらに使用する必要があります。