System Booting¶
Preface¶
ROC-RK3308-CC has a very flexible boot up method. Generally, the ROC-RK3308-CC motherboard will not be bricked unless the hardware is damaged.
If the bootloader is damaged due to unexpected error occurred during the upgrading process and the re-upgrading does not work, you can still enter MaskRom mode to fix it.
Loading mode¶
ROC-RK3308-CC has 32KB BootRom and 256KB internal SRAM, which supports to load the system from the following devices:
8 bit Async Nand Flash
8 bit toggle Nand Flash
SPI interface
eMMC interface
SDMMC interface
Boot sequence¶
The boot sequence is listed as below:
Power on and initialize the master control
Run BootRom code on SRAM and verify the bootloader in the storage devices
Once verified successfully, load and run the bootloader boot code
bootloader boot code initializes the DDR memory and load complete bootloader code into DDR memory and run it
bootloader loads the Linux kernel on the storage devices and gives the executive right to the the Linux kernel
Boot mode¶
ROC-RK3308-CC has four boot modes:
Loader mode
MaskRom mode
Recovery mode
Normal mode
Loader¶
In Loader mode, the bootloader will enter into upgrade status to wait for the command of the host, which is mainly used for firmware upgrade and etc.
In order to enter Loader mode, you must let bootloader detect that the RECOVERY
key is pressed down when the bootloader is booted, and OTG (Type-C interface)is at connecting status. There are two ways to enter into the Loader mode:
Disconnect power supply of the device.
Connect one end of Type-A interface of USB Type-C cable to the host firstly.
Press and hold the
RECOVERY
key of the device.Connect the other end of Type-C interface of USB Type-C to the device.
Release
RECOVERY
key after about 2 seconds.
MaskRom mode¶
If the board nerver burning the firmware, the chip will boot into Maskrom mode, in which we can burn the initial firmware. If you encounter any circumstance that the Loader fails to start normally during the development and debugging process, you can also enter the Maskrom mode to burn the firmware.
MaskRom mode is mostly used for system fixing when the bootloader is damaged.
Generally, you don’t need to enter into MaskRom mode. Only when the bootloader check fails (unable to read the IDR block, or the bootloader is damaged), the BootRom code would enter the MaskRom mode. At this time, the BootRom code waits for the host to transfer the bootloader code through the USB interface, then loads and runs it.
For forcing into MaskRom mode, please refer to 《MaskRom》 Chapter.
Recovery¶
The system guides the boot of recovery, which mainly used for operation like upgrading and factory reset.
Normal mode¶
The system guides the boot of rootfs and loads rootfs.And most developments are debugged in this mode.