[PATCH v3 00/10] RISC-V SiFive FU540 support SPL

Pragnesh Patel pragnesh.patel at sifive.com
Fri Jan 24 06:50:13 CET 2020


This series add support for SPL to FU540.U-Boot SPL can boot from
L2 LIM (0x0800_0000) and jump to OpenSBI(FW_DYNAMIC firmware) and
U-Boot proper from MMC devices.

How to test this patch:
1) Go to OpenSBI-dir : make PLATFORM=sifive/fu540 O=build_dir I=install_dir FW_DYNAMIC=y install
2) cp install_dir/platform/sifive/fu540/firmware/fw_dynamic.bin <u-boot-dir>/
3) Change to u-boot-dir
4) make sifive_fu540_spl_defconfig
5) make all
6) ZSBL loads the U-boot SPL(u-boot-spl.bin) from a partition with
   GUID type 2e54b353-1271-4842-806f-e436d6af6985

   sudo dd if=spl/u-boot-spl.bin of=/dev/sdc4 bs=1M

7) U-boot SPL expects a u-boot FIT image(u-boot.itb) from 1st partition(/dev/sdc1)
   of SD card irrespective of GUID

   sudo dd if=u-boot.itb of=/dev/sdc1 bs=1M

Following are the boot messages on FU540 five cores SMP platform:

U-Boot SPL 2020.01-00178-g30592e8819 (Jan 22 2020 - 14:37:24 +0530)
Trying to boot from MMC1


U-Boot 2020.01-00178-g30592e8819 (Jan 22 2020 - 14:37:24 +0530)

CPU:   rv64imafdc
Model: SiFive HiFive Unleashed A00
DRAM:  8 GiB
MMC:   spi at 10050000:mmc at 0: 0
In:    serial at 10010000
Out:   serial at 10010000
Err:   serial at 10010000
Board serial number should not be 0 !!
Net:
Warning: ethernet at 10090000 (eth0) using random MAC address - e6:40:50:48:0d:8b
eth0: ethernet at 10090000
Hit any key to stop autoboot:  0
=> setenv serverip 172.16.35.74;setenv ipaddr 172.16.35.40;tftpboot 0x83000000 fit.itb;bootm 0x83000000
ethernet at 10090000: PHY present at 0
ethernet at 10090000: Starting autonegotiation...
ethernet at 10090000: Autonegotiation complete
ethernet at 10090000: link up, 100Mbps full-duplex (lpa: 0x41e1)
Using ethernet at 10090000 device
TFTP from server 172.16.35.74; our IP address is 172.16.35.40
Filename 'fit.itb'.
Load address: 0x83000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###################################
         940.4 KiB/s
done
Bytes transferred = 13823823 (d2ef4f hex)
## Loading kernel from FIT Image at 83000000 ...
   Using 'config-1' configuration
   Trying 'kernel at 1' kernel subimage
     Description:  Linux kernel
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x830000d8
     Data Size:    9247260 Bytes = 8.8 MiB
     Architecture: RISC-V
     OS:           Linux
     Load Address: 0x80200000
     Entry Point:  0x80200000
   Verifying Hash Integrity ... OK
## Loading ramdisk from FIT Image at 83000000 ...
   Using 'config-1' configuration
   Trying 'ramdisk at 1' ramdisk subimage
     Description:  ramdisk
     Type:         RAMDisk Image
     Compression:  gzip compressed
     Data Start:   0x838d3378
     Data Size:    4568674 Bytes = 4.4 MiB
     Architecture: RISC-V
     OS:           Linux
     Load Address: 0x82000000
     Entry Point:  unavailable
   Verifying Hash Integrity ... OK
   Loading ramdisk from 0x838d3378 to 0x82000000
WARNING: 'compression' nodes for ramdisks are deprecated, please fix your .its file!
## Loading fdt from FIT Image at 83000000 ...
   Using 'config-1' configuration
   Trying 'fdt at 1' fdt subimage
     Description:  unavailable
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x838d1b80
     Data Size:    6023 Bytes = 5.9 KiB
     Architecture: RISC-V
   Verifying Hash Integrity ... OK
   Booting using the fdt blob at 0x838d1b80
   Loading Kernel Image
   Using Device Tree in place at 00000000838d1b80, end 00000000838d6306

Starting kernel ...

[    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[    0.000000] Linux version 5.3.0-13236-g97f9a3c4eee5 (pragneshp at sachinj2-OptiPlex-7010) (gcc version 8.2.0 (Buildroot 2018.11-rc2-00003-ga0787e9
[    0.000000] earlycon: sifive0 at MMIO 0x0000000010010000 (options '')
[    0.000000] printk: bootconsole [sifive0] enabled
[    0.000000] Initial ramdisk at: 0x(____ptrval____) (4568674 bytes)
....
....
Welcome to Buildroot
buildroot login: root
Password:
#

Changes in v3:
- Remove arch-fu540 and arch-sifive from arch/riscv/include/asm/
- Split SPL patches into DDR and SPL and spl defconfig
- Update fu540/MAINTAINERS file
- Update fu540.rst on how to build and flash U-boot SPL

Changes in v2:
- Add DM driver Sifive OTP
- Split SPL patches into multiple patches
- Add a seprate patch for _image_binary_end and crc7.c
- Add a seprate patch to add board -u-boot.dtsi files
- Update FU540 RISC-V documentation

Pragnesh Patel (10):
  misc: add driver for the Sifive otp controller
  riscv: Add _image_binary_end for SPL
  lib: Makefile: build crc7.c when CONFIG_MMC_SPI
  riscv: sifive: dts: fu540: Add board -u-boot.dtsi files
  riscv: sifive: fu540: add DDR4 info
  riscv: sifive: fu540: add SPL configuration
  configs: fu540: Add config file for U-boot SPL
  riscv: sifive: fu540: enable all cache ways from u-boot proper
  sifive: fix palmer's email address and add sifive_fu540_spl_defconfig
  doc: update FU540 RISC-V documentation

 arch/riscv/cpu/u-boot-spl.lds                 |    1 +
 arch/riscv/dts/fu540-c000-u-boot.dtsi         |   55 +
 .../dts/hifive-unleashed-a00-u-boot.dtsi      |   22 +
 board/sifive/fu540/Kconfig                    |    8 +
 board/sifive/fu540/MAINTAINERS                |    3 +-
 board/sifive/fu540/Makefile                   |    6 +
 board/sifive/fu540/cache.c                    |   30 +
 board/sifive/fu540/cache.h                    |   13 +
 board/sifive/fu540/ddr.c                      |  868 ++++++++++++
 board/sifive/fu540/fu540-memory-map.h         |   33 +
 board/sifive/fu540/fu540.c                    |  139 +-
 board/sifive/fu540/regconfig-ctl.h            |  270 ++++
 board/sifive/fu540/regconfig-phy.h            | 1220 +++++++++++++++++
 board/sifive/fu540/spl.c                      |  252 ++++
 board/sifive/fu540/ux00ddr.h                  |   45 +
 board/sifive/fu540/ux00prci.h                 |   56 +
 configs/sifive_fu540_defconfig                |    2 +
 configs/sifive_fu540_spl_defconfig            |   26 +
 doc/board/sifive/fu540.rst                    |  376 +++++
 drivers/misc/Kconfig                          |    7 +
 drivers/misc/Makefile                         |    1 +
 drivers/misc/ememory-otp.c                    |  207 +++
 include/configs/sifive-fu540.h                |   18 +
 lib/Makefile                                  |    1 +
 24 files changed, 3585 insertions(+), 74 deletions(-)
 create mode 100644 arch/riscv/dts/fu540-c000-u-boot.dtsi
 create mode 100644 arch/riscv/dts/hifive-unleashed-a00-u-boot.dtsi
 create mode 100644 board/sifive/fu540/cache.c
 create mode 100644 board/sifive/fu540/cache.h
 create mode 100644 board/sifive/fu540/ddr.c
 create mode 100644 board/sifive/fu540/fu540-memory-map.h
 create mode 100644 board/sifive/fu540/regconfig-ctl.h
 create mode 100644 board/sifive/fu540/regconfig-phy.h
 create mode 100644 board/sifive/fu540/spl.c
 create mode 100644 board/sifive/fu540/ux00ddr.h
 create mode 100644 board/sifive/fu540/ux00prci.h
 create mode 100644 configs/sifive_fu540_spl_defconfig
 create mode 100644 drivers/misc/ememory-otp.c

-- 
2.17.1



More information about the U-Boot mailing list