How to create new partition on flash when create firmware

We know the openwrt flash layout is divided into several partition—uboot 、kernel、rootfs、art. How to change the default setting when create firmware.For example,if I want to resize the size of these partition and create a new partition ,what should I do?

Were you able to find anything out? The closest I've been able to find is https://www.digi.com/resources/documentation/digidocs/90001546/task/t_change_partition_table.htm#NAND which seems to indicate that this information is compiled into uboot.

Ideally I'd like to shrink the u-boot-env and factory partitions down to 32K to give an extra 64K to firmware partition.

If I understand the mtd block layout, the 64K block size is the smallest erase size. Is this why the u-boot-env and factory 'partitions' are 64K each?

If this is the limiting factor, is there a way to change the erase size to 32K instead?