x210:iNand分区情况

本文详细探讨了uboot对iNand的分区情况,解释了四个分区的含义和计算方法,以及fastboot命令如何显示分区信息。特别指出分区2作为根文件系统,并在启动参数中体现。此外,还提到了SD卡的MBR分区结构,以及nandFlash的分区处理区别。在uboot中,movi等命令与分区无关,且uboot内部构建了raw区域表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

uboot对iNand的分区情况

x210 # fdisk -p 0

partion #    size(MB)     block start #    block count    partition_Id 
   1           258            22374          529518          0x83 
   2           258           551892          529518          0x83 
   3           101          1081410          208824          0x83 
   4          3084          1290234         6316926          0x83
  • 可以看到有4个分区
  • block start表示该分区从iNand的哪个块开始
  • block count表示该分区占用的块的个数,经过计算其大小刚好等于size的大小

查看fdisk命令的源码,有如下代码

///
	block_start	= calc_unit(_10MB, sdInfo);
	block_offset	= calc_unit(CONFIG_PART_SIZE, sdInfo);

	partInfo[0].bootable	= 0x00;
	partInfo[0].partitionId	= 0x83;

	make_partitionInfo(block_start, block_offset, sdInfo, &partInfo[0]);

///
	block_start  += block_offset;
	block_offset  = calc_unit(SYSTEM_PART_SIZE, sdInfo);

	partInfo[1].bootable	= 0x00;
	partInfo[1].partitionId	= 0x83;

	make_partitionInfo(block_start, block_offset, sdInfo, &partInfo[1]);

///	
	block_start += block_offset;
	block_offset = calc_unit(CACHE_PART_SIZE, sdInfo);
	
	partInfo[2].bootable	= 0x00;
	partInfo[2].partitionId	= 0x83;

	make_partitionInfo(block_start, block_offset, sdInfo, &partInfo[2]);

///	
	block_start += block_offset;
	block_offset = BLOCK_END;
	
	partInfo[3].bootable	= 0x00;
	partInfo[3].partitionId	= 0x83;

	make_partitionInfo(block_start, block_offset, sdInfo, &partInfo[3]);

///	
int calc_unit(int length, SDInfo sdInfo)
{
	if (sdInfo.addr_mode == CHS_MODE)
		return ( (length / BLOCK_SIZE / sdInfo.unit + 1 ) * sdInfo.unit);

	else
		return ( (length / BLOCK_SIZE) );
}

 代码中对块设备进行了4次分区

此处是

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值