我需要根据ubifs图像(比如rootfs.ubifs)的大小创建一个新卷(它可以是静态的),我将写入该卷。目的是创建具有将“rootfs.ubifs”写入该卷并从中引导设备所需的最小可能大小的卷。
有人可以在这方面帮助我吗?
答案 0 :(得分:0)
区别在于overhead of the UBI layer。这在网页中记录为O
,或
O
- 与以字节为单位存储EC和VID标头相关的开销,即O = SP - SL。 SP
是物理擦除块大小,SL
是 UbiFs 将获得的。通常,最小页大小乘以2。一个用于EC
,另一个用于VID
;这些是 UBI 用于管理闪存的两种结构。两者都在ubi-media.h中定义。 EC
是ubi_ec_hdr
结构,VID
是ubi_vid_hdr
结构。每次擦除擦除块时都会写入EC
或擦除计数,这将导致耗损均衡。 note VID
或卷ID 标头允许 UBI 支持多个卷,并将 PEB 提供给 LEB (物理到逻辑擦除块)管理。
因此对于没有子页面的2k页 NAND 闪存,它是4k;如果支持子页面,则可以将两个标题放在同一页面中,只需要2k。如果您的Flash页面大小不同,您只需要在没有子页面的情况下乘以2,如果您有子页面,则只需添加页面开销。 NOR 闪存的开销是256字节,因为它没有 pages 的想法。
要创建 rootfs.ubifs ,您必须指定逻辑擦除块大小(至mkfs.ubifs
)。 逻辑擦除块(LEB
)和物理擦除块(PEB
)之间的区别只是上面记录的开销。将{em> rootfs.ubifs 乘以PEB
/ LEB
,以获得 UBI卷的最小可能大小。
注意:如果在实际擦除和EC
写入之间擦除被中断(复位/电源循环),则所有其他擦除块的平均值用于设置 UBI 重新读取 ubi设备时的擦除计数。