[PATCH v3 4/5] rockchip: mkimage: Update init size limit
Johan Jonker
jbx6244 at gmail.com
Sat Feb 18 12:48:24 CET 2023
On 2/18/23 05:43, Johan Jonker wrote:
> 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.
This 0x8000 value was introduced in the manufacturer kernel with this patch.
rockchip: mkimage: add support for rockchip nand boot image
https://github.com/rockchip-linux/u-boot/commit/6f14746b0c5977b93f126c43b2a80198758399b9
However mainline u-boot for rk3066 makes use of BROM.
rockchip: rk3188: use boot0 hook to load up SPL in 2 steps
https://source.denx.de/u-boot/u-boot/-/commit/4d9253fb76f59c6f474ca54fe2d45c5706cd86e3
It follows the same size rules as for rk3188.
/* spl size 32kb sram - 2kb bootrom */
Unless Philipp Tomsich or someone else explains that it should be something different, please keep it as it is.
Johan
>
> 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