[PATCH v2 0/3] Add rkmtd command

Johan Jonker jbx6244 at gmail.com
Thu Sep 28 20:49:27 CEST 2023


The command rkmtd creates a virtual block device to transfer
Rockchip boot block data to and from NAND with block orientated
tools like "ums" and "rockusb".

It uses the Rockchip MTD driver to scan for boot blocks and copies
data from the first block in a GPT formatted virtual disk.
Data must be written in U-boot "idbloader.img" format and start at
partition "loader1" offset 64. The data header is parsed
for length and offset. When the last sector is received
it erases up to 5 erase blocks on NAND and writes boot blocks
in a pattern depending on the NAND ID. Data is then verified.
When a block turns out bad the block header is discarded.

Limitations:
Support for Rockchip boot block header type 1 only.
Pattern for listed NAND IDs only. (Logic still not disclosed by Rockchip)
The MTD framework driver data and NAND ID must be extracted at a lower level.

Available rkmtd commands:
rkmtd bind <label>      - bind RKMTD device
rkmtd unbind <label>    - unbind RKMTD device
rkmtd info [<label>]    - show all available RKMTD devices
rkmtd dev [<label>]     - show or set current RKMTD device

U-boot settings:
Config to enable Rockchip MTD support:
CONFIG_MTD=y
CONFIG_MTD_RAW_NAND=y
CONFIG_SYS_NAND_DRIVER_ECC_LAYOUT=y
CONFIG_SYS_NAND_USE_FLASH_BBT=y
CONFIG_ROCKCHIP_NAND=y

Option to keep existing NAND data unchanged:
CONFIG_ROCKCHIP_NAND_SKIP_BBTSCAN=y

Commands to enable:
CONFIG_CMD_USB=y
CONFIG_CMD_RKMTD=y
CONFIG_CMD_ROCKUSB=y
CONFIG_CMD_USB_MASS_STORAGE=y

Linux Host (PC) tool commands combinations that work:

U-boot					Linux
rkmtd bind 0

# rockusb
rockusb 0 rkmtd 0
					upgrade_tool pl
					upgrade_tool wl 64 idbloader.img
					upgrade_tool rl 64 512 upgrade_tool_rl_64_512.img
					upgrade_tool rd

					rkdeveloptool ppt
					rkdeveloptool wlx loader1 idbloader.img
					rkdeveloptool wl 64 idbloader.img
					rkdeveloptool rl 64 512 rkdeveloptool_rl_64_512.img
					rkdeveloptool rd

					rkflashtool w 64 512 < idbloader.img
					rkflashtool r 64 512 > rkflashtool_r_64_512.img
# ums
ums 0 rkmtd 0
					dd if=idbloader.img of=/dev/sda1
					dd if=/dev/sda1 of=ums_0_idb_0_rd.img

Johan Jonker (3):
  mtd: nand: raw: rockchip_nfc: add NAND_SKIP_BBTSCAN option
  dm: prepare rkmtd UCLASS
  rockchip: cmd: add rkmtd command

 cmd/Kconfig                         |    7 +
 cmd/Makefile                        |    1 +
 cmd/rkmtd.c                         | 1432 +++++++++++++++++++++++++++
 disk/part.c                         |    4 +
 drivers/block/blk-uclass.c          |    1 +
 drivers/mtd/nand/raw/Kconfig        |    9 +
 drivers/mtd/nand/raw/rockchip_nfc.c |    3 +
 include/dm/uclass-id.h              |    1 +
 8 files changed, 1458 insertions(+)
 create mode 100644 cmd/rkmtd.c

--
2.39.2



More information about the U-Boot mailing list