stnolting / riscv-gcc-prebuilt Goto Github PK
View Code? Open in Web Editor NEW๐ฆ Prebuilt RISC-V GCC toolchains for x64 Linux.
License: GNU General Public License v2.0
๐ฆ Prebuilt RISC-V GCC toolchains for x64 Linux.
License: GNU General Public License v2.0
Hey,
I have a problem when I use the toolchain after installation.
Although the make check cmd says:
---------------- Check: NEORV32_HOME folder ----------------
NEORV32_HOME: /home/ucycg/Dokumente/neoipe/ext/neorv32
---------------- Check: Shell ----------------
/bin/sh
/usr/bin/bash
---------------- Check: riscv32-unknown-elf-gcc ----------------
Using built-in specs.
COLLECT_GCC=riscv32-unknown-elf-gcc
COLLECT_LTO_WRAPPER=/home/ucycg/Programme/riscv/bin/../libexec/gcc/riscv32-unknown-elf/12.1.0/lto-wrapper
Target: riscv32-unknown-elf
Configured with: /tmp/rv_gcc/riscv-gnu-toolchain/gcc/configure --target=riscv32-unknown-elf --prefix=/opt/riscv --disable-shared --disable-threads --enable-languages=c,c++ --with-pkgversion=g1ea978e3066 --with-system-zlib --enable-tls --with-newlib --with-sysroot=/opt/riscv/riscv32-unknown-elf --with-native-system-header-dir=/include --disable-libmudflap --disable-libssp --disable-libquadmath --disable-libgomp --disable-nls --disable-tm-clone-registry --src=/tmp/rv_gcc/riscv-gnu-toolchain/gcc --disable-multilib --with-abi=ilp32 --with-arch=rv32i --with-tune=rocket --with-isa-spec=2.2 'CFLAGS_FOR_TARGET=-Os -mcmodel=medlow' 'CXXFLAGS_FOR_TARGET=-Os -mcmodel=medlow'
Thread model: single
Supported LTO compression algorithms: zlib
gcc version 12.1.0 (g1ea978e3066)
---------------- Check: riscv32-unknown-elf-objdump ----------------
GNU objdump (GNU Binutils) 2.39
Copyright (C) 2022 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
---------------- Check: riscv32-unknown-elf-objcopy ----------------
GNU objcopy (GNU Binutils) 2.39
Copyright (C) 2022 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
---------------- Check: riscv32-unknown-elf-size ----------------
GNU size (GNU Binutils) 2.39
Copyright (C) 2022 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) any later version.
This program has absolutely no warranty.
---------------- Check: NEORV32 image_gen ----------------
<<< NEORV32 executable image generator >>>
by Stephan Nolting
Three arguments are required.
1st: Option
-app_bin : Generate application executable binary (binary file, little-endian, with header)
-app_img : Generate application raw executable memory image (vhdl package body file, no header)
-raw_hex : Generate application raw executable (ASCII hex file, no header)
-raw_bin : Generate application raw executable (binary file, no header)
-bld_img : Generate bootloader raw executable memory image (vhdl package body file, no header)
2nd: Input file (raw binary image)
3rd: Output file
4th: Project folder (optional)
---------------- Check: Native GCC ----------------
Es werden eingebaute Spezifikationen verwendet.
COLLECT_GCC=/bin/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Ziel: x86_64-redhat-linux
Konfiguriert mit: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.rockylinux.org/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread-Modell: posix
gcc-Version 8.5.0 20210514 (Red Hat 8.5.0-16) (GCC)
Toolchain check OK
When I actually try to: make clean_all install in the demo_blink_led directory I encounter an error:
[ucycg@itiv-work5 demo_blink_led]$ make clean_all install /home/ucycg/Programme/riscv/bin/../libexec/gcc/riscv32-unknown-elf/12.1.0/cc1: error while loading shared libraries: libmpfr.so.6: cannot open shared object file: No such file or directory make: *** [/home/ucycg/Dokumente/neoipe/ext/neorv32/sw/common/common.mk:182: main.c.o] Fehler 1
As I already noticed I installed the the whole toolchain in /home/ucycg/Programme/riscv instead of /opt/riscv
when I ran a grep cmd I realized that there are a lot of files where this /opt/riscv path is specified in some form. Could this be related to my problem? Also for example in the gcc configuration sysroot=/opt/riscv/riscv32-unknown-elf is specified
Do you have any idea how to change that in a convinient way or is this even possible?
I am working over a remotedesktop access to server at my uni since I don't have sudo rights I installed it in my own directory instead of /opt/riscv since getting someone to create this for me would be probably a pain.
Thx in advance and kind regards
Justin
I'm currently running the NEORV32 Code via Cadence xcelium and was able to simulate successfully the blinky LED example via the application image.
Is there anything on the Github that lets me test the bootloader by sending a code example via uart to the processor and all of this inside Cadence Xcelium? My idea so far would be to write my own UART TX module as part of a testbench somehow that transmits the Code to the CPU with the bootloader code.
If there is anything like this already existing I would be glad to know that or if you think there is a better idea to do what I want to do.
The final goal for me is to do a physical chip design with the NEORV32
Hi Stephan,
your Prebuilt GCC is a real big deal. It makes the compile of source code easily. But whenever you are in need to build your GCC from scratch it would be very helpful to store also the used commit for build in your table:
This table could for instance modified to:
Status | Release (tag) | Download | GCC | binutils | march | mabi | c-lib |
---|---|---|---|---|---|---|---|
๐ด | rv32i-4.0.0 | ๐พ download | 12.1.0 | 2.39 | rv32i |
ilp32 |
newlib |
Could this suitable?
Thanks and BR,
Andreas
I've been trying to add some custom instructions to this prebuilt toolchain (rv64imc-3.0.0
), which requires me to find opcode definitions in riscv-opc.h
and riscv-opc.c
.
I've found that if you build the original toolchain, the above files could be found under binutils/include/opcode
and binutils/opcodes/riscv-opc.c
, respectively.
However I've been struggling to find the binutils
folder in the downloaded/extracted toolchain here, any help regarding where I might be able to find the folder or something that serves similar functionality?
When I follow the instructions here to build the neorv32 "hello world" example, the build fails with the error extension 'zicsr' required
:
rweeks@dev-compiler-build:~/projects/neorv32/sw/example/hello_world$ make USER_FLAGS+="-DUART0_SIM_MODE -DUART1_SIM_MODE" MARCH=rv32imc clean_all sim
../../../sw/lib/include/neorv32_cpu.h: Assembler messages:
../../../sw/lib/include/neorv32_cpu.h:343: Error: unrecognized opcode `csrc 836,a0', extension `zicsr' required
../../../sw/lib/include/neorv32_cpu.h:329: Error: unrecognized opcode `csrs 772,a0', extension `zicsr' required
../../../sw/lib/include/neorv32_cpu.h:343: Error: unrecognized opcode `csrc 772,a0', extension `zicsr' required
../../../sw/lib/include/neorv32_cpu.h:343: Error: unrecognized opcode `csrc 836,a0', extension `zicsr' required
According to this section of the neorv32 docs, the zicsr
extension is mandatory and can't ben enabled/disabled, so I'm not sure what's gone wrong.
Reverting to the 4.0.0 toolchain fixes the problem.
Why is rv64imc-3.0.0 marked as deprecated? Is is still usable?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.