[PATCH v11 00/16] Add Rikomagic MK808 board

Kever Yang kever.yang at rock-chips.com
Wed Apr 20 14:16:38 CEST 2022


applied to u-boot-rockchip.


Thanks,
- Kever
On 2022/4/16 23:09, Johan Jonker wrote:
> MK808 is a RK3066-based board with 1 USB host and 1 USB OTG port,
> HDMI and a micro-SD card slot. It also includes on-board NAND
> and 1GB of SDRAM.
>
> Changed V11:
>    remove defines
>    update defconfig
>    align doc examples
>
> Changed V10:
>    add u-boot,spl-fifo-mode property
>    combine patches core support
>    restyle doc rockchip.rst
>    add more px30 doc info
>    add more rk3066 doc info
>
> Changed V9:
>    fix TABs and spaces
>    add led config
>    enable led gpio
>    change pinctrl regmap source
>    disable STIMER
>    move include
>
> Changed V8:
>    update clock driver
>    update grf header file
>
> Changed V7:
>    add board files
>    enable boot from SD card
>    restyle pinctrl driver
>    restyle sdram driver
>
> ===
>
> Boot procedure flow for a Rockchip rk3066 SoC:
>
> 1.Read 2K SDRAM initialization image code to internal SRAM
> 2.Run image code to do SDRAM initialization
> 3.Transfer boot image code to SDRAM
> 4.Run boot image code
>
> Supported system boot from the following devices:
> Nand Flash
> SPI nor Flash
> eMMC device
> UART interface
>
> If all boot options fail then enter into BootROM mode on the USB OTG port.
> Unlike later SoC models the rk3066 BootROM doesn't have SDMMC support.
>
> The size of a full U-boot binary is too large for the internal SDRAM memory.
> Of that 64k size only 32kb sram - 2kb bootrom is available for the first stage.
>
> Similar to the already supported rk3188, the BootROM will attempt to load up the first stage
> image in two steps: first 1KB to offset 0x800 in the SRAM and
> then the remainder to offset 0xc00 in the SRAM.
> It always enters at offset 0x804 after a 4 ASCII character "RK30" header.
>
> With CONFIG_TPL_ROCKCHIP_EARLYRETURN_TO_BROM=y this first stage is combined with
> the U-boot TPL binary (u-boot-tpl.bin).
>
> For rk3066 with NAND flash and U-boot this gives the following stages:
>
> - TPL: init external SDRAM
> - SPL: init SDMMC and read U-boot from SD CARD.
> - U-boot: read Linux kernel from SD CARD.
> - Kernel
>
> Additionally the rk3066 requires everything the BootROM loads to be
> RC4-encrypted.
>
> ===
>
> Boot solution with full U-boot stored on SD CARD:
>
> Compile commands(U-boot):
>
> ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make mk808_defconfig
> ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make menuconfig
> ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make all
>
> ===
>
> Size of SPL and TPL must be aligned to 2kb.
> If bricked and no BootROM mode shows up then connect pin 8 and 9 of the NAND flash
> with a needle while reconnecting to the USB OTG port to a PC.
>
> ===
>
> Show connected devices with:
>
> lsusb
>
> Bus 001 Device 004: ID 2207:300a Fuzhou Rockchip Electronics Company RK3066 in Mask ROM mode
>
> ===
>
> Program commands with ./flash.sh:
>
> #!/bin/sh
>
> printf "RK30" > tplspl.bin
> dd if=u-boot-tpl.bin >> tplspl.bin
> truncate -s %2048 tplspl.bin
> truncate -s %2048 u-boot-spl.bin
> ../tools/boot_merger --verbose config-flash.ini
> ../tools/upgrade_tool ul ./RK30xxLoader_uboot.bin
>
> ===
>
> config-flash.ini:
>
> [CHIP_NAME]
> NAME=RK30
> [VERSION]
> MAJOR=2
> MINOR=21
> [CODE471_OPTION]
> NUM=1
> Path1=30_LPDDR2_300MHz_DD.bin
> [CODE472_OPTION]
> NUM=1
> Path1=rk30usbplug.bin
> [LOADER_OPTION]
> NUM=2
> LOADER1=FlashData
> LOADER2=FlashBoot
> FlashData=tplspl.bin
> FlashBoot=u-boot-spl.bin
> [OUTPUT]
> PATH=RK30xxLoader_uboot.bin
>
> ===
>
> Partition Map for MMC device 0  --   Partition Type: EFI
> Part	Start LBA	End LBA		Name
>    1	0x00000040	0x00001f7f	"loader1"
>    2	0x00004000	0x00005fff	"loader2"
>    3	0x00006000	0x00007fff	"trust"
>    4	0x00008000	0x0003ffff	"boot"
>    5	0x00040000	0x00ed7fde	"rootfs"
>
> Make sure boot and esp flag are set for boot partition.
> Loader1 partition is not used by RK3066.
>
> ===
>
> Boot partition:
>
> extlinux -- extlinux.conf
> zImage
> rk3066a-mk808.dtb
>
> ===
>
> extlinux.conf:
>
> label kernel
>      kernel /zImage
>      fdt /rk3066a-mk808.dtb
>      append root=LABEL=linuxroot init=/sbin/init rootfstype=ext4 rootwait
>
> ===
>
> Program commands (SD CARD with GPT partition):
>
> sudo dd if=u-boot-dtb.img of=/dev/sda seek=16384
>
> ===
>
> TODO:
>    Better program flow/tools
>    USB
>    NAND
>    etc etc
>
> ===
>
> Johan Jonker (12):
>    rockchip: rk3066-power: sync power domain dt-binding header from Linux
>    arm: dts: rockchip: fix rk3xxx-u-boot.dtsi
>    arm: dts: rockchip: fix include rk3xxx-u-boot.dtsi
>    arm: dts: rockchip: add rk3066a.dtsi
>    arm: dts: rockchip: add rk3066a-mk808.dts
>    rockchip: tools: add rk3066 support to rkcommon.c
>    rockchip: rk3066: add core support
>    rockchip: rk3066: add Rikomagic MK808 board
>    rockchip: rk3066: add mk808_defconfig
>    doc: rockchip: restyle rockchip.rst
>    doc: rockchip: add px30/rk3326 boards and examples
>    doc: rockchip: add rk3066 Rikomagic MK808
>
> Paweł Jarosz (4):
>    rockchip: rk3066: add grf header file
>    rockchip: rk3066: add clock driver for rk3066 soc
>    rockchip: rk3066: add rk3066 pinctrl driver
>    rockchip: rk3066: add sdram driver
>
>   arch/arm/dts/Makefile                         |   3 +
>   arch/arm/dts/rk3066a-mk808-u-boot.dtsi        |  49 +
>   arch/arm/dts/rk3066a-mk808.dts                | 216 +++++
>   arch/arm/dts/rk3066a-u-boot.dtsi              |   4 +
>   arch/arm/dts/rk3066a.dtsi                     | 879 +++++++++++++++++
>   arch/arm/dts/rk3188-u-boot.dtsi               |   1 +
>   arch/arm/dts/rk3188.dtsi                      |   1 -
>   arch/arm/dts/rk3xxx-u-boot.dtsi               |   8 +-
>   arch/arm/include/asm/arch-rk3066/boot0.h      |   8 +
>   arch/arm/include/asm/arch-rk3066/gpio.h       |   8 +
>   arch/arm/include/asm/arch-rk3066/timer.h      |   6 +
>   .../include/asm/arch-rockchip/cru_rk3066.h    | 157 +++
>   .../include/asm/arch-rockchip/grf_rk3066.h    | 210 +++++
>   arch/arm/mach-rockchip/Kconfig                |  23 +
>   arch/arm/mach-rockchip/Makefile               |   1 +
>   arch/arm/mach-rockchip/rk3066/Kconfig         |  39 +
>   arch/arm/mach-rockchip/rk3066/Makefile        |   5 +
>   arch/arm/mach-rockchip/rk3066/clk_rk3066.c    |  33 +
>   arch/arm/mach-rockchip/rk3066/rk3066.c        |  49 +
>   arch/arm/mach-rockchip/rk3066/syscon_rk3066.c |  55 ++
>   board/rikomagic/mk808/Kconfig                 |  15 +
>   board/rikomagic/mk808/MAINTAINERS             |   6 +
>   board/rikomagic/mk808/Makefile                |   3 +
>   board/rikomagic/mk808/mk808.c                 |   3 +
>   configs/mk808_defconfig                       | 102 ++
>   doc/board/rockchip/rockchip.rst               | 262 ++++-
>   drivers/clk/rockchip/Makefile                 |   1 +
>   drivers/clk/rockchip/clk_rk3066.c             | 717 ++++++++++++++
>   drivers/pinctrl/rockchip/Makefile             |   1 +
>   drivers/pinctrl/rockchip/pinctrl-rk3066.c     | 112 +++
>   drivers/ram/rockchip/Makefile                 |   1 +
>   drivers/ram/rockchip/sdram_rk3066.c           | 892 ++++++++++++++++++
>   include/configs/mk808.h                       |   9 +
>   include/configs/rk3066_common.h               |  47 +
>   include/dt-bindings/power/rk3066-power.h      |  22 +
>   tools/rkcommon.c                              |   1 +
>   36 files changed, 3894 insertions(+), 55 deletions(-)
>   create mode 100644 arch/arm/dts/rk3066a-mk808-u-boot.dtsi
>   create mode 100644 arch/arm/dts/rk3066a-mk808.dts
>   create mode 100644 arch/arm/dts/rk3066a-u-boot.dtsi
>   create mode 100644 arch/arm/dts/rk3066a.dtsi
>   create mode 100644 arch/arm/include/asm/arch-rk3066/boot0.h
>   create mode 100644 arch/arm/include/asm/arch-rk3066/gpio.h
>   create mode 100644 arch/arm/include/asm/arch-rk3066/timer.h
>   create mode 100644 arch/arm/include/asm/arch-rockchip/cru_rk3066.h
>   create mode 100644 arch/arm/include/asm/arch-rockchip/grf_rk3066.h
>   create mode 100644 arch/arm/mach-rockchip/rk3066/Kconfig
>   create mode 100644 arch/arm/mach-rockchip/rk3066/Makefile
>   create mode 100644 arch/arm/mach-rockchip/rk3066/clk_rk3066.c
>   create mode 100644 arch/arm/mach-rockchip/rk3066/rk3066.c
>   create mode 100644 arch/arm/mach-rockchip/rk3066/syscon_rk3066.c
>   create mode 100644 board/rikomagic/mk808/Kconfig
>   create mode 100644 board/rikomagic/mk808/MAINTAINERS
>   create mode 100644 board/rikomagic/mk808/Makefile
>   create mode 100644 board/rikomagic/mk808/mk808.c
>   create mode 100644 configs/mk808_defconfig
>   create mode 100644 drivers/clk/rockchip/clk_rk3066.c
>   create mode 100644 drivers/pinctrl/rockchip/pinctrl-rk3066.c
>   create mode 100644 drivers/ram/rockchip/sdram_rk3066.c
>   create mode 100644 include/configs/mk808.h
>   create mode 100644 include/configs/rk3066_common.h
>   create mode 100644 include/dt-bindings/power/rk3066-power.h
>


More information about the U-Boot mailing list