RSIC-V ツールチェーンの概要とそのインストールチュートリアル

序文

(1) この一連の記事は、Wang Chen 教師の RISC-V コースの後に記録された学習ノートです。
(2)コースの関連コードへのgitee リンク
(3) PLCT 研究室インターンの長期募集:募集情報リンク
(4) RSIC-V ツールチェーンの構成時に、多くの落とし穴を踏みました。インターネット上にも同種の記事があり、riscv-gnu-toolchainウェアハウスの readme も説明されています。しかし、私はそれでもあえて、初心者でも理解できる RSIC-V ツールチェーン構成チュートリアルを書きたいと思います。
(5)次の 2 つの点が強調されます。
<1>RSIC-V は比較的最先端の製品であるため、中国語へのサポートがあまり高くないため、Linux 環境で RSIC-V 関連ファイルを処理する場合は、できるだけ英語のパスを使用することをお勧めします。
<2>Windows と Linux では改行文字が異なりますが、そのためかコンパイル時におかしなバグが多く発生します。したがって、私のように、最初に Windows でいくつかの操作を実行してから、それを Linux に渡すことはしないでください。

クロスコンパイル ツールチェーンが必要な理由

(1) 私たちが初めてプログラミング言語を学んだとき、私たちはいつもコンパイラーを直接使用して次のコードを書きました。その後、コンパイラの実行ボタンをクリックします。このプロセスでは、この c ファイルをコンパイルし、この c ファイルを実行するマシンはすべて同じコンピューターであることがわかります。これはローカル コンパイルと呼ばれます。

#include <stdio.h>
int main()
{
    
    
	printf("hello world\r\n");
	return 0;
}

(2) ただし、組み込み開発プロセス中。私たちは皆、コンピューター上でプログラムを作成し、コンパイラーを使用してプログラムをコンパイルし、実行可能プログラムを開発ボードに書き込みます。プログラムはコンピューター側でコンパイルされ、最終的な実行可能ファイルは開発ボード上にあることがわかります。これはクロスコンパイルと呼ばれます。
(3) 一般的に言えば、私たちのコンピュータはすべて X86 アーキテクチャに基づいています。RSIC-V プログラムをコンパイルする必要がある場合、ローカルコンパイル ツールを使用することはできません。したがって、現時点ではクロスコンパイル ツール チェーンを使用する必要があります。

Linux の魔法を起こす方法

(1) RSIC-V の多くの操作は外部ネットワーク上で実行され、開発プロセスは Linux で開発する必要があるため。したがって、私はここで、Linux にも世界にアクセスする能力があることを提案します。
(2) 注意すべき点は、以下のブログをフォローする場合は Windows の魔法が必要であり、そうでない場合は無力になるということです。
(3) Ubuntu 仮想マシン共有ホスト VPN (NAT またはブリッジング用)

クロスコンパイルツールチェーンのインストール方法

方法1

(1) Ubuntu 20.04 環境の場合は、次の手順を直接実行して、公式に提供されている GNU ツール チェーンと QEMU エミュレータをインストールできます。
(2) ここで注意すべき点の 1 つは、この時点でインストールされた gcc-riscv64-unknown-elf ツール チェーンは C ライブラリ関数をコンパイルできないようだということです。したがって、3 番目の命令を実行するには、gcc-riscv64-linux-gnu ツール チェーンを使用します。
(3) これら 2 つのツール チェーンの違いは何なのかと尋ねる人もいるかもしれません。
<1>riscv32-unknown-elf-gcc、riscv64-unknown-elf-gcc: riscv-newlib ライブラリ (組み込み指向 C ライブラリ) を使用し、静的リンクのみをサポートし、動的リンクはサポートしません。
<2>riscv32-unknown-linux-gnu-gcc、riscv64-unknown-linux-gnu-gcc: glibc 標準ライブラリを使用し、動的リンクをサポートします。

sudo apt update
sudo apt install build-essential gcc make perl dkms git gcc-riscv64-unknown-elf gdb-multiarch qemu-system-misc
sudo apt install gcc-riscv64-linux-gnu

方法 2

(1) ツールチェーンを公式倉庫から直接引き出します
繰り返しになりますが、次の操作を実行するときは英語以外のパスを使用しないでください。

git clone https://github.com/riscv/riscv-gnu-toolchain

(2) ウェアハウスをプルした後、依存関係ファイルをインストールする必要があります。Linux ディストリビューションごとに動作が異なるため、バージョンに応じて対応するコマンドを実行する必要があります。

# Ubuntu 
sudo apt-get install autoconf automake autotools-dev curl python3 python3-pip libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev libexpat-dev ninja-build git cmake libglib2.0-dev
# Fedora/CentOS/RHEL
sudo yum install autoconf automake python3 libmpc-devel mpfr-devel gmp-devel gawk  bison flex texinfo patchutils gcc gcc-c++ zlib-devel expat-devel
# Arch Linux 
sudo pacman -Syyu autoconf automake curl python3 libmpc mpfr gmp gawk base-devel bison flex texinfo gperf libtool patchutils bc zlib expat
#  OS X
brew install python3 gawk gnu-sed gmp mpfr libmpc isl zlib expat texinfo flock

(3) 上記 2 つの手順を完了したら、必要に応じて gcc コンパイラをインストールする必要があります。RISC-V 組み込み開発に参加したい場合は、Newlibライブラリをインストールし、ライブラリを 1 つ実行するだけですmake大規模な RSIC-V プロジェクトを開発および使用している場合はLinux cross-compiler、コンパイル時に入力しますmake linux

cd riscv-gnu-toolchain/
mkdir build
cd build/
# 下面部分,需要你看需求来执行
# --------------------------------------------------------
# 如果只要进行64位的RISC-V的嵌入式系统开发,执行如下命令
../configure --prefix=/opt/riscv
# 这里的N是数字,表示多少核同时编译,N越大编译速度越快。
# 如果超出了虚拟机所分配的最大内核数量,将只会依据最大内核数量编译
sudo make -JN
# --------------------------------------------------------
# 如果还要进行32位的RISC-V的嵌入式系统开发,执行如下命令。
# 这个既可以进行64位开发,也可进行32位开发
../configure --prefix=/opt/riscv --enable-multilib
# 这里的N是数字,表示多少核同时编译,N越大编译速度越快。
# 如果超出了虚拟机所分配的最大内核数量,将只会依据最大内核数量编译
sudo make -JN
# --------------------------------------------------------
# 如果只要64位大型RSIC-V项目开发,执行如下命令
../configure --prefix=/opt/riscv
# 这里的N是数字,表示多少核同时编译,N越大编译速度越快。
# 如果超出了虚拟机所分配的最大内核数量,将只会依据最大内核数量编译
sudo make Linux -JN
# --------------------------------------------------------
# 如果还要进行32位大型RSIC-V项目开发,执行如下命令
# 这个既可以进行64位开发,也可进行32位开发
../configure --prefix=/opt/riscv --enable-multilib
# 这里的N是数字,表示多少核同时编译,N越大编译速度越快。
# 如果超出了虚拟机所分配的最大内核数量,将只会依据最大内核数量编译
sudo make Linux -JN

仮想マシンのコア数に関する情報

仮想マシンのコア数の確認と設定方法

(1) 仮想マシンのシャットダウン→仮想マシンの編集→コア数の設定

ここに画像の説明を挿入します
ここに画像の説明を挿入します

仮想マシンのコア数の一般的な設定は何ですか?

(1) 一般に、仮想マシンのコア数は実際のコンピュータのコア数の最大でも半分です。
(2) 実際のコンピュータコア数は次のようにして確認できます。

ここに画像の説明を挿入します
ここに画像の説明を挿入します

RSIC-VアーキテクチャでCプログラムを実行

コンパイル

(1) 以下の要件に従ってプロジェクトをコンパイルします。

#include <stdio.h>
int main()
{
    
    
	printf("hello world\r\n");
	return 0;
}

ここに画像の説明を挿入します

埋め込む

ここに画像の説明を挿入します

参考記事

(1) RISC-V GNU コンパイル環境の構築と運用実習
(2) Ubuntu 仮想マシン共有ホスト VPN (NAT またはブリッジングに適しています)

おすすめ

転載: blog.csdn.net/qq_63922192/article/details/133495747
おすすめ