Skip to content

Commit

Permalink
SiFive/U5SeriesPkg Add U5SeriesPkg.
Browse files Browse the repository at this point in the history
Initial U5SeriesPkg for U5 series platforms.

Signed-off-by: Abner Chang <[email protected]>
Reviewed-by:Gilbert Chen <[email protected]>
Acked-by:Leif Lindholm <[email protected]>

Cc: Michael D Kinney <[email protected]>
Cc: Ard Biesheuvel <[email protected]>
Cc: Leif Lindholm <[email protected]>
Cc: Gilbert Chen <[email protected]>
Cc: Palmer Dabbelt <[email protected]>
  • Loading branch information
Abner Chang committed Aug 23, 2020
1 parent 3efcec3 commit f2ffd27
Show file tree
Hide file tree
Showing 4 changed files with 169 additions and 0 deletions.
110 changes: 110 additions & 0 deletions Platform/SiFive/U5SeriesPkg/Readme.md
Original file line number Diff line number Diff line change
@@ -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-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 <[email protected]>
Chen, Gilbert <[email protected]>

## 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|
34 changes: 34 additions & 0 deletions Platform/SiFive/U5SeriesPkg/U5SeriesPkg.dec
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
## @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.<BR>
#
# 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.PcdU5PlatformSystemClock|0x0|UINT32|0x00001000
gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdNumberofU5Cores|0x8|UINT32|0x00001001
gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdE5MCSupported|TRUE|BOOLEAN|0x00001002
gSiFiveU5SeriesPlatformsPkgTokenSpaceGuid.PcdU5UartBase|0x0|UINT32|0x00001003

[PcdsPatchableInModule]

[UserExtensions.TianoCore."ExtraFiles"]
U5SeriesPkg.uni
13 changes: 13 additions & 0 deletions Platform/SiFive/U5SeriesPkg/U5SeriesPkg.uni
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
// /** @file
// SiFive U5 Series Package Localized Strings and Content.
//
// Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
//
// 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."
12 changes: 12 additions & 0 deletions Platform/SiFive/U5SeriesPkg/U5SeriesPkgExtra.uni
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// /** @file
// SiFive U5 Series Package Localized Strings and Content.
//
// Copyright (c) 2019, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
//
// SPDX-License-Identifier: BSD-2-Clause-Patent
//
// **/

#string STR_PROPERTIES_PACKAGE_NAME
#language en-US
"SiFive U5 series platform package"

0 comments on commit f2ffd27

Please sign in to comment.