本文檔配套資料在網盤資料“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 以上文件系統。 |