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:

https://openjdk.java.net/

Documentation:

https://openjdk.java.net/faq/

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:

http://openocd.org/

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:

https://www.python.org/

Documentation:

https://docs.python.org/3/

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:

https://github.com/renode

https://renode.io/

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:

https://installbuilder.com/

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).