[PATCH v3 4/5] rockchip: mkimage: Update init size limit

Johan Jonker jbx6244 at gmail.com
Sat Feb 18 05:43:32 CET 2023


Hi Jonas,

On 2/17/23 21:52, Jonas Karlman wrote:
> Sync init size limit from vendor u-boot:

This sync might not be correct.
Please recheck with each SoC or limit your change to the rk3328 SoC if prove fails.
Could Kever disclose SoC details here?

Johan 

> 
>  px30: 12KiB (+2KiB)

>  rk3066: 32KiB (+2KiB)


On the rk3066 the limitation depends on the bootrom logic and the tpl location it is loaded in memory:

//SPL
	flash_boot_size = idb_buf[0].flash_boot_size;
	size = flash_boot_size - 5;
	if ( size >= 32763 )
		flash_boot_size = 10;
//TPL
	flash_data_size = idb_buf[0].flash_data_size;
	if (flash_data_size - 4 >= 61 ||
	    flash_boot_size < flash_data_size ||
	    flash_data_size & 3) {
		flash_data_size = 4;
	}

	offset = idb_buf[0].boot_code1_offset + start;

===

CONFIG_TPL_TEXT_BASE=0x10080C00
TPL/SPL truncated to 2048 = 4 sectors of 512bytes per NAND page.
Header size = 4 x 512bytes

limit1: flash_data_size - 4 >= 61
limit2: flash_boot_size < flash_data_size

===

	usFlashDataSec = (ALIGN(dwLoaderDataSize, 2048)) / SECTOR_SIZE;
	usFlashBootSec = (ALIGN(dwLoaderSize, 2048)) / SECTOR_SIZE;

	dwSectorNum = 4 + usFlashDataSec + usFlashBootSec;

	pSec0->usBootDataSize = usFlashDataSec;
	pSec0->usBootCodeSize = usFlashDataSec + usFlashBootSec;

>  rk3328: 30KiB (+2KiB)
>  rk3568: 60KiB (-16KiB)
> 
> This makes it possible to use latest vendor TPL with RK3328 without
> getting a size limit error running the mkimage command.
> 
> Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
> ---
> v3:
> - Sync with vendor u-boot as-is
> - Update commit message to include size changes
> 
> v2:
> - New patch
> 
>  tools/rkcommon.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/tools/rkcommon.c b/tools/rkcommon.c
> index 1f1eaa16752b..630e54b1a54d 100644
> --- a/tools/rkcommon.c
> +++ b/tools/rkcommon.c
> @@ -121,20 +121,20 @@ struct spl_info {
>  };
>  
>  static struct spl_info spl_infos[] = {
> -	{ "px30", "RK33", 0x2800, false, RK_HEADER_V1 },
> +	{ "px30", "RK33", 0x4000 - 0x1000, false, RK_HEADER_V1 },
>  	{ "rk3036", "RK30", 0x1000, false, RK_HEADER_V1 },

> -	{ "rk3066", "RK30", 0x8000 - 0x800, true, RK_HEADER_V1 },

This is OK.

> -	{ "rk3128", "RK31", 0x1800, false, RK_HEADER_V1 },

> +	{ "rk3066", "RK30", 0x8000, true, RK_HEADER_V1 },

This wrong.

printf "%d\n" $(((0x8000 - 0x800 ) / 512))
60 sectors of size 512


> +	{ "rk3128", "RK31", 0x2000 - 0x800, false, RK_HEADER_V1 },
>  	{ "rk3188", "RK31", 0x8000 - 0x800, true, RK_HEADER_V1 },
>  	{ "rk322x", "RK32", 0x8000 - 0x1000, false, RK_HEADER_V1 },
>  	{ "rk3288", "RK32", 0x8000, false, RK_HEADER_V1 },
>  	{ "rk3308", "RK33", 0x40000 - 0x1000, false, RK_HEADER_V1 },
> -	{ "rk3328", "RK32", 0x8000 - 0x1000, false, RK_HEADER_V1 },
> +	{ "rk3328", "RK32", 0x8000 - 0x800, false, RK_HEADER_V1 },
>  	{ "rk3368", "RK33", 0x8000 - 0x1000, false, RK_HEADER_V1 },
>  	{ "rk3399", "RK33", 0x30000 - 0x2000, false, RK_HEADER_V1 },
>  	{ "rv1108", "RK11", 0x1800, false, RK_HEADER_V1 },
>  	{ "rv1126", "110B", 0x10000 - 0x1000, false, RK_HEADER_V1 },
> -	{ "rk3568", "RK35", 0x14000 - 0x1000, false, RK_HEADER_V2 },
> +	{ "rk3568", "RK35", 0x10000 - 0x1000, false, RK_HEADER_V2 },
>  };
>  
>  /**


More information about the U-Boot mailing list