IMX6ULL Nand Flash 分区划分

本文主要介绍IMX6ULL Nand Flash 分区方法,以及如何为Nand Flash 划分一个新的分区。

一、分区存储内容

为了让 IMX6ULL 芯片正常的启动运行,需要为芯片提供四个必要的软件,它们分别为 uboot、内核、设备树和根文件系统,将以上的文件烧写至存储介质中,使得芯片工作时能从指定存储地址加载依赖程序运行。对于 Nand Flash 存储介质的 IMX6ULL 开发板,一般会根据各个软件镜像文件的大小来划分分区,并将各个程序镜像烧录至为其所划分的分区内。

二、分区划分

IMX6ULL平台在 uboot 中设置 mtdparts 参数来配置 Nand Flash 各个分区的大小,并在引导内核启动时,将 mtdparts 添加至 commandline 中传递给内核。

  • mtdparts参数格式:
mtdparts=<mtddef>[;<mtddef]
<mtddef>  := <mtd-id>:<partdef>[,<partdef>]
<partdef> := <size>[@<offset>][<name>][ro][lk]
<mtd-id>  := unique name used in mapping driver/device (mtd->name)
<size>    := standard linux memsize OR "-" to denote all remaining space
             size is automatically truncated at end of device
             if specified or truncated size is 0 the part is skipped
<offset>  := standard linux memsize
             if omitted the part will immediately follow the previous part
             or 0 if the first part
<name>    := '(' NAME ')'
              NAME will appear in /proc/mtd

以IDO-6Y09开发板为例,mtdparts 参数设置内容如下所示:

文件路径: uboot/drivers/mtd/cmdlinepart.c

mtdparts=gpmi-nand:3m(boot),8m(kernel),1m(dtb),-(rootfs)

mtd-id 名称: gpmi-nand

uboot 分区大小 :3MB

kernel 分区大小 :8MB

dtb 分区大小 :1MB

rootfs 分区大小 :剩余的存储空间

系统启动后查看系统分区

# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00300000 00020000 "boot"
mtd1: 00800000 00020000 "kernel"
mtd2: 00100000 00020000 "dtb"
mtd3: 0f400000 00020000 "rootfs"

dev 表示分区的节点名称

size : 分区大小

erasesize : 擦除块大小

三、添加新的分区

以为 256MB Nand Flash 在存储的最后增加一个20MB 名为data的分区为例,默认rootfs分区占用剩余的存储空间,所以需要计算在分配20MB新分区后,rootfs应分配的空间大小。

计算rootfs分区的大小

rootfs = 256 - 3 - 8 - 1 - 20 = 224

所以需要将mtdparts的参数内容修改为

mtdparts=gpmi-nand:3m(boot),8m(kernel),1m(dtb),224(rootfs),-(data)

-(data) 表示 Flash 剩余存储空间分配给 data 分区。

重新修改分区参数,需要同步修改用于烧录 Nand Flash 的 TF 启动卡或 mfgtools 的 uboot 镜像。

系统启动查看分区分配情况如下:

# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00300000 00020000 "boot"
mtd1: 00800000 00020000 "kernel"
mtd2: 00100000 00020000 "dtb"
mtd3: 0E000000 00020000 "rootfs"
mtd4: 00140000 00020000 "data"

将data分区格式化为 jffs2 格式

# flash_erase -j /dev/mtd4 0 0

挂载data分区

# mount -t jffs2 /dev/mtdblock4  /mnt/ 

如果需要在系统启动时自动挂载 data 分区到 /mnt 目录,可修改 /etc/fstab 文件,在文件最后添加以下内容。

/dev/mtdblock4	/mnt	jffs2	default	0	0
  • 发表于 2021-12-24 09:58
  • 阅读 ( 1458 )
  • 分类:i.MX6ULL

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
FU
FU

9 篇文章

作家榜 »

  1. BBelephant 13 文章
  2. ronnie 11 文章
  3. FU 9 文章
  4. toca 4 文章
  5. 大飞 3 文章
  6. Vivek 3 文章
  7. jack-fang 2 文章
  8. Bin 1 文章