```bash
git clone https://github.com/riscv/riscv-gnu-toolchain
sudo apt-get install autoconf automake python3 libmpc-dev libmpfr-dev libgmp-dev gawk bison flex texinfo patchutils gcc g++ zlib1g-dev libexpat1-dev
sudo apt-get install device-tree-compiler
```
如果不行的話請用下面的指令:
sudo apt install python-is-python3
sudo apt-get install texinfo
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install zlib1g-dev
sudo apt-get install libgmp-dev libmpfr-dev
sudo apt-get install libexpat1-dev
Install GCC and Make:
```bash
sudo apt update
sudo apt install build-essential
```
Install Ninja: Ninja is a small build system used to compile and link code. To install it, run:
```bash
sudo apt install ninja-build
gcc --version
make --version
ninja --version
```
Configure, build, and install the GNU toolchain and qemu
```bash
cd riscv-gnu-toolchain/
./configure --prefix=/opt/riscv
sudo make
sudo apt install qemu-system-misc
./configure --prefix=/opt/riscv --with-arch=rv32gc --with-abi=ilp32d
sudo make linux
```
```bash
sudo apt install gcc-riscv64-unknown-elf
./configure --prefix=/opt/riscv --with-arch=rv32i --with-abi=ilp32
sudo make newlib
sudo add-apt-repository universe
sudo apt-get update
```
TEST:
```bash
which qemu-system-riscv32
qemu-system-riscv32 --version
qemu-system-riscv32 -machine help
```
Testing GCC
To test GCC, run the following commands:
```
sudo apt-get install python3-pyelftools
sudo make -C build-spike install
```
```bash
./configure --prefix=$RISCV --disable-linux --with-arch=rv32ima
sudo make newlib
sudo make report-newlib SIM=gdb
./configure --prefix=$RISCV
sudo make linux
sudo make report-linux SIM=qemu
./configure --prefix=$RISCV --with-sim=spike
sudo make linux
sudo make report
```
執行RISCV32的指令:
```bash
# 編譯 C 檔案,生成 ELF 可執行檔
# 將 ELF 檔案轉換為二進制檔
# 將二進制檔轉換為十六進制格式
riscv64-unknown-elf-gcc -march=rv32imac_zicsr -mabi=ilp32 -nostartfiles -nostdlib -o test.elf test.c
riscv64-unknown-elf-objcopy -O binary example.elf example.bin
hexdump -e '"%08x\n"' example.bin > example.hex
```
# 與FPGA進行連接:
查看USB裝置:
```bash
sudo apt install usbutils
lsusb
dmesg | grep usb
```
```bash
sudo apt update
sudo apt install openocd
sudo apt install linux-tools-common
```
以管理員權限在Power Shell分享USB位置

```bash
usbipd list
usbipd bind --busid 3-4
usbipd attach --wsl --busid 3-4
```
```bash
riscv32-unknown-elf-gcc -r exampleC.c -o exampleC.o
riscv32-unknown-elf-ld -o exampleC.elf -T c_prog.ld -m elf32lriscv -nostdlib --no-relax
```
針對您的設備位置和識別 ID,您可以更新 `udev` 規則文件如下:
1. 使用以下命令來編輯 `udev` 規則文件:
```bash
sudo vi /etc/udev/rules.d/99-openocd.rules
```
2. 添加以下內容,並將 `idVendor` 和 `idProduct` 更新為您的設備 ID:
```plaintext
# For FT232H USB-UART/FIFO IC
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="6014", MODE="664", GROUP="plugdev"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6014", MODE="664", GROUP="plugdev"
```
3. 如果您使用 `vim` 編輯器並希望以 `sudo` 權限編輯文件,可以按以下步驟操作:
1. **打開文件**:
使用 `sudo` 來確保您有權限編輯系統文件。例如,編輯 `99-openocd.rules` 文件:
```bash
sudo vim /etc/udev/rules.d/99-openocd.rules
```
2. **編輯文件**:
- 進入文件後,按 `i` 鍵進入插入模式進行編輯。
- 編輯完成後,按 `Esc` 鍵退出插入模式。
3. **保存並退出**:
- 在命令模式下(按 `Esc` 退出插入模式),輸入 `:wq` 保存並退出文件。
- 如果編輯過程中發生錯誤,想要放棄更改並退出,可以輸入 `:q!`。
這樣,您就可以使用 `vim` 編輯器以 `sudo` 權限修改文件。
4. 完成後,可以重新插入設備或執行以下命令來加載新規則:
```bash
sudo udevadm control --reload-rules && sudo udevadm trigger
```
這樣可以確保您的 FT232H 設備被 `plugdev` 組所管理,便於後續使用。
# OpenOCD:

```bash
sudo apt-get install openocd
openocd --version
```
```bash
make dasm PROGRAM=demo_gpio NANO_PFLOAT=0
find / -name riscv64-unknown-elf-gcc 2>/dev/null
make software PROGRAM=demo_gpio RISCV_PATH=/opt/riscv RISCV_PREFIX=riscv64-unknown-elf- CC=riscv64-unknown-elf-gcc AR=riscv64-unknown-elf-ar RISCV_ARCH=rv32imac_zicsr CFLAGS_EXTRA="-nostartfiles -nostdlib" VERBOSE=1
```
# **riscv-none-embed-gcc 下載:**
To download and set up the **xPack GNU RISC-V Embedded GCC v10.2.0-1.1** on Linux, follow these steps:
### 1. **Download the File**
1. Open your terminal.
2. Use `wget` to download the appropriate asset from the release page:
```bash
wget https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/download/v10.2.0-1.1/xpack-riscv-none-embed-gcc-10.2.0-1.1-linux-x64.tar.gz
```
### 2. **Extract the File**
3. Extract the downloaded `.tar.gz` file:
```bash
tar -xzf xpack-riscv-none-embed-gcc-10.2.0-1.1-linux-x64.tar.gz
```
4. Navigate to the extracted folder:
```bash
cd xpack-riscv-none-embed-gcc-10.2.0-1.1
```
### 3. **Add to PATH**
5. Add the toolchain's `bin` directory to your `PATH` environment variable for easy access:
```bash
echo 'export PATH=$PWD/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
```
### 4. **Verify Installation**
6. Confirm that the toolchain is installed and accessible:
```bash
riscv-none-embed-gcc --version
```
You should see the version output, confirming that the toolchain is ready to use.
### Notes:
- If you encounter any issues, ensure that you have the necessary permissions and that the `tar` utility is installed on your system.
- Use `sudo` if extracting or modifying files in restricted directories.