讯为三星iTOP4412 将eMMC分区扩大的问题。

文章详细记录了解决三星iTOP4412开发板上eMMC分区不足的问题过程。通过修改u-boot源码中Cmd_mmc_fdisk.c的calc_unit函数,解决了因数据类型不匹配导致的分区大小错误,成功将/dev/mmcblk0p2分区扩大至12.7G。

讯为三星iTOP4412  使用fdisk -c 0 2700 300 300 进行分盘,

这样/dev/mmcblk0p2的大小只有2.7G。

而最后的ubuntu系统时运行在/dev/mmcblk0p2,取掉ubuntu本身的解压文件,/根目录下只剩下1G多的空间,根本不够用。

eMMC本身又16G,我想把/dev/mmcblk0p2分到12G以上。

于是使用fdisk -c 0 12700 300 300  发现分区后/dev/mmcblk0p2只有几百M,觉得很奇怪。。

多次实验后发现fdisk -c 0  X  300 300  份盘,当X=4000的时候/dev/mmcblk0p2能分到4G;但是当X=5000以上的时候/dev/mmcblk0p2能分区成功,但是只能分到几百M。

 

立刻开查4412的u-boot,查了几个小时后查到了原因:

/common/Cmd_mmc_fdisk.c里面的 unsigned int calc_unit(unsigned int length, SDInfo sdInfo),

length定义的是unsigned int,是32bit的。

但是调用的时候输入是unsigned long long,是64bit的。

block_offset = calc_unit((unsigned long long)simple_strtoul(argv[3], NULL, 0)*1024*1024, sdInfo);

所以这个过程中,丢了高位置信息,改掉这个bug,重新编译uboot。

再使用使用fdisk -c 0 12700 300 300  成功的将/dev/mmcblk0p2分到了12.7G。

 

转载于:https://www.cnblogs.com/stay-foolish1984/p/10489625.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值