I have an embedded linux device running U-boot as the bootloader system (RBL -> MLO -> U-boot). The board is based on the Beaglebone black, I believe, but not 100% sure, just in case that is helpful.
Updates are delivered as .tgz archives to the device via USB. A bash script is used to run the update process. I’ve made changes to the kernel and hardware configuration of the board (MLO, u-boot.img, .dtb, and zImage files changed). While the script is able to overwrite the old MLO and u-boot.img to the boot partition of our SD card with the new versions, we saw some issues with hardware initialization not being done properly on the restart (e.g. touchscreen input not working, other peripherals not working).
The restart is performed after the update is complete. We found that a hard restart of the device (power off, power back on) instead of a
reboot command seems to fix this issue and all hardware initializes fine. I think this is because the hard restart of the unit re-runs the bootloading process, where as the reboot command does not.
Am I correct? If so, is there a way for me to run something akin to
reboot command that will restart the device from the bootloading process? Are there any dangers to using it?