Packages, Tools and Resources¶
Important
This documentation is not recommended for new RISC-V projects. New RISC-V projects should reference the newest version of the documentation. Users targeting Arm devices can still use this documentation as their reference.
The newest version of the documentation can be found here: https://mi-v-ecosystem.github.io/SoftConsole-Documentation/
Used packages¶
SoftConsole v2021.3 uses several, mostly free and/or open source, packages. Microchip acknowledges and thanks those organization, communities and individual developers who work on these projects and make them available to others for reuse under the relevant license conditions.
Eclipse and additional packages¶
Version:
OpenJDK 13.0.1
Home page:
Documentation:
License:
GPL v2 with the Classpath Exception https://openjdk.java.net/legal/
Notes:
OpenJDK provides the base Java platform on which Eclipse/CDT and other Eclipse plugins run.
Credit/thanks to Oracle and the OpenJDK open source development community.
Version:
Eclipse 4.15 2020-03 (SimRel) + CDT 9.11
Home page:
https://www.eclipse.org/downloads/packages/release/2020-03/r
https://projects.eclipse.org/projects/tools.cdt/releases/9.11.0
Documentation:
https://help.eclipse.org/2020-03/index.jsp
License:
License Eclipse Public License v2.0
https://www.eclipse.org/legal/epl-2.0/
Notes:
Eclipse/CDT - in conjunction with the GNU MCU Eclipse plugins - provide the main SoftConsole GUI/IDE (Graphical User Interface/Integrated Development Environment). The Windows Eclipse/CDT starter.exe has been modified by Microchip to allow for graceful termination of OpenOCD or other external executables launched from Eclipse. SoftConsole builds from the Eclipse Platform Runtime Binary (PRB) package and only adds those plugins that are absolutely necessary for Microchip target development/debug to avoid unnecessary bloat. Users can still install any additional plugins that they see fit. Credit/thanks to the Eclipse/CDT developer community
Version:
v4.7.1-201911052135
https://gnu-mcu-eclipse.github.io/blog/2019/11/06/plugins-v4.7.1-201911052135-released/
Home page:
https://gnu-mcu-eclipse.github.io/
Documentation:
https://gnu-mcu-eclipse.github.io/
License:
Eclipse Public License v1.0
https://gnu-mcu-eclipse.github.io/licenses/plug-ins/#eclipse-public-license
The copyright owner for all the GNU MCU Eclipse plug-ins is Liviu Ionescu and all rights are reserved.
Notes:
Only the following GNU MCU Eclipse plugins are used:
GNU MCU C/C++ RISC-V Cross Compiler: provides specific support for RISCV targets by way of custom project properties pages and integration with the back end RISC-V GNU Toolchain.
GNU MCU C/C++ OpenOCD Debugging: provides specific support for debugging Arm and RISC-V targets using OpenOCD from within the Eclipse environment.
Credit/thanks to Liviu Ionescu and the GNU MCU Eclipse project and development community
Version:
v0.10.0+dev based on the SiFive fork of OpenOCD with additional SoftConsole mods
Home page:
Documentation:
http://openocd.org/documentation/
License:
License GNU General Public License v2
https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
Notes:
OpenOCD sits between GDB and the target hardware (JTAG debug probe, target board and CPU) to allow for program download and debug using real hardware. When debugging Eclipse launches GDB and then uses GDB’s GDB/MI (Machine Interface) to communicate with the debugger. Meanwhile GDB communicates with OpenOCD using OpenOCD’s Remote Serial Protocol interface. GDB debug operations are translated into JTAG operations by OpenOCD which communicates with the target hardware/CPU using JTAG via the relevant JTAG debug probe. OpenOCD also has knowledge of specific CPU target debug frameworks (e.g. Arm CoreSight, RISC-V Debug Modules v0.11 and v0.13 – https://github.com/riscv/riscv-debug-spec) so that it can communicate with and debug supported RISC-V CPUs.
SoftConsole’s version of OpenOCD is built using slightly modified versions of the xPack OpenOCD (https://xpack.github.io/openocd/) build scripts.
Credit/thanks to the OpenOCD development community, SiFive and Liviu Ionescu and the xPack and GNU MCU Eclipse projects and development communities.
Complementary tools for building projects¶
Version:
v2.12-20190422
https://gnu-mcu-eclipse.github.io/windows-build-tools/releases/
Home page:
https://gnu-mcu-eclipse.github.io/windows-build-tools/
Documentation:
https://gnu-mcu-eclipse.github.io/windows-build-tools/
License:
https://gnu-mcu-eclipse.github.io/licenses/tools/
make:
GNU General Public License v3
http://www.gnu.org/copyleft/gpl.html
BusyBox:
GNU General Public License v2
https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html
Notes:
Provides common Unix style utilities such as cp, echo, make etc. for Windows and busybox for Windows and Linux.
Credit/thanks to Liviu Ionescu and the GNU MCU Eclipse project and development community
Version:
v3.8.2
Home page:
Documentation:
License:
License Python Software Foundation License
https://docs.python.org/3/license.html
Notes:
The shipped version is built statically, therefore is limited what libraries it can import and can’t be used with pip.
Also note there might be slight differences between Windows and Linux python therefore the scripts should be tested on both platforms to make sure they work correctly.
Credit/thanks to the Python development community.
Toolchains¶
Version:
xPack GNU RISC-V Embedded GCC toolchain v8.3.0-1.1 build with additional multilibs
Home Page:
https://xpack.github.io/riscv-none-embed-gcc/
Documentation:
https://xpack.github.io/riscv-none-embed-gcc/
License:
https://github.com/riscv/riscv-gnu-toolchain/blob/master/LICENSE
https://gnu-mcu-eclipse.github.io/licenses/plug-ins/#eclipse-public-license
The copyright owner for all the GNU MCU Eclipse plug-ins is Liviu Ionescu and all rights are reserved.
Notes:
The riscv64-unknown-elf prefixed tools support 32-bit and 64-bit targets and multilibs for all architectures (“native” ABI only) excluding any E architectures. Slightly modified versions of the xPack GNU RISC-V Embedded GCC build scripts (https://xpack.github.io/riscv-none-embed-gcc/) are used to build the SoftConsole GNU RISC-V Embedded GCC Toolchain. Multilibs are provided for the following RISC-V arch (architecture) and ABI tuples:
Supported Architecture / ABI combinations:
This is a full list of supported multilibs. Arch/ABI tuples not listed (such as RV32E
) are not supported.
march | mabi |
---|---|
rv32i | ilp32 |
rv32ia | ilp32 |
rv32iac | ilp32 |
rv32iaf | ilp32f |
rv32iafc | ilp32f |
rv32ic | ilp32 |
rv32if | ilp32f |
rv32ifc | ilp32f |
rv32im | ilp32 |
rv32ima | ilp32 |
rv32imac | ilp32 |
rv32imaf | ilp32f |
rv32imafc | ilp32f |
rv32imc | ilp32 |
rv32imf | ilp32f |
rv32imfc | ilp32f |
rv64i | lp64 |
rv64ia | lp64 |
rv64iac | lp64 |
rv64iaf | lp64f |
rv64iafc | lp64f |
rv64iafd | lp64d |
rv64iafdc | lp64d |
rv64ic | lp64 |
rv64if | lp64f |
rv64ifc | lp64f |
rv64ifd | lp64d |
rv64ifdc | lp64d |
rv64im | lp64 |
rv64ima | lp64 |
rv64imac | lp64 |
rv64imaf | lp64f |
rv64imafc | lp64f |
rv64imafd | lp64d |
rv64imafdc | lp64d |
rv64imc | lp64 |
rv64imf | lp64f |
rv64imfc | lp64f |
rv64imfd | lp64d |
rv64imfdc | lp64d |
Note
This suite of multilibs supports the “natural” ABI for each architecture. If an RV64G (rv64imafd
or more specifically rv64imafdZicsr_Zifencei
) architecture is chosen, but not the natural ABI lp64f
(natural would be in this case lp64d
), then the resulting multilib is not supported. However, choosing the rv64imaf
with its natural ABI lp64f
will work. Instead of selecting architecture and then ABI a reversed approach might be better. Select an ABI to fulfil application’s requirements and then the select the minimal architecture that can handle that given ABI.
The “default/native” mode of the tools is RV64GC in the absence of any -march/-mabi flags being passed to the tools. Credit/thanks to the RISC-V development community and Liviu Ionescu and the xPack and GNU MCU Eclipse projects and development communities.
Version:
xPack GNU Arm Embedded GCC toolchain v10.3.1-2.1 build based on GNU
Arm Embedded Toolchain 10.3-2021.10
Home Page:
https://xpack.github.io/arm-none-eabi-gcc/
Documentation:
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm
License:
https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q3-update/+download/license.txt
Notes:
Provides GCC, GDB, binutils, newlib (including newlib-nano) etc. development/debug tools for Arm targets (in particular Cortex-M targets).
Details of the specific versions of the individual tools in each release package can be found on the Arm Developer website.
SoftConsole bundles the xPack GNU Arm Embedded GCC build of the GNU Arm Embedded Toolchain because it offers more cross platform (especially Linux) portability than the Arm build of the same tools and also Windows 64-bit builds (Arm currently provide only 32-bit builds for Windows).
Credit/thanks to Arm and the GNU Arm Embedded Toolchain development community and Liviu Ionescu and the xPack and GNU MCU Eclipse projects and development communities.
Previous SoftConsole releases could be run in a headless mode on old unsupported OSs such as RHEL 6.x. However, from SoftConsole 2021.3 the Arm toolchain will need GLIBC_2.14 or higher and will not run on old OSs.
Emulation and trace¶
Version:
v1.11.0.8104 (fc14a2fe-202102120426)
Home page:
Documentation:
https://renode.readthedocs.io/en/latest/
License:
License MIT License:
https://github.com/renode/renode/blob/master/LICENSE
Notes:
Notes Renode can emulate physical hardware systems - including the CPU, peripherals, sensors, environment, and wireless medium between nodes.
Credit/thanks to Antmicro and the Renode development community.
Warning
UltraSoC and UltraDevelop components are not supported in SoftConsole v2021.3 and later.
Static code analysis¶
Version:
v1.83
Home page:
http://cppcheck.sourceforge.net/
Documentation:
https://sourceforge.net/p/cppcheck/wiki/Home/
License:
License GNU Public License v3
http://www.gnu.org/copyleft/gpl.html
Notes:
Cppcheck is a static analysis tool for C/C++ code. It detects the types of bugs that the compilers normally fail to detect. The goal is no false positives.
Credit/thanks to Daniel Marjamäki and the cppcheck development community.
Version:
v1.1.1-20180105 – build based from commit 7bae5b2
Home page:
https://github.com/kwin/cppcheclipse
Documentation:
https://github.com/kwin/cppcheclipse/wiki
License:
License Apache 2.0 https://github.com/kwin/cppcheclipse/blob/master/LICENSE
Notes:
Cppcheclipse is an Eclipse plugin which integrates cppcheck with a CDT project.
Cppcheclipse can run/configure cppcheck from the Eclipse UI.
Credit/thanks to the Cppcheck development community.
Deployment¶
Version:
v20.12.0
Home page:
Documentation:
https://clients.bitrock.com/installbuilder/docs/installbuilder-userguide/index.html
License:
Commercial: https://installbuilder.com/purchase.html
VMware/BitRock have kindly provided an open source license
https://support.bitrock.com/hc/en-us/community/posts/115002024525 allowing
InstallBuilder to be used to create the SoftConsole installers for Windows and Linux.
Notes:
Credit/thanks to VMware (formerly BitRock).