WCH has based its RISC-V toolchain on the xPack builds from Liviu Ionescu:
https://github.com/xpack-dev-tools/riscv-none-embed-gcc-xpack/releases/tag/v8.2.0-3.1/
Both output the same version string:
riscv-none-embed-gcc.exe (xPack GNU RISC-V Embedded GCC, 32-bit) 8.2.0 Copyright (C) 2018 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
However, there are some minor differences between the RISC-V toolchain from WCH and the one from xPack. The WCH toolchain supports a few more RISC-V instruction sets, like:
- rv32ecwx
- rv32imacxw
- rv32imafcxw
Question 1:
The 'w' and 'x' letters are non-standard extensions. What do they stand for?
I also notice that the WCH toolchain has the following libraries that don't appear anywhere in the native xPack toolchain:
- libIQMath_RV32.a
- libprintf.a
- libprintfloat.a
Question 2:
What are these non-standard libraries for? I was able to build a sample project with both the WCH toolchain and the native xPack toolchain. In both cases, the printf() function worked just fine, sending characters over the TX line. So I wonder what the libprintf.a library is used for, if the setup works without that library?
Question 3:
Where can I find the source code of the WCH toolchain, and the build instructions?
Thank you very much.