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:

  1. Power on and initialize the master control

  2. Run BootRom code on SRAM and verify the bootloader in the storage devices

  3. Once verified successfully, load and run the bootloader boot code

  4. bootloader boot code initializes the DDR memory and load complete bootloader code into DDR memory and run it

  5. 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:

  1. Disconnect power supply of the device.

  2. Connect one end of Type-A interface of USB Type-C cable to the host firstly.

  3. Press and hold the RECOVERY key of the device.

  4. Connect the other end of Type-C interface of USB Type-C to the device.

  5. 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.