Instructions for UART boot?

Hi Sifive/ESWIN,

Would you mind clarify how to boot from UART? What I’ve done so far:

  1. Grab the nsign configuration file used to generate the bootloader blob: meta-sifive/recipes-bsp/bootchain/files/nsign.cfg at rel/meta-sifive/hifive-premier-p550 · sifiveinc/meta-sifive · GitHub

  2. Apply the following patch:

    --- a/nsign.cfg 2024-11-13 16:46:57.239713067 -0800
    +++ b/nsign.cfg 2025-05-02 20:25:27.746613201 -0700
    @@ -1,5 +1,5 @@
    - cmd=chief_sign
    - out=bootloader_ddr5_secboot.bin
    + cmd=uart_sign
    + out=bootchain.ihex
    
  3. Generate the bootchain.ihex with the ddr_fw.bin and second_boot_fw.bin from sifive repo.

The ihex can be successfully generated. However, with the board in UART boot, and transfered the ihex via minicom ascii mode, the boot failed. SCPU reported the followin:

exception occur:
mcause = 0x00000007
mepc   = 0x58017840
mtval  = 0x00000000

It seems like a NULL pointer dereference to me. Please let me know if there’s anything I missed. Thanks!

Raza sent me the correct nsign config, and I can do UART boot now:

This is very useful for advanced users like myself who hacks OpenSBI and U-Boot from time to time

1 Like