# neorv32 neorv32 with Makefiles compatible with MSYS2 64 on Windows(ONLY ASSEMBLY CODE) and Linux(ASSEMBLY, C, and CPP). # 1. Windows Installation, and test(Assembly code). # 2. Linux Installation, and test(C code). ## 1. Windows Installation You must download the latest RISCV precompiled binaries for your platform from: https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/ in this case the architecture x64 for windows binaries(https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v13.2.0-2/xpack-riscv-none-elf-gcc-13.2.0-2-darwin-x64.tar.gz), then extract these under the folder C:\riscv_precompiled\
1. clone or download this repository on your windows machine. ``` $ git clone https://gitea.squirrelnut.synology.me:5001/FPGALover/neorv32 ``` 2. download and install MSYS2(msys2-x86_64-20240113.exe) --> https://www.msys2.org/ 3. once MSYS2 is installed, run MSYS2, and run the command(pacman -S mingw-w64-ucrt-x86_64-gcc) ``` $ pacman -S mingw-w64-ucrt-x86_64-gcc ``` 4. Select ALL dependencies by pressing Enter and select Y[yes]. ``` resolving dependencies... looking for conflicting packages... Packages (15) mingw-w64-ucrt-x86_64-binutils-2.41-2 mingw-w64-ucrt-x86_64-crt-git-11.0.0.r216.gffe883434-1 mingw-w64-ucrt-x86_64-gcc-libs-13.2.0-2 mingw-w64-ucrt-x86_64-gmp-6.3.0-2 mingw-w64-ucrt-x86_64-headers-git-11.0.0.r216.gffe883434-1 mingw-w64-ucrt-x86_64-isl-0.26-1 mingw-w64-ucrt-x86_64-libiconv-1.17-3 mingw-w64-ucrt-x86_64-libwinpthread-git-11.0.0.r216.gffe883434-1 mingw-w64-ucrt-x86_64-mpc-1.3.1-2 mingw-w64-ucrt-x86_64-mpfr-4.2.1-2 mingw-w64-ucrt-x86_64-windows-default-manifest-6.4-4 mingw-w64-ucrt-x86_64-winpthreads-git-11.0.0.r216.gffe883434-1 mingw-w64-ucrt-x86_64-zlib-1.3-1 mingw-w64-ucrt-x86_64-zstd-1.5.5-1 mingw-w64-ucrt-x86_64-gcc-13.2.0-2 Total Download Size: 49.38 MiB Total Installed Size: 418.82 MiB :: Proceed with installation? [Y/n] [... downloading and installation continues ...] ``` 5. after the installation is completed, add the *Path* *"C:\msys64\ucrt64\bin"* under the enviroments variable on Windows.
6. open a cmd and run the command (gcc --version) ``` $ gcc --version gcc.exe (Rev2, Built by MSYS2 project) 13.2.0 ``` 7. go to the folder C:\msys64\ucrt64\bin make a copy of the file **mingw32-make.exe** and name it **make.exe**
8. go to the directory where you cloned or donwloaded this repository to the directory **neorv32\sw\example\demo_blink_led_asm** ``` $ cd neorv32\sw\example\demo_blink_led_asm ``` 8. run the command **make all** (make sure all antivirus are disabled) ``` $ make all "Memory utilization:" text data bss dec hex filename 432 0 0 432 1b0 main.elf "Generationg APP BIN" "OK - APP BIN" "Generationg APP IMG VHD" "OK - APP IMG VHD" "Generationg RAW HEX" "OK - RAW HEX" "Generationg RAW BIN" "OK - RAW BIN" "Generationg BOOT IMG VHD" "OK - BOOT IMG VHD" "Memories Generated" ``` 9. list the generated files and you will see ``` $ ls -l -rw-rw-rw- 1 adriz 0 6781 2024-02-24 01:45 main.asm -rw-rw-rw- 1 adriz 0 432 2024-02-24 01:45 main.bin -rw-rw-rw- 1 adriz 0 8708 2024-02-24 01:45 main.elf -rw-rw-rw- 1 adriz 0 5456 2024-02-23 16:14 main.S -rw-rw-rw- 1 adriz 0 2764 2024-02-24 01:45 main.S.o -rw-rw-rw- 1 adriz 0 274 2024-02-24 01:16 makefile -rw-rw-rw- 1 adriz 0 1882 2024-02-24 01:45 neorv32_application_image.vhd -rw-rw-rw- 1 adriz 0 1878 2024-02-24 01:45 neorv32_bootloader_image.vhd -rw-rw-rw- 1 adriz 0 444 2024-02-24 01:45 neorv32_exe.bin -rw-rw-rw- 1 adriz 0 432 2024-02-24 01:45 neorv32_raw_exe.bin -rw-rw-rw- 1 adriz 0 972 2024-02-24 01:45 neorv32_raw_exe.hex ``` 10. you have been able to Assemble assembly code for the RISCV on windows. ## 2. Linux Installation 1. Open shell and run: ``` sudo apt-get update 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 git clone https://github.com/riscv/riscv-gnu-toolchain cd riscv-gnu-toolchain/ mkdir build/ cd build sudo mkdir /opt/riscv32im sudo chown $USER /opt/riscv32im ./configure --with-arch=rv32im --prefix=/opt/riscv32im make -j$(nproc) ``` 2. clone this repository. 3. go to the directory where you cloned or donwloaded this repository to the directory **neorv32\sw\example\demo_blink_led_asm** ``` $ cd neorv32\sw\example\demo_blink_led ``` 4. run the command **make all** ``` $ make all Memory utilization: text data bss dec hex filename 1012 0 0 1012 3f4 main.elf Executable (neorv32_exe.bin) size in bytes: 1024 Installing application image to ../../../rtl/core/neorv32_application_image.vhd ``` 5. list the generated files and you will see ``` $ ls -l -rw-r--r-- 1 adrizcorp adrizcorp 18160 Feb 24 01:54 main.asm -rw-r--r-- 1 adrizcorp adrizcorp 1012 Feb 24 01:54 main.bin -rw-r--r-- 1 adrizcorp adrizcorp 4314 Feb 23 15:08 main.c -rw-r--r-- 1 adrizcorp adrizcorp 7696 Feb 24 01:54 main.c.o -rwxr-xr-x 1 adrizcorp adrizcorp 42856 Feb 24 01:54 main.elf -rw-r--r-- 1 adrizcorp adrizcorp 141 Feb 23 15:08 makefile -rw-r--r-- 1 adrizcorp adrizcorp 3704 Feb 24 01:54 neorv32_application_image.vhd -rw-r--r-- 1 adrizcorp adrizcorp 1024 Feb 24 01:54 neorv32_exe.bin -rw-r--r-- 1 adrizcorp adrizcorp 1012 Feb 24 01:54 neorv32_raw_exe.bin -rw-r--r-- 1 adrizcorp adrizcorp 2277 Feb 24 01:54 neorv32_raw_exe.hex ``` 6. now you have been able to compile C code for the RISCV processor. Enjoy!