I try to run coreboot + opensbi + linux kernel on HiFive Unleashed and separate hardware-initiated code for a simpler upgrade. To do this, a loader called riscv-gptl was added to load opensbi and linux from the sdcard and run as a coreboot payload.
However, I have encountered a strange problem. After running the specific firmware, I ran the normal firmware again (without re-powering) and the normal firmware could run. The button reset has no effect and cannot be runned after power-on again.
normal firmware, please refer to https://github.com/hardenedlinux/embedded-iot_profile/blob/master/docs/riscv...
Specific firmware (coreboot which payload is opensbi FW_JUMP) create by the following command ``` # get source code git clone git@github.com:hardenedlinux/coreboot-HiFiveUnleashed.git -b gptl coreboot git clone git@github.com:wxjstz/opensbi.git -b gptl
# build opensbi cd opensbi make CROSS_COMPILE=riscv64-elf- PLATFORM=sifive/fu540 cd -
# build coreboot cd coreboot make menuconfig # Mainboard->Mainboard vendor, select **SiFive** # Mainboard->Mainboard model, select **HiFive Unleashed** # Payload->Add a payload, select **An ELF executable payload** # Payload->Payload path and filename, Use default value **payload.elf** cp ../opensbi/build/platform/sifive/fu540/firmware/fw_jump.elf ./payload.elf make cd -
# Burn sudo dd if=coreboot/build/coreboot.rom of=/dev/sdX; sync ```