# neorv32
neorv32 with Makefiles compatible with MSYS2 64 on Windows(ONLY ASSEMBLY) and Linux(ASSEMBLY, C, and CPP).
## 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
```