Initial U5SeriesPkg for U5 series platforms. Signed-off-by: Abner Chang Cc: Michael D Kinney Cc: Ard Biesheuvel Cc: Leif Lindholm Cc: Gilbert Chen Cc: Palmer Dabbelt Signed-off-by: Abner Chang --- Platform/SiFive/U5SeriesPkg/U5SeriesPkg.dec | 33 +++++++ Platform/SiFive/U5SeriesPkg/Readme.md | 110 +++++++++++++++++++++++ Platform/SiFive/U5SeriesPkg/U5SeriesPkg.uni | 13 +++ Platform/SiFive/U5SeriesPkg/U5SeriesPkgExtra.uni | 12 +++ 4 files changed, 168 insertions(+) create mode 100644 Platform/SiFive/U5SeriesPkg/U5SeriesPkg.dec create mode 100644 Platform/SiFive/U5SeriesPkg/Readme.md create mode 100644 Platform/SiFive/U5SeriesPkg/U5SeriesPkg.uni create mode 100644 Platform/SiFive/U5SeriesPkg/U5SeriesPkgExtra.uni diff --git a/Platform/SiFive/U5SeriesPkg/U5SeriesPkg.dec b/Platform/SiFive/U5SeriesPkg/U5SeriesPkg.dec new file mode 100644 index 0000000..a01135b --- /dev/null +++ b/Platform/SiFive/U5SeriesPkg/U5SeriesPkg.dec @@ -0,0 +1,33 @@ +## @file U5SeriesPkg.dec +# This Package provides modules and libraries.for SiFive U5 series platforms. +# +# Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + DEC_SPECIFICATION = 0x0001001b + PACKAGE_NAME = U5SeriesPkg + PACKAGE_UNI_FILE = U5SeriesPkg.uni + PACKAGE_GUID = AD6E43CA-7FED-4CEA-8151-68B2C5F12B3A + PACKAGE_VERSION = 1.0 + +[Includes] + Include + +[LibraryClasses] + +[Guids] + gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid = {0x725B804B, 0x10B5, 0x4326, { 0xAD, 0xFF, 0x59, 0xCE, 0x6E, 0xFD, 0x5B, 0x36 }} + +[PcdsFixedAtBuild] + gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdNumberofU5Cores|0x8|UINT32|0x00001000 + gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdE5MCSupported|TRUE|BOOLEAN|0x00001001 + gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdU5UartBase|0x0|UINT32|0x00001002 + +[PcdsPatchableInModule] + +[UserExtensions.TianoCore."ExtraFiles"] + U5SeriesPkg.uni diff --git a/Platform/SiFive/U5SeriesPkg/Readme.md b/Platform/SiFive/U5SeriesPkg/Readme.md new file mode 100644 index 0000000..535fa9d --- /dev/null +++ b/Platform/SiFive/U5SeriesPkg/Readme.md @@ -0,0 +1,110 @@ +# 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-riscv-v2-PATCHv5 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 agaist 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/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-riscv-v2-PATCHv5 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/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 +### RiscVOpnesbiPlatformLib +In order to reduce the dependencies with RISC-V OpenSBI project +(https://github.com/riscv/opensbi) and less burdens to EDK2 build process, the +implementation of RISC-V EDK2 platform is leverage 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 +### RiscVOpnesbiPlatformLib +In order to reduce the dependencies with RISC-V OpenSBI project +(https://github.com/riscv/opensbi) and less burdens to EDK2 build process, the +implementation of RISC-V EDK2 platform is leverage 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| diff --git a/Platform/SiFive/U5SeriesPkg/U5SeriesPkg.uni b/Platform/SiFive/U5SeriesPkg/U5SeriesPkg.uni new file mode 100644 index 0000000..12e8c15 --- /dev/null +++ b/Platform/SiFive/U5SeriesPkg/U5SeriesPkg.uni @@ -0,0 +1,13 @@ +// /** @file +// SiFive U5 Series Package Localized Strings and Content. +// +// Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.
+// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + + +#string STR_PACKAGE_ABSTRACT #language en-US "Provides SiFIve RISC-V U5 series platform modules and libraries" + +#string STR_PACKAGE_DESCRIPTION #language en-US "This Package SiFIve RISC-V U5 series platform modules and libraries." diff --git a/Platform/SiFive/U5SeriesPkg/U5SeriesPkgExtra.uni b/Platform/SiFive/U5SeriesPkg/U5SeriesPkgExtra.uni new file mode 100644 index 0000000..244595a --- /dev/null +++ b/Platform/SiFive/U5SeriesPkg/U5SeriesPkgExtra.uni @@ -0,0 +1,12 @@ +// /** @file +// SiFive U5 Series Package Localized Strings and Content. +// +// Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.
+// +// SPDX-License-Identifier: BSD-2-Clause-Patent +// +// **/ + +#string STR_PROPERTIES_PACKAGE_NAME +#language en-US +"SiFive U5 series platform package" -- 2.7.4