迅为iTOP-4412开发板支持4G以上文件系统扩展

本文档配套资料在网盘资料“iTOP4412 开发板资料汇总 (不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\4412 开发板支持 4G 以上文件系统扩展”目录下。
106.1 概述
光盘默认的 Uboot 镜像只可以烧写小于 4G 的文件系统,但是我们想要文件系统设定成 6G 或者更大的空间,应该怎么办呢?
106.2 快速烧写方法
1 本文档配套的资料里面提供了支持可以扩展 4G 以上文件系统的 uboot 镜像和 uboot 源码,如下所示:

2 将上一步骤提供的 uboot 镜像(一定要确定自己核心板的类型,选择对应的镜像)烧写到开发板中(注意只烧 uboot 镜像),然后进入 uboot 模式,然后在 uboot 输入分区命令:“fdisk -c 0 6144 300 300”,如下图所示。特别要注意的是,这里的分区命令不是固定的,如果你想文件系统扩展到 6G,设置的文件系统大小要比分区设定的值要大,这里设定分区值是 6144。


3 分区完成后,然后在 uboot 命令行分别输入下面的命令,格式化分区。
fatformat mmc 0:1
ext3format mmc 0:2
ext3format mmc 0:3
ext3format mmc 0:4
4 然后将扩展为 6G 根目录的文件系统烧写进开发板,配套资料里面提供了 6G 的 QT4.7 文件系统,大家也可以制作别的系统,比如 QT5.7 系统,最小系统。
(注意一定要用修改过的 uboot 镜像分区,然后烧写扩展后的文件系统,不然会提示分区比镜像小,烧不进去系统),系统烧写进去后,如下图所示,输入 df 命令查看。


5 此时文件系统已经扩展为 6G,因为默认文件系统稍微占用了点,可利用的空间比 6G 小。那么 6G 的文件系统是怎么做的呢?大家也可以根据下节方法随意指定文件系统的大小。如果是批量烧录,可以参考手册的 TF 卡烧写镜像章节。
106.3 制作文件系统
我们将网盘资料“iTOP4412 开发板资料汇总(不含光盘内容)\iTOP-4412 开发板系统源码及镜像(其他)\QtE4.7 根文件系统升级目录\iTOP-4412-QtE4.7-root_V1.0.tar.gz”压缩包拷贝到 Ubuntu 上面,作者拷贝到了/home/topeet/Qt4.7 目录下面,解压后如下图所示:


接下来输入“make_ext4fs -s -l 6000M -a root -L linux system.img root”命令生成“system.img”,如下图所示,6000M 就是文件系统的大小,大家可以根据自己的需求进行指定。


生成的 system.img 是大概 6G 的文件系统镜像,我们可以用于烧写了。
106.4 原理解析
之所以光盘默认的 Uboot 源码不支持烧写 4G 以上文件系统的原因如下:
我们进入到iTOP4412_uboot/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,这样就支持烧写 4G 以上文件系
统了。
接下来编译 uboot 镜像,进入“iTop4412_uboot”文件夹,使用编译脚本“build_uboot.sh”编译 uboot,
这里需要编译的是“SCP 2G 核心板”的 uboot 镜像,那么编译命令是“./build_uboot.sh SCP_2GDDR” SCP_2GDDR 是编译的配置参数,其他参数可以查看使用手册编译 uboot 部分。输入编译命令,如下图所示,
这里一定先确定核心板是哪种类型,然后将对应的参数传到脚本。

编译完如下所示:

编译生成的 uboot 镜像是支持烧写 4G 以上文件系统。

posted @ 2021-12-29 10:03  心底狂像  阅读(41)  评论(0编辑  收藏  举报