This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
products:sbc:edge2:hardware:edge2-boot-flow [2022/10/31 01:41] hyphop |
products:sbc:edge2:hardware:edge2-boot-flow [2023/07/17 03:08] hyphop [Uboot] |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ~~tag> Edge2 boot~~ | ||
+ | |||
====== Edge2 Boot flow ====== | ====== Edge2 Boot flow ====== | ||
- | Edge2 have advanced and flexible | + | [[:Edge2]] have advanced and flexible |
- | ====== Bootmode ======= | ||
- | '' | + | MCU => BROM => [[#spl-stage|SPL]] => [[#u-boot-stage|U-Boot]] => OS target |
+ | |||
- | ^ bootmode | + | <WRAP important > |
+ | Next information actual for MCU ver: 0x0002 | ||
+ | </ | ||
+ | |||
+ | ====== Hardware buttons ====== | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | More detail: [[./ | ||
+ | |||
+ | |||
+ | ====== MCU features ====== | ||
+ | |||
+ | See too: [[# | ||
+ | |||
+ | ===== Boot mode ====== | ||
+ | |||
+ | Common boot mode configuration '' | ||
+ | |||
+ | ^ boot mode ^ value ^ | ||
| spi | 0 | | | spi | 0 | | ||
| mmc | 1 | | | mmc | 1 | | ||
- | ====== OOWOW mode ======= | ||
- | '' | + | ```sh boot-mode read |
+ | i2cget -f -y 2 0x18 0x20 | ||
+ | ``` | ||
+ | |||
+ | ===== Boot flag ====== | ||
+ | |||
+ | This flag '' | ||
- | ^ oowow_mode | + | ^ boot flag ^ value ^ |
| disabled | | disabled | ||
- | | request | + | | [[/ |
- | | activated | + | | boot from SPI |
- | | passed | + | | boot from eMMC |3 | |
- | | rescue | + | |
- | ====== Reboot modes by MCU ======= | ||
- | '' | + | ```sh boot-flag read |
+ | i2cget | ||
+ | ``` | ||
- | ^ oowow_mode | + | <WRAP important > |
- | | spi |0 | | + | boot-flag will be used only one time and after reboot will be masked by '' |
- | | mmc |1 | | + | </ |
- | | default reboot |2 | | + | |
- | + | ^ boot flag note ^ mask ^ | |
- | ===== Boot modes oowow shell usage ===== | + | | spl mask |0x50 | |
+ | | oowow mask |0xA0 | | ||
+ | |||
+ | |||
+ | <WRAP important > | ||
+ | boot-flag value ''> | ||
+ | </ | ||
+ | |||
+ | ===== Reboot mode ====== | ||
+ | |||
+ | We can reboot device by non standard way via MCU '' | ||
+ | |||
+ | ^ reboot mode ^ value ^ | ||
+ | | SPI | ||
+ | | normal reboot | ||
+ | | eMMC |2 | | ||
+ | |||
+ | ```sh reboot-mode read | ||
+ | i2cset -f -y 2 0x18 0x91 value | ||
+ | ``` | ||
+ | |||
+ | <WRAP important > | ||
+ | Device will be rebooted immediately after successful writing to '' | ||
+ | </ | ||
+ | |||
+ | <WRAP important > | ||
+ | Only '' | ||
+ | '' | ||
+ | '' | ||
+ | </ | ||
+ | |||
+ | |||
+ | See too: [[# | ||
+ | ====== Boot modes oowow shell usage ====== | ||
WIP: | WIP: | ||
- | ==== Set boot mode ==== | + | ==== Boot mode setup examples |
```shell | ```shell | ||
+ | |||
+ | ## read current boot-mode | ||
+ | |||
~# bootmode | ~# bootmode | ||
spi | spi | ||
+ | |||
+ | ## setup to MMC | ||
~# bootmode mmc | ~# bootmode mmc | ||
Line 47: | Line 112: | ||
~# bootmode | ~# bootmode | ||
mmc | mmc | ||
+ | |||
+ | ## setup to SPI | ||
~# bootmode spi | ~# bootmode spi | ||
Line 80: | Line 147: | ||
``` | ``` | ||
- | ==== Reboot by MCU ==== | + | ==== Reboot by MCU examples |
Forced hardware reboot | Forced hardware reboot | ||
```shell | ```shell | ||
+ | ## oowow shell | ||
~# mcu_reboot | ~# mcu_reboot | ||
- | ~# i2cset -f -y 2 0x18 0x91 2 | + | ## common system |
+ | ~# i2cset -f -y 2 0x18 0x91 1 | ||
``` | ``` | ||
+ | |||
+ | ==== Reboot into OOWOW via i2c command ==== | ||
+ | |||
+ | ```sh reboot into oowow | ||
+ | i2cset -f -y 2 0x18 0x92 1 | ||
+ | i2cset -f -y 2 0x18 0x91 1 | ||
+ | ``` | ||
+ | |||
+ | ==== Reboot from SPI flash U-Boot via i2c command ==== | ||
+ | |||
+ | ```sh reset and use u-boot from spi flash | ||
+ | i2cset -f -y 2 0x18 0x91 0 | ||
+ | ``` | ||
+ | |||
+ | <WRAP important > | ||
+ | In this case U-boot will be started from SPI flash, next booting will in same u-boot prio '' | ||
+ | </ | ||
====== SPL stage ====== | ====== SPL stage ====== | ||
- | SPL boot loader priority: '' | + | SPL boot loader priority: '' |
<WRAP important > | <WRAP important > | ||
Line 98: | Line 184: | ||
</ | </ | ||
- | Boot mode '' | + | Boot mode '' |
+ | ====== U-Boot stage ====== | ||
- | ```log | + | Current |
- | U-Boot SPL board init | + | ===== oowow spi uboot ===== |
- | U-Boot SPL 2017.09 (Sep 15 2022 - 14:38:28) | + | |
- | Failed to set cpub01 | + | ```shell boot_targets |
- | Failed to set cpub23 | + | kedge2# printenv boot_targets |
- | I2c2 speed: 100000Hz | + | boot_targets=usb0 mmc1 mmc0 pxe dhcp fail |
- | MCU: bootmode: 1, oowow 3 | + | |
- | MCU: oowow 0 | + | |
- | board_boot_order: | + | |
- | !!! same-as-spl: | + | |
- | !!! / | + | |
- | !!! / | + | |
- | !!! /spi@fe2b0000/ | + | |
- | Trying to boot from MMC2 :: 0 | + | |
- | Card did not respond to voltage select! | + | |
- | mmc_init: -95, time 12 | + | |
- | spl: mmc init failed with error: -95 | + | |
- | Trying to boot from MMC1 :: 1 | + | |
- | Trying fit image at 0x4000 sector | + | |
``` | ``` | ||
- | Boot mode '' | + | ===== mmc uboot ===== |
- | ```log | + | default eMMC u-boot log for Ubuntu images |
- | U-Boot SPL board init | + | |
- | U-Boot SPL 2017.09 (Sep 15 2022 - 14:38:28) | + | ```shell boot_targets |
- | MCU: bootmode: 0, oowow 3 | + | kedge2# printenv boot_targets |
- | MCU: oowow 0 | + | boot_targets=usb0 mmc1 mmc0 pxe dhcp |
- | board_boot_order: | + | |
- | !!! same-as-spl: | + | |
- | board_spl_was_booted_from: | + | |
- | +++ / | + | |
- | !!! / | + | |
- | !!! / | + | |
- | !!! / | + | |
- | Trying to boot from MTD2 :: 0 | + | |
- | Trying fit image at 0x300 sector | + | |
``` | ``` | ||
- | Boot [[:OOWOW:]] - hold '' | ||
- | ```log u-boot-spl-oowow-mode.log | + | |
- | U-Boot SPL board init | + | ====== Advanced ====== |
- | U-Boot SPL 2017.09 (Sep 15 2022 - 14:38:28) | + | |
- | MCU: bootmode: 0, oowow 1 | + | ===== MCU registers annotation ===== |
- | MCU: oowow 2 | + | |
- | board_boot_order: | + | |
- | !!! same-as-spl: | + | |
- | +++ / | + | |
- | !!! / | + | |
- | !!! / | + | |
- | !!! / | + | |
- | Trying to boot from MTD2 :: 0 | + | |
- | Trying fit image at 0x300 sector | + | |
``` | ``` | ||
- | ====== U-Boot stage ====== | + | MCU version: 02 & 03 |
- | ```shell boot_targets | + | 0x91 REBOOT_MODE |
- | kedge2# | + | 0 - reset and boot from SPI |
- | boot_targets=usb0 mmc1 mmc0 pxe dhcp fail | + | 1 - reset normal |
+ | 2 - reset and boot from eMMC | ||
+ | |||
+ | 0x92 BOOT_FLAG | ||
+ | 0 - normal | ||
+ | 1 - press FUNC boot-up | ||
+ | 2 - reset from SPI boot-up | ||
+ | 3 - reset from eMMC boot-up | ||
+ | ``` | ||
+ | |||
+ | See too: [[# | ||
+ | |||
+ | ===== U-boot spl ===== | ||
+ | |||
+ | WIP: | ||
+ | |||
+ | ```c u-boot/ | ||
+ | |||
+ | // ...... | ||
+ | |||
+ | /* khadas mcu part begin */ | ||
+ | #define MCU_I2C_BUS_NUM | ||
+ | #define MCU_I2C_CHIP_ADDR | ||
+ | #define MCU_I2C_REG_BOOT_MODE | ||
+ | #define MCU_I2C_REG_BOOT_MODE_SPI | ||
+ | #define MCU_I2C_REG_BOOT_MODE_MMC | ||
+ | #define MCU_I2C_REG_BOOT_FLAG | ||
+ | #define MCU_I2C_REG_RESET_MODE | ||
+ | #define MCU_I2C_REG_BOOT_FLAG_NORMAL 0x00 | ||
+ | #define MCU_I2C_REG_BOOT_FLAG_FUNC | ||
+ | #define MCU_I2C_REG_BOOT_FLAG_OOWOW | ||
+ | #define MCU_I2C_REG_BOOT_FLAG_SPI | ||
+ | #define MCU_I2C_REG_BOOT_FLAG_EMMC | ||
+ | #define MCU_I2C_REG_BOOT_FLAG_RESCUE 0x05 | ||
+ | #define MCU_I2C_REG_BOOT_FLAG_PASS | ||
+ | |||
+ | #define MCU_I2C_REG_LED | ||
+ | /* khadas mcu part end */ | ||
+ | |||
+ | void board_boot_order(u32 *spl_boot_list) | ||
+ | { | ||
+ | const void *blob = gd-> | ||
+ | int chosen_node = fdt_path_offset(blob, | ||
+ | int idx = 0; | ||
+ | int elem; | ||
+ | int boot_device; | ||
+ | int node; | ||
+ | const char *conf; | ||
+ | |||
+ | /* khadas mcu part begin */ | ||
+ | uchar mcu_boot_mode; | ||
+ | uchar mcu_boot_flag; | ||
+ | uchar mcu_led_normal = 8; /* white breath */ | ||
+ | uchar mcu_led_reset | ||
+ | int ret; | ||
+ | struct udevice *bus; | ||
+ | struct udevice *dev; | ||
+ | |||
+ | ret = uclass_first_device(UCLASS_I2C, | ||
+ | if (ret) goto mcu_skip; | ||
+ | ret = i2c_get_chip(bus, | ||
+ | if (ret) goto mcu_skip; | ||
+ | ret = dm_i2c_read(dev, | ||
+ | ret = dm_i2c_read(dev, | ||
+ | printf(" | ||
+ | mcu_boot_mode, | ||
+ | // reset boot flag | ||
+ | if ( mcu_boot_flag != 0 ) { | ||
+ | mcu_boot_flag = mcu_boot_flag > 10 ? 0 : mcu_boot_flag ^ MCU_I2C_REG_BOOT_FLAG_PASS; | ||
+ | dm_i2c_write(dev, | ||
+ | printf(" | ||
+ | if ( mcu_boot_flag != 0 ) | ||
+ | dm_i2c_write(dev, | ||
+ | } else { | ||
+ | dm_i2c_write(dev, | ||
+ | } | ||
+ | mcu_skip: | ||
+ | /* khadas mcu part end */ | ||
+ | |||
+ | if (chosen_node < 0) { | ||
+ | debug(" | ||
+ | __func__); | ||
+ | spl_boot_list[0] = spl_boot_device(); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | printf(" | ||
+ | |||
+ | for (elem = 0; | ||
+ | (conf = fdt_stringlist_get(blob, | ||
+ | " | ||
+ | | ||
+ | const char *alias; | ||
+ | |||
+ | printf(" | ||
+ | |||
+ | /* Handle the case of 'same device the SPL was loaded from' */ | ||
+ | if (strncmp(conf, | ||
+ | |||
+ | // / | ||
+ | // / | ||
+ | |||
+ | mcu_boot_flag &= 0x0F; // restore original flag | ||
+ | if (mcu_boot_flag == 1 || mcu_boot_flag == 2 || mcu_boot_flag == 5) | ||
+ | conf = "/ | ||
+ | else if (mcu_boot_flag == 3) | ||
+ | conf = "/ | ||
+ | else if (mcu_boot_mode == MCU_I2C_REG_BOOT_MODE_MMC) | ||
+ | continue; | ||
+ | else | ||
+ | conf = board_spl_was_booted_from(); | ||
+ | |||
+ | printf(" | ||
+ | if (!conf) | ||
+ | continue; | ||
+ | } | ||
+ | |||
+ | /* First check if the list element is an alias */ | ||
+ | alias = fdt_get_alias(blob, | ||
+ | if (alias) | ||
+ | conf = alias; | ||
+ | |||
+ | /* Try to resolve the config item (or alias) as a path */ | ||
+ | node = fdt_path_offset(blob, | ||
+ | if (node < 0) { | ||
+ | debug(" | ||
+ | continue; | ||
+ | } | ||
+ | |||
+ | /* Try to map this back onto SPL boot devices */ | ||
+ | boot_device = spl_node_to_boot_device(node); | ||
+ | if (boot_device < 0) { | ||
+ | debug(" | ||
+ | __func__, node); | ||
+ | continue; | ||
+ | } | ||
+ | |||
+ | spl_boot_list[idx++] = boot_device; | ||
+ | } | ||
+ | |||
+ | /* If we had no matches, fall back to spl_boot_device */ | ||
+ | if (idx == 0) | ||
+ | spl_boot_list[0] = spl_boot_device(); | ||
+ | } | ||
+ | #endif | ||
+ | |||
+ | ``` | ||
+ | |||
+ | ===== SPI Flash partitions table ===== | ||
+ | |||
+ | ```txt MTD parts | ||
+ | 0x000000000000-0x000000080000 : " | ||
+ | 0x000000080000-0x0000000a6000 : " | ||
+ | 0x0000000a6000-0x0000000c8000 : " | ||
+ | 0x0000000c8000-0x000000148000 : " | ||
+ | 0x000000148000-0x000000448000 : " | ||
+ | 0x000000448000-0x000000488000 : " | ||
+ | 0x000000488000-0x0000004c8000 : " | ||
+ | 0x0000004c8000-0x0000006c8000 : " | ||
+ | 0x0000006c8000-0x000002000000 : " | ||
+ | ``` | ||
+ | |||
+ | ===== Uboot ===== | ||
+ | |||
+ | ==== Uboot oowow defconfig ==== | ||
+ | |||
+ | ``` | ||
+ | master@universe: | ||
+ | CONFIG_ARM=y | ||
+ | CONFIG_ARCH_ROCKCHIP=y | ||
+ | CONFIG_SPL_GPIO_SUPPORT=y | ||
+ | CONFIG_SPL_LIBCOMMON_SUPPORT=y | ||
+ | CONFIG_SPL_LIBGENERIC_SUPPORT=y | ||
+ | CONFIG_SYS_MALLOC_F_LEN=0x80000 | ||
+ | CONFIG_SPL_FIT_GENERATOR=" | ||
+ | CONFIG_ROCKCHIP_RK3588=y | ||
+ | CONFIG_ROCKCHIP_FIT_IMAGE=y | ||
+ | CONFIG_ROCKCHIP_EARLY_DISTRO_DTB=y | ||
+ | CONFIG_ROCKCHIP_EARLY_DISTRO_DTB_PATH="/ | ||
+ | CONFIG_ROCKCHIP_HWID_DTB=y | ||
+ | CONFIG_ROCKCHIP_VENDOR_PARTITION=y | ||
+ | # CONFIG_ROCKCHIP_VENDOR_PARTITION is not set | ||
+ | CONFIG_USING_KERNEL_DTB_V2=y | ||
+ | CONFIG_ROCKCHIP_FIT_IMAGE_PACK=y | ||
+ | CONFIG_ROCKCHIP_NEW_IDB=y | ||
+ | CONFIG_LOADER_INI=" | ||
+ | CONFIG_TRUST_INI=" | ||
+ | CONFIG_SPL_SERIAL_SUPPORT=y | ||
+ | CONFIG_SPL_DRIVERS_MISC_SUPPORT=y | ||
+ | CONFIG_TARGET_KEDGE2=y | ||
+ | CONFIG_SPL_LIBDISK_SUPPORT=y | ||
+ | CONFIG_SPL_SPI_FLASH_SUPPORT=y | ||
+ | CONFIG_SPL_SPI_SUPPORT=y | ||
+ | CONFIG_DEFAULT_DEVICE_TREE=" | ||
+ | CONFIG_DEBUG_UART=y | ||
+ | CONFIG_FIT=y | ||
+ | CONFIG_FIT_IMAGE_POST_PROCESS=y | ||
+ | CONFIG_FIT_HW_CRYPTO=y | ||
+ | CONFIG_SPL_LOAD_FIT=y | ||
+ | CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y | ||
+ | CONFIG_SPL_FIT_HW_CRYPTO=y | ||
+ | # CONFIG_SPL_SYS_DCACHE_OFF is not set | ||
+ | CONFIG_BOOTDELAY=1 | ||
+ | CONFIG_SYS_CONSOLE_INFO_QUIET=y | ||
+ | # CONFIG_DISPLAY_CPUINFO is not set | ||
+ | CONFIG_ANDROID_BOOTLOADER=y | ||
+ | CONFIG_ANDROID_AVB=y | ||
+ | CONFIG_ANDROID_BOOT_IMAGE_HASH=y | ||
+ | CONFIG_SPL_BOARD_INIT=y | ||
+ | # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set | ||
+ | # CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set | ||
+ | CONFIG_SPL_SEPARATE_BSS=y | ||
+ | CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION=y | ||
+ | # CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION is not set | ||
+ | CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION=0x1 | ||
+ | # CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_PARTITION is not set | ||
+ | CONFIG_SPL_MMC_WRITE=y | ||
+ | CONFIG_SPL_MTD_SUPPORT=y | ||
+ | CONFIG_SPL_ATF=y | ||
+ | CONFIG_SYS_PROMPT=" | ||
+ | CONFIG_FASTBOOT_BUF_ADDR=0xc00800 | ||
+ | CONFIG_FASTBOOT_BUF_SIZE=0x04000000 | ||
+ | CONFIG_FASTBOOT_FLASH=y | ||
+ | CONFIG_FASTBOOT_FLASH_MMC_DEV=0 | ||
+ | CONFIG_CMD_BOOTZ=y | ||
+ | CONFIG_CMD_DTIMG=y | ||
+ | # CONFIG_CMD_ELF is not set | ||
+ | # CONFIG_CMD_IMI is not set | ||
+ | # CONFIG_CMD_IMLS is not set | ||
+ | # CONFIG_CMD_XIMG is not set | ||
+ | # CONFIG_CMD_LZMADEC is not set | ||
+ | # CONFIG_CMD_UNZIP is not set | ||
+ | # CONFIG_CMD_FLASH is not set | ||
+ | # CONFIG_CMD_FPGA is not set | ||
+ | CONFIG_CMD_GPIO=y | ||
+ | CONFIG_CMD_I2C=y | ||
+ | # CONFIG_CMD_LOADB is not set | ||
+ | # CONFIG_CMD_LOADS is not set | ||
+ | CONFIG_CMD_BOOT_ANDROID=y | ||
+ | CONFIG_CMD_MMC=y | ||
+ | CONFIG_CMD_SF=y | ||
+ | CONFIG_CMD_SPI=y | ||
+ | CONFIG_CMD_USB=y | ||
+ | CONFIG_CMD_USB_MASS_STORAGE=y | ||
+ | # CONFIG_CMD_ITEST is not set | ||
+ | # CONFIG_CMD_SETEXPR is not set | ||
+ | CONFIG_CMD_TFTPPUT=y | ||
+ | CONFIG_CMD_TFTP_BOOTM=y | ||
+ | CONFIG_CMD_TFTP_FLASH=y | ||
+ | # CONFIG_CMD_MISC is not set | ||
+ | CONFIG_CMD_MTD_BLK=y | ||
+ | CONFIG_CMD_KHADAS_KBI=y | ||
+ | # CONFIG_SPL_DOS_PARTITION is not set | ||
+ | # CONFIG_ISO_PARTITION is not set | ||
+ | CONFIG_SPL_OF_CONTROL=y | ||
+ | CONFIG_SPL_DTB_MINIMUM=y | ||
+ | CONFIG_OF_LIVE=y | ||
+ | CONFIG_OF_SPL_REMOVE_PROPS=" | ||
+ | CONFIG_OF_U_BOOT_REMOVE_PROPS=" | ||
+ | # CONFIG_NET_TFTP_VARS is not set | ||
+ | CONFIG_REGMAP=y | ||
+ | CONFIG_SPL_REGMAP=y | ||
+ | CONFIG_SYSCON=y | ||
+ | CONFIG_SPL_SYSCON=y | ||
+ | # CONFIG_SARADC_ROCKCHIP is not set | ||
+ | CONFIG_SARADC_ROCKCHIP_V2=y | ||
+ | CONFIG_CLK=y | ||
+ | CONFIG_SPL_CLK=y | ||
+ | CONFIG_CLK_SCMI=y | ||
+ | CONFIG_SPL_CLK_SCMI=y | ||
+ | CONFIG_DM_CRYPTO=y | ||
+ | CONFIG_SPL_DM_CRYPTO=y | ||
+ | CONFIG_ROCKCHIP_CRYPTO_V2=y | ||
+ | CONFIG_SPL_ROCKCHIP_CRYPTO_V2=y | ||
+ | CONFIG_DM_RNG=y | ||
+ | CONFIG_RNG_ROCKCHIP=y | ||
+ | CONFIG_SCMI_FIRMWARE=y | ||
+ | CONFIG_SPL_SCMI_FIRMWARE=y | ||
+ | CONFIG_ROCKCHIP_GPIO=y | ||
+ | CONFIG_ROCKCHIP_GPIO_V2=y | ||
+ | CONFIG_SYS_I2C_ROCKCHIP=y | ||
+ | CONFIG_DM_KEY=y | ||
+ | CONFIG_RK8XX_PWRKEY=y | ||
+ | CONFIG_ADC_KEY=y | ||
+ | CONFIG_MISC=y | ||
+ | CONFIG_SPL_MISC=y | ||
+ | CONFIG_MISC_DECOMPRESS=y | ||
+ | CONFIG_SPL_MISC_DECOMPRESS=y | ||
+ | CONFIG_ROCKCHIP_HW_DECOMPRESS=y | ||
+ | CONFIG_SPL_ROCKCHIP_HW_DECOMPRESS=y | ||
+ | CONFIG_SPL_ROCKCHIP_SECURE_OTP=y | ||
+ | CONFIG_MMC_DW=y | ||
+ | CONFIG_MMC_DW_ROCKCHIP=y | ||
+ | CONFIG_MMC_SDHCI=y | ||
+ | CONFIG_MMC_SDHCI_SDMA=y | ||
+ | CONFIG_MMC_SDHCI_ROCKCHIP=y | ||
+ | CONFIG_MTD=y | ||
+ | CONFIG_MTD_BLK=y | ||
+ | CONFIG_MTD_DEVICE=y | ||
+ | CONFIG_NAND=y | ||
+ | CONFIG_MTD_SPI_NAND=y | ||
+ | CONFIG_SPI_FLASH=y | ||
+ | CONFIG_SF_DEFAULT_SPEED=80000000 | ||
+ | CONFIG_SPI_FLASH_EON=y | ||
+ | CONFIG_SPI_FLASH_GIGADEVICE=y | ||
+ | CONFIG_SPI_FLASH_MACRONIX=y | ||
+ | CONFIG_SPI_FLASH_SST=y | ||
+ | CONFIG_SPI_FLASH_WINBOND=y | ||
+ | CONFIG_SPI_FLASH_XMC=y | ||
+ | CONFIG_SPI_FLASH_XTX=y | ||
+ | CONFIG_SPI_FLASH_MTD=y | ||
+ | CONFIG_DM_ETH=y | ||
+ | CONFIG_DM_ETH_PHY=y | ||
+ | CONFIG_DWC_ETH_QOS=y | ||
+ | CONFIG_GMAC_ROCKCHIP=y | ||
+ | CONFIG_PHY_ROCKCHIP_INNO_USB2=y | ||
+ | CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX=y | ||
+ | CONFIG_PHY_ROCKCHIP_USBDP=y | ||
+ | CONFIG_PINCTRL=y | ||
+ | CONFIG_SPL_PINCTRL=y | ||
+ | CONFIG_DM_FUEL_GAUGE=y | ||
+ | CONFIG_POWER_FG_CW201X=y | ||
+ | CONFIG_DM_PMIC=y | ||
+ | CONFIG_PMIC_SPI_RK8XX=y | ||
+ | CONFIG_DM_POWER_DELIVERY=y | ||
+ | CONFIG_TYPEC_TCPM=y | ||
+ | CONFIG_TYPEC_TCPCI=y | ||
+ | CONFIG_TYPEC_HUSB311=y | ||
+ | CONFIG_TYPEC_FUSB302=y | ||
+ | CONFIG_REGULATOR_PWM=y | ||
+ | CONFIG_DM_REGULATOR_FIXED=y | ||
+ | CONFIG_DM_REGULATOR_GPIO=y | ||
+ | CONFIG_REGULATOR_RK860X=y | ||
+ | CONFIG_REGULATOR_RK806=y | ||
+ | CONFIG_CHARGER_BQ25700=y | ||
+ | CONFIG_CHARGER_BQ25890=y | ||
+ | CONFIG_DM_CHARGE_DISPLAY=y | ||
+ | CONFIG_CHARGE_ANIMATION=y | ||
+ | CONFIG_PWM_ROCKCHIP=y | ||
+ | CONFIG_RAM=y | ||
+ | CONFIG_SPL_RAM=y | ||
+ | CONFIG_TPL_RAM=y | ||
+ | CONFIG_DM_RAMDISK=y | ||
+ | CONFIG_RAMDISK_RO=y | ||
+ | CONFIG_ROCKCHIP_SDRAM_COMMON=y | ||
+ | CONFIG_ROCKCHIP_TPL_INIT_DRAM_TYPE=0 | ||
+ | CONFIG_DM_RESET=y | ||
+ | CONFIG_SPL_DM_RESET=y | ||
+ | CONFIG_SPL_RESET_ROCKCHIP=y | ||
+ | CONFIG_BAUDRATE=1500000 | ||
+ | CONFIG_DEBUG_UART_BASE=0xFEB50000 | ||
+ | CONFIG_DEBUG_UART_CLOCK=24000000 | ||
+ | CONFIG_DEBUG_UART_SHIFT=2 | ||
+ | CONFIG_ROCKCHIP_SPI=y | ||
+ | CONFIG_ROCKCHIP_SFC=y | ||
+ | CONFIG_SYSRESET=y | ||
+ | CONFIG_USB=y | ||
+ | CONFIG_USB_XHCI_HCD=y | ||
+ | CONFIG_USB_XHCI_DWC3=y | ||
+ | CONFIG_USB_EHCI_HCD=y | ||
+ | CONFIG_USB_EHCI_GENERIC=y | ||
+ | CONFIG_USB_OHCI_HCD=y | ||
+ | CONFIG_USB_OHCI_GENERIC=y | ||
+ | CONFIG_USB_DWC3=y | ||
+ | CONFIG_USB_DWC3_GADGET=y | ||
+ | CONFIG_USB_DWC3_GENERIC=y | ||
+ | CONFIG_USB_STORAGE=y | ||
+ | CONFIG_USB_GADGET=y | ||
+ | CONFIG_USB_GADGET_MANUFACTURER=" | ||
+ | CONFIG_USB_GADGET_VENDOR_NUM=0x2207 | ||
+ | CONFIG_USB_GADGET_PRODUCT_NUM=0x350a | ||
+ | CONFIG_USB_GADGET_DOWNLOAD=y | ||
+ | CONFIG_DM_VIDEO=y | ||
+ | CONFIG_DISPLAY=y | ||
+ | CONFIG_DRM_ROCKCHIP=y | ||
+ | CONFIG_DRM_ROCKCHIP_DW_HDMI_QP=y | ||
+ | CONFIG_DRM_ROCKCHIP_DW_MIPI_DSI2=y | ||
+ | CONFIG_DRM_ROCKCHIP_DW_DP=y | ||
+ | CONFIG_DRM_ROCKCHIP_ANALOGIX_DP=y | ||
+ | CONFIG_DRM_ROCKCHIP_SAMSUNG_MIPI_DCPHY=y | ||
+ | CONFIG_PHY_ROCKCHIP_SAMSUNG_HDPTX_HDMI=y | ||
+ | CONFIG_USE_TINY_PRINTF=y | ||
+ | CONFIG_LIB_RAND=y | ||
+ | CONFIG_SPL_TINY_MEMSET=y | ||
+ | CONFIG_RSA=y | ||
+ | CONFIG_SPL_RSA=y | ||
+ | CONFIG_RSA_N_SIZE=0x200 | ||
+ | CONFIG_RSA_E_SIZE=0x10 | ||
+ | CONFIG_RSA_C_SIZE=0x20 | ||
+ | CONFIG_LZ4=y | ||
+ | CONFIG_ERRNO_STR=y | ||
+ | CONFIG_AVB_LIBAVB=y | ||
+ | CONFIG_AVB_LIBAVB_AB=y | ||
+ | CONFIG_AVB_LIBAVB_ATX=y | ||
+ | CONFIG_AVB_LIBAVB_USER=y | ||
+ | CONFIG_RK_AVB_LIBAVB_USER=y | ||
+ | CONFIG_OPTEE_CLIENT=y | ||
+ | CONFIG_OPTEE_V2=y | ||
+ | CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION=y | ||
+ | # CONFIG_OPTEE_ALWAYS_USE_SECURITY_PARTITION is not set | ||
+ | |||
+ | CONFIG_SPL_LZMA=y | ||
+ | CONFIG_AUTOBOOT_KEYED=y | ||
+ | CONFIG_AUTOBOOT_PROMPT=" | ||
+ | CONFIG_AUTOBOOT_DELAY_STR=" | ||
+ | CONFIG_AUTOBOOT_STOP_STR=" | ||
+ | |||
+ | # | ||
+ | # | ||
+ | CONFIG_MTD_BLK_U_BOOT_OFFS=0x300 | ||
+ | |||
+ | CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y | ||
+ | # | ||
+ | CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x4000 | ||
+ | |||
+ | CONFIG_LZMA=y | ||
+ | CONFIG_CMD_LZMADEC=y | ||
+ | CONFIG_LZO=y | ||
+ | |||
+ | # | ||
+ | CONFIG_USB_HOST_ETHER=y | ||
+ | CONFIG_USB_ETHER_ASIX=y | ||
+ | CONFIG_USB_ETHER_ASIX88179=y | ||
+ | CONFIG_USB_ETHER_RTL8152=y | ||
+ | |||
+ | |||
+ | ## CONFIG_ROCKCHIP_EARLY_DISTRO_DTB is not set | ||
+ | ## CONFIG_ROCKCHIP_EARLY_DISTRO_DTB_PATH is not set | ||
+ | ## CONFIG_USING_KERNEL_DTB_V2 is not set | ||
+ | ## CONFIG_ROCKCHIP_HWID_DTB is not set | ||
+ | ## CONFIG_USING_KERNEL_DTB is not set | ||
+ | |||
+ | # | ||
+ | # | ||
+ | |||
+ | CONFIG_CMD_UNZIP=y | ||
+ | CONFIG_CMD_MD5SUM=y | ||
+ | CONFIG_CMD_ITEST=y | ||
+ | |||
+ | # | ||
+ | # | ||
+ | |||
+ | CONFIG_HEXDUMP=y | ||
+ | |||
+ | CONFIG_CMD_SETEXPR=y | ||
+ | CONFIG_DOS_PARTITION=y | ||
+ | |||
+ | CONFIG_CMD_GPT=y | ||
+ | ## CONFIG_EFI_PARTITION is not set | ||
+ | # CONFIG_SPL_EFI_PARTITION is not set | ||
+ | CONFIG_EFI_PARTITION_ENTRIES_NUMBERS=64 | ||
+ | # CONFIG_EFI_LOADER is not set | ||
+ | |||
+ | ## mcu bootmode control | ||
+ | CONFIG_SPL_I2C_SUPPORT=y | ||
+ | |||
+ | ## no need buggy | ||
+ | # CONFIG_ROCKCHIP_HW_DECOMPRESS is not set | ||
+ | # CONFIG_SPL_ROCKCHIP_HW_DECOMPRESS is not set | ||
+ | # CONFIG_MISC_DECOMPRESS is not set | ||
+ | # CONFIG_SPL_MISC_DECOMPRESS is not set | ||
+ | |||
+ | CONFIG_SPL_GZIP=y | ||
+ | |||
+ | CONFIG_CMD_MISC=y | ||
+ | |||
+ | CONFIG_AUTOBOOT_KEYED_CTRLC=y | ||
+ | |||
+ | ``` | ||
+ | |||
+ | |||
+ | ==== Uboot image format ==== | ||
+ | |||
+ | Need be stored by offset '' | ||
+ | |||
+ | ```txt uboot-info | ||
+ | Info: UBOOT_COMPRESSION: | ||
+ | FIT description: | ||
+ | Created: | ||
+ | Image 0 (uboot) | ||
+ | Description: | ||
+ | Created: | ||
+ | Type: | ||
+ | Compression: | ||
+ | Data Size: 430151 Bytes = 420.07 KiB = 0.41 MiB | ||
+ | Architecture: | ||
+ | Load Address: 0x00200000 | ||
+ | Entry Point: | ||
+ | Hash algo: sha256 | ||
+ | Hash value: | ||
+ | Image 1 (atf-1) | ||
+ | Description: | ||
+ | Created: | ||
+ | Type: | ||
+ | Compression: | ||
+ | Data Size: 47147 Bytes = 46.04 KiB = 0.04 MiB | ||
+ | Architecture: | ||
+ | Load Address: 0x00040000 | ||
+ | Hash algo: sha256 | ||
+ | Hash value: | ||
+ | Image 2 (atf-2) | ||
+ | Description: | ||
+ | Created: | ||
+ | Type: | ||
+ | Compression: | ||
+ | Data Size: 28672 Bytes = 28.00 KiB = 0.03 MiB | ||
+ | Architecture: | ||
+ | Load Address: 0x000f0000 | ||
+ | Hash algo: sha256 | ||
+ | Hash value: | ||
+ | Image 3 (atf-3) | ||
+ | Description: | ||
+ | Created: | ||
+ | Type: | ||
+ | Compression: | ||
+ | Data Size: 20480 Bytes = 20.00 KiB = 0.02 MiB | ||
+ | Architecture: | ||
+ | Load Address: 0xff100000 | ||
+ | Hash algo: sha256 | ||
+ | Hash value: | ||
+ | Image 4 (atf-4) | ||
+ | Description: | ||
+ | Created: | ||
+ | Type: | ||
+ | Compression: | ||
+ | Data Size: 8192 Bytes = 8.00 KiB = 0.01 MiB | ||
+ | Architecture: | ||
+ | Load Address: 0xff001000 | ||
+ | Hash algo: sha256 | ||
+ | Hash value: | ||
+ | Image 5 (optee) | ||
+ | Description: | ||
+ | Created: | ||
+ | Type: | ||
+ | Compression: | ||
+ | Data Size: 177774 Bytes = 173.61 KiB = 0.17 MiB | ||
+ | Architecture: | ||
+ | Load Address: 0x08400000 | ||
+ | Hash algo: sha256 | ||
+ | Hash value: | ||
+ | Image 6 (fdt) | ||
+ | Description: | ||
+ | Created: | ||
+ | Type: Flat Device Tree | ||
+ | Compression: | ||
+ | Data Size: 8262 Bytes = 8.07 KiB = 0.01 MiB | ||
+ | Architecture: | ||
+ | Hash algo: sha256 | ||
+ | Hash value: | ||
+ | | ||
+ | | ||
+ | Description: | ||
+ | Kernel: | ||
+ | Firmware: | ||
+ | FDT: fdt | ||
+ | Loadables: | ||
+ | atf-2 | ||
+ | atf-3 | ||
+ | atf-4 | ||
+ | optee | ||
+ | -rw-rw-r-- 1 master master 725504 Jul 17 14:59 u-boot-cmp.itb | ||
+ | Info: pack uboot.img okay! | ||
+ | Info: Generating uboot-sd.img ... 0x4000 == 16384 > u-boot.itb | ||
``` | ``` |