This commit is contained in:
stnolting 2021-07-12 16:39:20 +02:00
commit aa769fa210
40 changed files with 268 additions and 291 deletions

View file

@ -34,4 +34,4 @@ jobs:
backend: gcc
- name: '⚙️ Run RISC-V Architecture Tests'
run: ./riscv-arch-test/run_riscv_arch_test.sh
run: ./sim/run_riscv_arch_test.sh

5
.gitignore vendored
View file

@ -30,3 +30,8 @@ sw/image_gen/image_gen.exe
# example bitstreams
/setups/examples/*.bit
/setups/examples/*.svf
# riscv-arch-test
/sim/work/

2
.gitmodules vendored
View file

@ -1,3 +1,3 @@
[submodule "riscv-arch-test/work/riscv-arch-test"]
path = riscv-arch-test/work/riscv-arch-test
path = sw/isa-test/riscv-arch-test
url = https://github.com/riscv/riscv-arch-test.git

View file

@ -152,7 +152,7 @@ ASM_INC ?= -I .
# Optimization
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
MABI ?= -mabi=ilp32
@ -170,7 +170,7 @@ NEORV32_HOME ?= ../../..
| _APP_INC_ | Include file folders; separated by white spaces; must be defined with `-I` prefix
| _ASM_INC_ | Include file folders that are used only for the assembly source files (`*.S`/`*.s`).
| _EFFORT_ | Optimization level, optimize for size (`-Os`) is default; legal values: `-O0`, `-O1`, `-O2`, `-O3`, `-Os`
| _RISCV_TOOLCHAIN_ | The toolchain prefix to be used; follows the naming convention "architecture-vendor-output"
| _RISCV_PREFIX_ | The toolchain prefix to be used; follows the naming convention "architecture-vendor-output-"
| _MARCH_ | The targetd RISC-V architecture/ISA. Only `rv32` is supported by the NEORV32. Enable compiler support of optional CPU extension by adding the according extension letter (e.g. `rv32im` for _M_ CPU extension). See https://stnolting.github.io/neorv32/ug/#_enabling_risc_v_cpu_extensions[User Guide: Enabling RISC-V CPU Extensions] for more information.
| _MABI_ | The default 32-bit integer ABI.
| _USER_FLAGS_ | Additional flags that will be forwarded to the compiler tools
@ -282,7 +282,7 @@ These four regions contain everything required for the application to run:
[cols="<1,<9"]
[options="header",grid="rows"]
|=======================
| Region | Description
| Region | Description
| `.text` | Executable instructions generated from the start-up code and all application sources.
| `.rodata` | Constants (like strings) from the application; also the initial data for initialized variables.
| `.data` | This section is required for the address generation of fixed (= global) variables only.
@ -415,7 +415,7 @@ _OPTIONAL_: The MTIME machine timer (<<_io_mtime_en>> generic is _true_) and the
To interact with the bootloader, connect the primary UART (UART0) signals (`uart0_txd_o` and
`uart0_rxd_o`) of the processor's top entity via a serial port (-adapter) to your computer (hardware flow control is
not used so the according interface signals can be ignored.), configure your
terminal program using the following settings and perform a reset of the processor.
terminal program using the following settings and perform a reset of the processor.
Terminal console settings (`19200-8-N-1`):

View file

@ -13,8 +13,8 @@ There are two possibilities to get this:
2. Download and install a prebuilt version of the toolchain; this might also done via the package manager / app store of your OS
[TIP]
The default toolchain prefix for this project is **`riscv32-unknown-elf`**. Of course you can use any other RISC-V
toolchain (like `riscv64-unknown-elf`) that is capable to emit code for a `rv32` architecture. Just change the _RISCV_TOOLCHAIN_ variable in the application
The default toolchain prefix for this project is **`riscv32-unknown-elf-`**. Of course you can use any other RISC-V
toolchain (like `riscv64-unknown-elf-`) that is capable to emit code for a `rv32` architecture. Just change the _RISCV_PREFIX_ variable in the application
makefile(s) according to your needs or define this variable when invoking the makefile.
[IMPORTANT]
@ -264,7 +264,7 @@ More information can be found in the datasheet section https://stnolting.github.
:sectnums:
== Application Program Compilation
This guide shows how to compile an example C-code application into a NEORV32 executable that
This guide shows how to compile an example C-code application into a NEORV32 executable that
can be uploaded via the bootloader or the on-chip debugger.
[IMPORTANT]
@ -298,7 +298,7 @@ Memory utilization:
3176 0 120 3296 ce0 main.elf
Compiling ../../../sw/image_gen/image_gen
Executable (neorv32_exe.bin) size in bytes:
3188
3188
----
[start=5]
@ -455,7 +455,7 @@ Using the IMEM as ROM:
* for this boot concept the bootloader is no longer required
* this concept only works for the internal IMEM (but can be extended to work with external memories coupled via the processor's bus interface)
* make sure that the memory components (like block RAM) the IMEM is mapped to support an initialization via the bitstream
* make sure that the memory components (like block RAM) the IMEM is mapped to support an initialization via the bitstream
[start=1]
. At first, make sure your processor setup actually implements the internal IMEM: the `MEM_INT_IMEM_EN` generics has to be set to `true`:
@ -469,7 +469,7 @@ Using the IMEM as ROM:
[start=2]
. For this setup we do not want the bootloader to be implemented at all. Disable implementation of the bootloader by setting the
`INT_BOOTLOADER_EN` generic to `false`. This will also modify the processor-internal IMEM so it is initialized with the executable during synthesis.
`INT_BOOTLOADER_EN` generic to `false`. This will also modify the processor-internal IMEM so it is initialized with the executable during synthesis.
.Processor top entity configuration - disable internal bootloader
[source,vhdl]
@ -698,7 +698,7 @@ All bootloader boot configuration support uploading new executables via the on-c
[WARNING]
Note that this boot configuration does not load any executable at all! Hence,
this boot configuration is intended to be used with the on-chip debugger only.
this boot configuration is intended to be used with the on-chip debugger only.

View file

@ -1,54 +0,0 @@
# NEORV32 RISC-V Architecture Test Framework
## Overview
This sub-project folder tests the NEORV32 Processor for RISC-V compatibility
using the [official RISC-V architecture test suite v2+](https://github.com/riscv/riscv-arch-test).
The core's HDL sources are *simulated* using `GHDL` to provide a virtual execution platform for the test framework.
The following tests are supported yet:
* `rv32i_m/C` - compressed instructions
* `rv32i_m/I` - base ISA
* `rv32i_m/M` - hardware integer multiplication and division
* `rv32i_m/privilege` - privileged architecture
* `rv32i_m/Zifencei` - instruction stream synchronization (for example for self-modifying code)
## How To Run
**Requirements:**
* RISC-V GCC toolchain (`riscv32-unknown-elf`) for test program compilation
* GHDL for simulating the HDL sources
To execute all the supported test* open a terminal an run:
```bash
$ sh run_riscv_arch_test.sh
```
:warning: Simulating all the test cases takes quite some time.
:warning: If the simulation of a test does not generate any signature output at all or if the signature is truncated,
try increasing the simulation time by modiying the `SIM_TIME` variable when calling the test makefiles in `run_riscv_arch_test.sh`.
## Details
The [`run_riscv_arch_test.sh`](https://github.com/stnolting/neorv32/blob/master/riscv-arch-test/run_riscv_arch_test.sh)
bash script does the following:
* Make local copies of the NEORV32 `rtl`, `sim` and `sw` folders in `work/neorv32/` to keep the project's core files clean
* Clone (as `git submodule`) the [riscv-arch-test repository](https://github.com/riscv/riscv-arch-test) into `work/riscv-arch-test`
* Install (copy) the custom `neorv32` test target from `port-neorv32/framework_v2.0/riscv-target` to the
test suite's target folder `work/riscv-arch-test/riscv-target`
* Make a copy of the original IMEM VHDL source file of the processor (in `work/neorv32/rtl/core/neorv32_imem.vhd`)
by the simulation-optimized file (`work/neorv32/rtl/core/neorv32_imem.ORIGINAL`); the original IMEM will be overriden
by the device makefiles with a simulation-optimized one (`neorv32/sim/rtl_modules/neorv32_imem.vhd`); the original
IMEM is required for certain tests that use self-modifying code
* Run the actual tests
More datails regarding the actual simulation process can be found in the
[target's `README`](https://github.com/stnolting/neorv32/blob/master/riscv-arch-test/port-neorv32/framework_v2.0/riscv-target/neorv32/README.md).
For more information regarding the NEORV32 Processor see the :page_facing_up:
[NEORV32 data sheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/NEORV32.pdf).

View file

@ -1,82 +0,0 @@
#!/bin/bash
# Abort if any command returns != 0
set -e
# Project home folder
homedir="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
homedir=$homedir/..
# Check GCC toolchain installation
echo "--------------------------------------------------------------------------"
echo "> Checking RISC-V GCC toolchain..."
echo "--------------------------------------------------------------------------"
riscv32-unknown-elf-gcc -v
# Check GHDL installation
echo "--------------------------------------------------------------------------"
echo "> Checking GHDL simulator..."
echo "--------------------------------------------------------------------------"
ghdl -v
echo "--------------------------------------------------------------------------"
echo "> Checking 'riscv-arch-test' GitHub repository (submodule)..."
echo "--------------------------------------------------------------------------"
git submodule update --init
# Copy NEORV32 files
echo "--------------------------------------------------------------------------"
echo "> Making local copy of NEORV32 'rtl', 'sim' & 'sw' folders..."
echo "--------------------------------------------------------------------------"
(cd $homedir/riscv-arch-test/work ; rm -rf neorv32 ; mkdir neorv32)
cp -r $homedir/rtl/ $homedir/riscv-arch-test/work/neorv32/.
cp -r $homedir/sim/ $homedir/riscv-arch-test/work/neorv32/.
cp -r $homedir/sw/ $homedir/riscv-arch-test/work/neorv32/.
# Copy neorv32 target folder into test suite
echo "--------------------------------------------------------------------------"
echo "> Copying neorv32 test-target into riscv-arch-test framework..."
echo "--------------------------------------------------------------------------"
cp -rf $homedir/riscv-arch-test/port-neorv32/framework_v2.0/riscv-target/neorv32 $homedir/riscv-arch-test/work/riscv-arch-test/riscv-target/.
# Make a local copy of the original IMEM rtl file
echo ""
echo ">>> Making local backup of original IMEM rtl file (work/neorv32/rtl/core/neorv32_imem.ORIGINAL)..."
echo ""
cp $homedir/riscv-arch-test/work/neorv32/rtl/core/neorv32_imem.vhd $homedir/riscv-arch-test/work/neorv32/rtl/core/neorv32_imem.ORIGINAL
# Component installation done
ls -al
echo "--------------------------------------------------------------------------"
echo "> Component installation done!"
echo "--------------------------------------------------------------------------"
echo ""
# neorv32 home folder
NEORV32_LOCAL_HOME=$homedir/riscv-arch-test/work/neorv32
echo "--------------------------------------------------------------------------"
echo "> Starting RISC-V architecture tests..."
echo "--------------------------------------------------------------------------"
# Clean up everything
make -C $homedir/riscv-arch-test/work/riscv-arch-test NEORV32_LOCAL_COPY=$NEORV32_LOCAL_HOME XLEN=32 RISCV_TARGET=neorv32 clean
# work in progress FIXME
echo ""
echo "\e[1;33mWARNING! 'Zifencei' test is currently disabled (work in progress). \e[0m"
echo ""
# Run tests and check results
make --silent -C $homedir/riscv-arch-test/work/riscv-arch-test NEORV32_LOCAL_COPY=$NEORV32_LOCAL_HOME SIM_TIME=850us XLEN=32 RISCV_TARGET=neorv32 RISCV_DEVICE=I build run verify
make --silent -C $homedir/riscv-arch-test/work/riscv-arch-test NEORV32_LOCAL_COPY=$NEORV32_LOCAL_HOME SIM_TIME=400us XLEN=32 RISCV_TARGET=neorv32 RISCV_DEVICE=C build run verify
make --silent -C $homedir/riscv-arch-test/work/riscv-arch-test NEORV32_LOCAL_COPY=$NEORV32_LOCAL_HOME SIM_TIME=800us XLEN=32 RISCV_TARGET=neorv32 RISCV_DEVICE=M build run verify
make --silent -C $homedir/riscv-arch-test/work/riscv-arch-test NEORV32_LOCAL_COPY=$NEORV32_LOCAL_HOME SIM_TIME=200us XLEN=32 RISCV_TARGET=neorv32 RISCV_DEVICE=privilege build run verify
#make --silent -C $homedir/riscv-arch-test/work/riscv-arch-test NEORV32_LOCAL_COPY=$NEORV32_LOCAL_HOME SIM_TIME=200us XLEN=32 RISCV_TARGET=neorv32 RISCV_DEVICE=Zifencei RISCV_TARGET_FLAGS=-DNEORV32_NO_DATA_INIT build run verify
echo ""
echo "RISC-V architecture tests completed successfully"

View file

@ -1,2 +0,0 @@
neorv32
riscv-arch-test

View file

@ -1,6 +1,8 @@
*.asc
*.bit
*.cfg
*.dfu
*.history
*.json
*.svf
*-report.txt

View file

@ -1,17 +1,54 @@
## Simulation Source Folder
# Simulation Source Folder
### [`ghdl`](https://github.com/stnolting/neorv32/tree/master/sim/ghdl)
This folder contains a script for simulating the processor using GHDL.
## [`neorv32_tb.simple.vhd`](neorv32_tb.simple.vhd) and [`ghdl_sim.sh`](ghdl_sim)
### [`rtl_modules`](https://github.com/stnolting/neorv32/tree/master/sim/rtl_modules)
Simple testbench for the NEORV32 Processor and script for simulation using GHDL.
## [`rtl_modules`](rtl_modules)
This folder provides additional/alternative simulation components (mainly optimized memory components yet). See the comments in the according files for more information.
### [`neorv32_tb.vhd`](https://github.com/stnolting/neorv32/tree/master/sim/neorv32_tb.vhd)
VUnit testbench for the NEORV32 Processor.
## [`neorv32_tb.vhd`](neorv32_tb.vhd) and [`run.py`](run.py)
### [`neorv32_tb.simple.vhd`](https://github.com/stnolting/neorv32/tree/master/sim/neorv32_tb.simple.vhd)
VUnit testbench and run script for the NEORV32 Processor.
Simple testbench for the NEORV32 Processor.
## [`run_riscv_arch_test.sh`](run_riscv_arch_test.sh): NEORV32 RISC-V Architecture Test Framework
This script tests the NEORV32 Processor for RISC-V compatibility using the
[official RISC-V architecture test suite v2+](https://github.com/riscv/riscv-arch-test).
The core's HDL sources are *simulated* using `GHDL` to provide a virtual execution platform for the test framework:
* `rv32i_m/C` - compressed instructions
* `rv32i_m/I` - base ISA
* `rv32i_m/M` - hardware integer multiplication and division
* `rv32i_m/privilege` - privileged architecture
* `rv32i_m/Zifencei` - instruction stream synchronization (for example for self-modifying code)
:warning: The RISC-V GCC toolchain (`riscv{32|64}-unknown-elf`) is required for program compilation, and the tests
depend on `ghdl_sim.sh`.
To execute all the supported tests open a terminal and run [`./sim/run_riscv_arch_test.sh`](run_riscv_arch_test.sh),
which does the following:
* Make local copies of the NEORV32 `rtl`, `sim` and `sw` folders in `work/`, to keep the project's core files clean.
* Clone (as `git submodule`) the [riscv-arch-test repository](https://github.com/riscv/riscv-arch-test) into `sw/isa-test/riscv-arch-test`.
* Install (copy) the custom `neorv32` test target from `sw/isa-test/port-neorv32` to the
test suite's target folder `work/riscv-arch-test/riscv-target/neorv32`
* Make a copy of the original IMEM VHDL source file of the processor (`cp work/neorv32/rtl/core/neorv32_imem.vhd work/neorv32/rtl/core/neorv32_imem.ORIGINAL`);
since the IMEM will be overriden by the device makefiles with a simulation-optimized one (`neorv32/sim/rtl_modules/neorv32_imem.vhd`).
Still, the original IMEM is required for certain tests that use self-modifying code.
* Run the actual tests.
:warning: Simulating all the test cases takes quite some time.
:warning: If the simulation of a test does not generate any signature output at all or if the signature is truncated,
try increasing the simulation time by modiying the `SIM_TIME` variable when calling the test makefiles in `run_riscv_arch_test.sh`.
More datails regarding the actual simulation process can be found in the
[target's `README`](../sw/riscv-arch-test/port-neorv32/framework_v2.0/riscv-target/neorv32/README.md).
For more information regarding the NEORV32 Processor see the :page_facing_up:
[NEORV32 data sheet](https://raw.githubusercontent.com/stnolting/neorv32/master/docs/NEORV32.pdf).

View file

@ -8,42 +8,26 @@
# Abort if any command returns != 0
set -e
cd $(dirname "$0")/..
cd $(dirname "$0")
# Default simulation configuration
# Simulation configuration
SIM_CONFIG=--stop-time=10ms
# Show GHDL version
ghdl -v
# Simulation time define by user?
echo ""
if [ -z $1 ]
then
echo "Using default simulation config: $SIM_CONFIG"
else
SIM_CONFIG=$1;
echo "Using user simulation config: $SIM_CONFIG";
if [ -n "$1" ]; then
SIM_CONFIG="$1";
fi
echo ""
echo "Using simulation config: $SIM_CONFIG";
# List files
#echo "Simulation source files:"
#ls -l rtl/core
#ls -l sim
#ls -l rtl/templates
#echo ""
# Just a hint
echo "Tip: Compile application with USER_FLAGS+=-DUART[0/1]_SIM_MODE to auto-enable UART[0/1]'s simulation mode (redirect UART output to simulator console)."
echo ""
mkdir -p build
# Analyse sources; libs and images at first!
ghdl -i --work=neorv32 rtl/core/*.vhd
ghdl -i --work=neorv32 rtl/templates/processor/*.vhd
ghdl -i --work=neorv32 rtl/templates/system/*.vhd
ghdl -i --work=neorv32 sim/neorv32_tb.simple.vhd
ghdl -i --work=neorv32 sim/uart_rx.simple.vhd
ghdl -i --work=neorv32 --workdir=build \
../rtl/core/*.vhd \
../rtl/templates/processor/*.vhd \
../rtl/templates/system/*.vhd \
neorv32_tb.simple.vhd \
uart_rx.simple.vhd
# Prepare simulation output files for UART0 and UART 1
# - Testbench receiver log file (neorv32.testbench_uart?.out)
@ -60,7 +44,9 @@ for item in \
done
# Run simulation
ghdl -m --work=neorv32 neorv32_tb_simple
ghdl -r --work=neorv32 neorv32_tb_simple --max-stack-alloc=0 --ieee-asserts=disable --assert-level=error $SIM_CONFIG
ghdl -m --work=neorv32 --workdir=build neorv32_tb_simple
ghdl -r --work=neorv32 --workdir=build neorv32_tb_simple --max-stack-alloc=0 --ieee-asserts=disable --assert-level=error $SIM_CONFIG
cat neorv32.uart0.sim_mode.text.out | grep "CPU TEST COMPLETED SUCCESSFULLY!"
rm -rf *.{o,cf,lst,out} build

63
sim/run_riscv_arch_test.sh Executable file
View file

@ -0,0 +1,63 @@
#!/usr/bin/env bash
# Abort if any command returns != 0
set -e
cd $(dirname "$0")
header() {
echo "--------------------------------------------------------------------------"
echo "> $@..."
echo "--------------------------------------------------------------------------"
}
RISCV_PREFIX="${RISCV_PREFIX:-riscv32-unknown-elf-}"
header "Checking RISC-V GCC toolchain"
"$RISCV_PREFIX"gcc -v
header "Checking 'riscv-arch-test' GitHub repository (submodule)"
git submodule update --init
header "Copying neorv32 test-target into riscv-arch-test framework"
(
cd ../sw/isa-test
target_device='riscv-arch-test/riscv-target/neorv32'
if [ -d "$target_device" ]; then rm -rf "$target_device"; fi
cp -vr port-neorv32 "$target_device"
)
header "Making local copy of NEORV32 'rtl', 'sim' & 'sw' folders"
rm -rf work
mkdir -p work/sim
for item in 'rtl' 'sw'; do
cp -r ../"$item" work
done
for item in *.simple.vhd ghdl_sim.sh; do
cp -r "$item" work/sim
done
header "Making local backup of original IMEM rtl file (work/rtl/core/neorv32_imem.ORIGINAL)"
(
cd work/rtl/core/
cp neorv32_imem.vhd neorv32_imem.ORIGINAL
)
header "Starting RISC-V architecture tests"
makeArgs="-C ../sw/isa-test/riscv-arch-test NEORV32_LOCAL_COPY=$(pwd)/work XLEN=32 RISCV_TARGET=neorv32"
make $makeArgs clean
# work in progress FIXME
printf "\n\e[1;33mWARNING! 'Zifencei' test is currently disabled (work in progress). \e[0m\n\n"
# Run tests and check results
makeTargets='build run verify'
make --silent $makeArgs SIM_TIME=850us RISCV_DEVICE=I $makeTargets
make --silent $makeArgs SIM_TIME=400us RISCV_DEVICE=C $makeTargets
make --silent $makeArgs SIM_TIME=800us RISCV_DEVICE=M $makeTargets
make --silent $makeArgs SIM_TIME=200us RISCV_DEVICE=privilege $makeTargets
#make $makeArgs SIM_TIME=200us RISCV_DEVICE=Zifencei RISCV_TARGET_FLAGS=-DNEORV32_NO_DATA_INIT $makeTargets
printf "\nRISC-V architecture tests completed successfully"

View file

@ -1,27 +1,49 @@
## NEORV32 Software Framework
# NEORV32 Software Framework
This folder provides the core of the NEORV32 software framework. This is a short description of the main folders.
This folder provides the core of the NEORV32 software framework.
This is a short description of the main folders.
### [`bootloader`](https://github.com/stnolting/neorv32/tree/master/sw/bootloader)
Source(s) of the default NEORV32 bootloader. A pre-built image is already installed into the rtl design via the
`rtl/core/neorv32_bootloader_image.vhd` file.
## [`bootloader`](bootloader)
### [`common`](https://github.com/stnolting/neorv32/tree/master/sw/common)
Source(s) of the default NEORV32 bootloader.
A pre-built image is already installed into the rtl design via the `rtl/core/neorv32_bootloader_image.vhd` file.
## [`common`](common)
NEORV32-specific common files for all bootloader and application programs: linker script for executable generation and
processor start-up code.
### [`example`](https://github.com/stnolting/neorv32/tree/master/sw/example)
## [`example`](example)
Several example programs for testing and for getting started.
### [`image_gen`](https://github.com/stnolting/neorv32/tree/master/sw/image_gen)
This folder contains a simple program that is used to create NEORV32 executables (for upload via bootloader) and VHDL memory
initializiation files (for memory-persistent applications and for the bootloader). This program is automatically compiled using
the native GCC when invoking one of the application compilation makefiles.
## [`image_gen`](image_gen)
### [`lib`](https://github.com/stnolting/neorv32/tree/master/sw/lib)
This folder contains a simple program that is used to create NEORV32 executables (for upload via bootloader) and VHDL
memory initializiation files (for memory-persistent applications and for the bootloader).
This program is automatically compiled using the native GCC when invoking one of the application compilation makefiles.
## [`lib`](lib)
Core libraries (sources and header files) and helper functions for using the processor peripherals and the CPU itself.
## [`ocd-firmware`](ocd-firmware)
*TBC*
## [`openocd`](openocd)
*TBC*
## [`isa-test`](isa-test)
NEORV32 RISC-V Architecture Test Framework.
See [sim/README](../sim/README.md).

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -185,10 +185,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -50,7 +50,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH ?= -march=rv32i
@ -112,10 +112,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g

View file

@ -14,7 +14,7 @@ RUN_TARGET=\
rm -f $(NEORV32_LOCAL_COPY)/*.out; \
echo "copying/using SIM-only IMEM (ROM!)"; \
rm -f $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
cp -f $(NEORV32_LOCAL_COPY)/sim/rtl_modules/neorv32_imem.vhd $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
cp -f $(NEORV32_LOCAL_COPY)/sim/neorv32_imem.simple.vhd $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
sed -i '/CPU_EXTENSION_RISCV_A/c\CPU_EXTENSION_RISCV_A => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
sed -i '/CPU_EXTENSION_RISCV_C/c\CPU_EXTENSION_RISCV_C => true, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
sed -i '/CPU_EXTENSION_RISCV_E/c\CPU_EXTENSION_RISCV_E => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
@ -33,7 +33,7 @@ RUN_TARGET=\
make -C $(NEORV32_LOCAL_COPY)/sw/example/blink_led install; \
touch $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out; \
sh $(NEORV32_LOCAL_COPY)/sim/ghdl_sim.sh --stop-time=$(SIM_TIME) >> /dev/null; \
cp $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out $(*).signature.output;
cp $(NEORV32_LOCAL_COPY)/sim/neorv32.uart0.sim_mode.data.out $(*).signature.output;
RISCV_PREFIX ?= riscv32-unknown-elf-

View file

@ -14,7 +14,7 @@ RUN_TARGET=\
rm -f $(NEORV32_LOCAL_COPY)/*.out; \
echo "copying/using SIM-only IMEM (ROM!)"; \
rm -f $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
cp -f $(NEORV32_LOCAL_COPY)/sim/rtl_modules/neorv32_imem.vhd $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
cp -f $(NEORV32_LOCAL_COPY)/sim/neorv32_imem.simple.vhd $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
sed -i '/CPU_EXTENSION_RISCV_A/c\CPU_EXTENSION_RISCV_A => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
sed -i '/CPU_EXTENSION_RISCV_C/c\CPU_EXTENSION_RISCV_C => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
sed -i '/CPU_EXTENSION_RISCV_E/c\CPU_EXTENSION_RISCV_E => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
@ -33,7 +33,7 @@ RUN_TARGET=\
make -C $(NEORV32_LOCAL_COPY)/sw/example/blink_led install; \
touch $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out; \
sh $(NEORV32_LOCAL_COPY)/sim/ghdl_sim.sh --stop-time=$(SIM_TIME) >> /dev/null; \
cp $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out $(*).signature.output;
cp $(NEORV32_LOCAL_COPY)/sim/neorv32.uart0.sim_mode.data.out $(*).signature.output;
RISCV_PREFIX ?= riscv32-unknown-elf-

View file

@ -14,7 +14,7 @@ RUN_TARGET=\
rm -f $(NEORV32_LOCAL_COPY)/*.out; \
echo "copying/using SIM-only IMEM (ROM!)"; \
rm -f $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
cp -f $(NEORV32_LOCAL_COPY)/sim/rtl_modules/neorv32_imem.vhd $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
cp -f $(NEORV32_LOCAL_COPY)/sim/neorv32_imem.simple.vhd $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
sed -i '/CPU_EXTENSION_RISCV_A/c\CPU_EXTENSION_RISCV_A => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
sed -i '/CPU_EXTENSION_RISCV_C/c\CPU_EXTENSION_RISCV_C => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
sed -i '/CPU_EXTENSION_RISCV_E/c\CPU_EXTENSION_RISCV_E => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
@ -33,7 +33,7 @@ RUN_TARGET=\
make -C $(NEORV32_LOCAL_COPY)/sw/example/blink_led install; \
touch $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out; \
sh $(NEORV32_LOCAL_COPY)/sim/ghdl_sim.sh --stop-time=$(SIM_TIME) >> /dev/null; \
cp $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out $(*).signature.output;
cp $(NEORV32_LOCAL_COPY)/sim/neorv32.uart0.sim_mode.data.out $(*).signature.output;
RISCV_PREFIX ?= riscv32-unknown-elf-

View file

@ -33,7 +33,7 @@ RUN_TARGET=\
make -C $(NEORV32_LOCAL_COPY)/sw/example/blink_led install; \
touch $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out; \
sh $(NEORV32_LOCAL_COPY)/sim/ghdl_sim.sh --stop-time=$(SIM_TIME) >> /dev/null; \
cp $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out $(*).signature.output;
cp $(NEORV32_LOCAL_COPY)/sim/neorv32.uart0.sim_mode.data.out $(*).signature.output;
RISCV_PREFIX ?= riscv32-unknown-elf-

View file

@ -14,7 +14,7 @@ RUN_TARGET=\
rm -f $(NEORV32_LOCAL_COPY)/*.out; \
echo "copying/using SIM-only IMEM (ROM!)"; \
rm -f $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
cp -f $(NEORV32_LOCAL_COPY)/sim/rtl_modules/neorv32_imem.vhd $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
cp -f $(NEORV32_LOCAL_COPY)/sim/neorv32_imem.simple.vhd $(NEORV32_LOCAL_COPY)/rtl/core/neorv32_imem.vhd; \
sed -i '/CPU_EXTENSION_RISCV_A/c\CPU_EXTENSION_RISCV_A => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
sed -i '/CPU_EXTENSION_RISCV_C/c\CPU_EXTENSION_RISCV_C => true, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
sed -i '/CPU_EXTENSION_RISCV_E/c\CPU_EXTENSION_RISCV_E => false, -- MOD. BY RISCV-ARCH-TEST TEST SCRIPT' $(NEORV32_LOCAL_COPY)/sim/neorv32_tb.simple.vhd; \
@ -33,7 +33,7 @@ RUN_TARGET=\
make -C $(NEORV32_LOCAL_COPY)/sw/example/blink_led install; \
touch $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out; \
sh $(NEORV32_LOCAL_COPY)/sim/ghdl_sim.sh --stop-time=$(SIM_TIME) >> /dev/null; \
cp $(NEORV32_LOCAL_COPY)/neorv32.uart0.sim_mode.data.out $(*).signature.output;
cp $(NEORV32_LOCAL_COPY)/sim/neorv32.uart0.sim_mode.data.out $(*).signature.output;
RISCV_PREFIX ?= riscv32-unknown-elf-

View file

@ -52,7 +52,7 @@ ASM_INC ?= -I .
EFFORT ?= -Os
# Compiler toolchain
RISCV_TOOLCHAIN ?= riscv32-unknown-elf
RISCV_PREFIX ?= riscv32-unknown-elf-
# CPU architecture and ABI
MARCH = -march=rv32i
@ -105,10 +105,10 @@ OBJ = $(SRC:%=%.o)
# Tools and flags
# -----------------------------------------------------------------------------
# Compiler tools
CC = $(RISCV_TOOLCHAIN)-gcc
OBJDUMP = $(RISCV_TOOLCHAIN)-objdump
OBJCOPY = $(RISCV_TOOLCHAIN)-objcopy
SIZE = $(RISCV_TOOLCHAIN)-size
CC = $(RISCV_PREFIX)gcc
OBJDUMP = $(RISCV_PREFIX)objdump
OBJCOPY = $(RISCV_PREFIX)objcopy
SIZE = $(RISCV_PREFIX)size
# Host native compiler
CC_X86 = g++ -Wall -O -g