[PATCH v9 00/16] Add Rikomagic MK808 board
Johan Jonker
jbx6244 at gmail.com
Mon Apr 4 16:19:10 CEST 2022
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 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
Attributes
Type GUID
Partition GUID
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 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: rk3066: add include
rockchip: rk3066: add rk3066_common.h include
rockchip: rk3066: add core support
rockchip: rk3066: add Rikomagic MK808 board
rockchip: rk3066: add mk808_defconfig
rockchip: tools: add rk3066 support to rkcommon.c
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 | 48 +
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 | 100 ++
doc/board/rockchip/rockchip.rst | 2 +
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 | 56 ++
include/dt-bindings/power/rk3066-power.h | 22 +
tools/rkcommon.c | 1 +
36 files changed, 3690 insertions(+), 5 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
--
2.20.1
More information about the U-Boot
mailing list