RT-Thread 5.0.1 qemu-virt64-aarch64 はネットワークの問題を解決します

参考記事

序文

  • qemu-virt64-aarch64最近、RT-Thread を使用してaarch64 プラットフォーム、つまりqemu-virt64-aarch64有効にする必要がある ARM64 プラットフォームの一部のネットワーク機能を検証する必要があります。

  • 開発環境で使用される ubuntu 20.04 では、ネットワーク ドライバーとコンポーネントを有効にした後、qemu ネットワーク デバイスを正常に初期化できないことがわかりました。

  • 検証の結果、qemu を更新する必要があることがわかりましたqemu-system-aarch64。更新方法については、以前の記事「
    qemu ソース コードから qemu-system-aarch64 をコンパイルする方法」を参照してください。

開発環境

#!/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.shaarch64-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.xzgcc-arm-11.2-2022.02-x86_64-aarch64-none-elf.tar.xzqemuともに正常に動作することを確認しています。

  • 実行結果

ここに画像の説明を挿入

まとめ

  • qemu の起動後にネットワーク デバイスが見つからない場合: たとえばvirtio-net0 Network Interface 1、qemu のバージョン、つまりqemu-system-aarch64のバージョン (7.0 以降など) を更新する必要がある場合、最新バージョンは 8.0 である必要があります。

  • wget httpsqemu ネットワーク コンポーネントを開いた後、対応するネットワーク機能 (など)を実現するには、ネットワーク コンポーネントをさらに使用する必要があります。

おすすめ

転載: blog.csdn.net/tcjy1000/article/details/131499396