Browse Source

bsp: cvitek: update README for ext4 rootfs (#9785)

Now lwext4 package has supported ext4. Add description in README
to introduce how to create rootfs of type ext4.

Signed-off-by: Chen Wang <unicorn_wang@outlook.com>
Chen Wang 6 months ago
parent
commit
20d116ed4e
1 changed files with 63 additions and 2 deletions
  1. 63 2
      bsp/cvitek/README.md

+ 63 - 2
bsp/cvitek/README.md

@@ -18,6 +18,8 @@
 	- [6.2. 构建文件系统](#62-构建文件系统)
 	- [6.2. 构建文件系统](#62-构建文件系统)
 	- [6.3. 将文件系统写入 sd-card](#63-将文件系统写入-sd-card)
 	- [6.3. 将文件系统写入 sd-card](#63-将文件系统写入-sd-card)
 	- [6.4. 上电启动](#64-上电启动)
 	- [6.4. 上电启动](#64-上电启动)
+		- [6.4.1. FAT 的例子](#641-fat-的例子)
+		- [6.4.2. EXT4 的例子](#642-ext4-的例子)
 - [7. FAQ](#7-faq)
 - [7. FAQ](#7-faq)
 - [8. 联系人信息](#8-联系人信息)
 - [8. 联系人信息](#8-联系人信息)
 
 
@@ -193,7 +195,7 @@ $ scons
 
 
 # 6. 大核 RT-Smart 启动并自动挂载根文件系统
 # 6. 大核 RT-Smart 启动并自动挂载根文件系统
 
 
-大核启用 RT-Smart 后可以在启动阶段挂载根文件系统。目前 Duo 支持 ext4,fat 文件格式,下面以 fat 格式为例,具体操作说明如下:
+大核启用 RT-Smart 后可以在启动阶段挂载根文件系统。目前 Duo 支持 ext4, fat 文件格式,具体操作说明如下:
 
 
 ## 6.1. 内核构建配置
 ## 6.1. 内核构建配置
 
 
@@ -204,6 +206,14 @@ $ scons
 - 使能 `BSP_USING_SDH`: Enable Secure Digital Host Controller, 因为使用 sd-card 存放文件系统。
 - 使能 `BSP_USING_SDH`: Enable Secure Digital Host Controller, 因为使用 sd-card 存放文件系统。
 - 使能 `BSP_USING_RTC`: Enable RTC, 避免挂载文件系统后执行命令报错:`[W/time] Cannot find a RTC device!`
 - 使能 `BSP_USING_RTC`: Enable RTC, 避免挂载文件系统后执行命令报错:`[W/time] Cannot find a RTC device!`
 - 使能 `BSP_ROOTFS_TYPE_DISKFS`: Disk FileSystems, e.g. ext4, fat ..., 该配置默认已打开。
 - 使能 `BSP_ROOTFS_TYPE_DISKFS`: Disk FileSystems, e.g. ext4, fat ..., 该配置默认已打开。
+- 内核默认支持 fat, 如果要挂载 ext4 的文件系统,则还需要额外安装 lwext4 软件包,即使能 `PKG_USING_LWEXT4`(具体 menuconfig 路径是 (Top) -> RT-Thread online packages -> system packages ->  lwext4: an excellent choice of ext2/3/4 filesystem for microcontrollers.)。如果在菜单中找不到该软件包,可以退出 menuconfig 并执行 `pkgs --upgrade` 更新软件包索引后再尝试使能软件包。
+
+  勾选该选项后还需要执行如下操作更新软件并安装源码到 bsp 的 packages 目录下:
+
+  ```shell
+  source ~/.env/env.sh
+  pkgs --update
+  ```
 
 
 保存后重新编译内核。
 保存后重新编译内核。
 
 
@@ -229,9 +239,17 @@ xmake smart-image -f fat
 
 
 在 `$WS/userapps/apps/build` 路径下生成根文件系统镜像文件 `fat.img`。
 在 `$WS/userapps/apps/build` 路径下生成根文件系统镜像文件 `fat.img`。
 
 
+如果是制作 ext4 格式的文件系统 image,则最后一步换成:
+
+```shell
+xmake smart-image -f ext4
+```
+
+生成根文件系统镜像文件 `ext4.img`。
+
 ## 6.3. 将文件系统写入 sd-card
 ## 6.3. 将文件系统写入 sd-card
 
 
-将 SD 卡分为 2 个分区,第 1 个分区用于存放 `fip.bin` 和 `boot.sd` 文件,第 2 个分区用于存放文件系统,分区格式为 `FAT32`。
+将 SD 卡分为 2 个分区,第 1 个分区的分区格式为 `FAT32`,用于存放 `fip.bin` 和 `boot.sd` 文件,第 2 个分区用于存放文件系统,分区格式需要和具体文件系统的格式一致。这里以 fat 为例介绍如何制作 sd-card 上的文件系统分区,ext4 的操作类似
 
 
 将 SD 卡插入 PC 主机系统,假设为 Ubuntu,识别为 `/dev/sdb`,则第二个分区为 `/dev/sdb2`。将第二个分区挂载,假设挂载到 `~/ws/u-disk`。
 将 SD 卡插入 PC 主机系统,假设为 Ubuntu,识别为 `/dev/sdb`,则第二个分区为 `/dev/sdb2`。将第二个分区挂载,假设挂载到 `~/ws/u-disk`。
 
 
@@ -253,6 +271,8 @@ sudo umount /tmp
 
 
 ## 6.4. 上电启动
 ## 6.4. 上电启动
 
 
+### 6.4.1. FAT 的例子
+
 启动完成后, 会看到 `[I/app.filesystem] device 'sd1' is mounted to '/' as FAT` 的输出,说明文件系统挂载成功。此时 `msh` 被替换为 `/bin/ash`。
 启动完成后, 会看到 `[I/app.filesystem] device 'sd1' is mounted to '/' as FAT` 的输出,说明文件系统挂载成功。此时 `msh` 被替换为 `/bin/ash`。
 
 
 ```shell
 ```shell
@@ -277,6 +297,47 @@ bin       etc       mnt       root      sbin      tc        usr
 dev       lib       proc      run       services  tmp       var
 dev       lib       proc      run       services  tmp       var
 ```
 ```
 
 
+### 6.4.2. EXT4 的例子
+
+启动完成后, 会看到 `[I/app.filesystem] device 'sd1' is mounted to '/' as EXT` 的输出,说明文件系统挂载成功。此时 `msh` 被替换为 `/bin/ash`。如果 `ls /bin -l`,会看到大部分命令程序都是指向 busybox 的符号链接,符号链接是 EXT4 区别于 FAT 的重要特征。
+
+```shell
+ \ | /
+- RT -     Thread Smart Operating System
+ / | \     5.2.0 build Dec 17 2024 14:04:27
+ 2006 - 2024 Copyright by RT-Thread team
+lwIP-2.1.2 initialized!
+[I/sal.skt] Socket Abstraction Layer initialize success.
+[I/drivers.serial] Using /dev/ttyS0 as default console
+[I/SDIO] SD card capacity 30216192 KB.
+[I/SDIO] sd: switch to High Speed / SDR25 mode 
+
+found part[0], begin: 1048576, size: 128.0MB
+found part[1], begin: 135266304, size: 28.707GB
+[I/app.filesystem] device 'sd1' is mounted to '/' as EXT
+Hello RT-Smart!
+msh />[E/sal.skt] not find network interface device by protocol family(1).
+[E/sal.skt] SAL socket protocol family input failed, return error -3.
+/ # ls 
+bin         lib         proc        sbin        tmp
+dev         lost+found  root        services    usr
+etc         mnt         run         tc          var
+/ # ls /bin -l
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 arch -> busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 ash -> busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 base32 -> busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 base64 -> busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 bash -> busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 bbconfig -> busybox
+-rwxr-xr-x    0 0        0          1003000 Dec 17  2024 busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 cat -> busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 chattr -> busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 chgrp -> busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 chmod -> busybox
+lrwxrwxrwx    0 0        0                7 Dec 17  2024 chown -> busybox
+......
+```
+
 # 7. FAQ
 # 7. FAQ
 
 
 1. 如遇到不能正常编译,请先使用 `scons --menuconfig` 重新生成配置。
 1. 如遇到不能正常编译,请先使用 `scons --menuconfig` 重新生成配置。