# Introduction U5SeriesPkg provides the common EFI library and driver modules for SiFive U5 series core platforms. Currently the supported platforms are Freedom U500 VC707 platform and Freedom U540 HiFive Unleashed platform. Both platforms are built with below common packages, - **U5SeriesPkg**, edk2 platform branch (Currently is in edk2-platforms/devel-riscvplatforms branch) - **RiscVPlatformPkg**, edk2 master branch (Currently is in edk2-staging/RISC-V-V2 branch) - **RiscVPkg**, edk2 master branch (Currently is in edk2-staging/RISC-V-V2 branch) ## U500 Platform This is a sample RISC-V EDK2 platform package used agaist SiFive Freedom U500 VC707 FPGA Dev Kit, please refer to "SiFive Freedom U500 VC707 FPGA Getting Started Guide" on https://www.sifive.com/documentation. ## U540 Platform This is a sample RISC-V EDK2 platform package used against SiFive Freedom U540 HiFive Unleashed development board, please refer to "SiFive Freedom U540-C000 Manual" on https://www.sifive.com. The binary built from Platform/SiFive/U5SeriesPkg/FreedomU540HiFiveUnleashedBoard/ can run on main stream [QEMU](https://git.qemu.org/?p=qemu.git;a=summary) using qemu-system-riscv64 under riscv64-softmmu. Launch the binary with ``` -cpu sifive-u54 -machine sifive_u ``` ## Download the sources ``` git clone https://github.com/tianocore/edk2-staging.git # Checkout RISC-V-V2 branch git clone https://github.com/tianocore/edk2-platforms.git # Checkout devel-riscvplatforms branch git clone https://github.com/tianocore/edk2-non-osi.git ``` ## Platform Owners Chang, Abner Chen, Gilbert ## Platform Status Currently the binary built from U500Pkg can boot SiFive Freedom U500 VC707 FPGA to EFI shell with console in/out enabled. ## Linux Build Instructions You can build the RISC-V platform using below script, `build -a RISCV64 -t GCC5 -p Platform/SiFive/U5SeriesPkg/FreedomU500VC707Board/U500.dsc` ## Supported Operating Systems Only support to boot to EFI Shell so far. ## Known Issues and Limitations Only RISC-V RV64 is verified on this platform. ## Related Materials - [RISC-V OpenSbi](https://github.com/riscv/opensbi) - [SiFive U500 VC707 FPGA Getting Started Guide](https://sifive.cdn.prismic.io/sifive%2Fc248fabc-5e44-4412-b1c3-6bb6aac73a2c_sifive-u500-vc707-gettingstarted-v0.2.pdf) - [SiFive Freedom U540-C000 Manual](https://sifive.cdn.prismic.io/sifive%2F834354f0-08e6-423c-bf1f-0cb58ef14061_fu540-c000-v1.0.pdf) - [SiFive RISC-V Core Document](https://www.sifive.com/documentation) ## U5SeriesPkg Libraries and Drivers ### PeiCoreInfoHobLib This is the library to create RISC-V core characteristics for building up RISC-V related SMBIOS records to support the unified boot loader and OS image. This library leverage the silicon libraries provided in Silicon/SiFive. ### RiscVPlatformTimerLib This is common U5 series platform timer library which has the platform-specific timer implementation. ### TimerDxe This is U5 series platform timer DXE driver whcih has the platform-specific timer implementation. ## U500 Platform Libraries and Drivers ### RiscVOpensbiPlatformLib In order to reduce the dependencies with RISC-V OpenSBI project (https://github.com/riscv/opensbi) and fewer burdens to EDK2 build process, the implementation of RISC-V EDK2 platform is leveraging platform source code from OpenSBI code tree. The "platform.c" under OpenSbiPlatformLib is cloned from RISC-V OpenSBI code tree (in EDK2 RiscVPkg) and built based on EDK2 build environment. ### PlatformPei This is the platform-implementation specific library which is executed in early PEI phase for U500 platform initialization. ## U540 Platform Libraries and Drivers ### RiscVOpensbiPlatformLib In order to reduce the dependencies with RISC-V OpenSBI project (https://github.com/riscv/opensbi) and fewer burdens to EDK2 build process, the implementation of RISC-V EDK2 platform is leveraging platform source code from OpenSBI code tree. The "platform.c" under OpenSbiPlatformLib is cloned from RISC-V OpenSBI code tree (in EDK2 RiscVPkg) and built based on EDK2 build environment. ### PlatformPei This is the platform-implementation specific library which is executed in early PEI phase for U540 platform initialization. ## U5SeriesPkg Platform PCD settings | **PCD name** |**Usage**| |----------------|----------| |PcdNumberofU5Cores| Number of U5 core enabled on U5 series platform| |PcdE5MCSupported| Indicates whether the Monitor Core (E5) is supported on U5 series platform| |PcdU5UartBase|Platform serial port base address|