首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux文件系统打包及镜像制作,触觉智能RK3562开发板演示

本文介绍Linux开发板文件系统打包及镜像制作的方法,演示Linux文件系统打包及镜像制作,适用于想将配置好的系统环境打包成镜像批量烧录。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。

工具获取

本文所介绍的方法需要使用到Linux环境下的一些工具。工具可联系触觉智能客服或留言获取。下载Ubuntu PC环境后,需要解包后使用,解包方法如下:

$ tar -vxf ido-pack-tools.tar -C ./

解包后的文件内容如下:

工具包脚本默认芯片信息是rk3562,如果使用其他芯片,则需要修改芯片信息,对应路径ido-pack-tools/mkupdate.sh。

文件系统打包及文件系统镜像制作

从开发板中打包出文件系统

先在开发板中插入U盘或TF卡,然后通过mount命令查看文件系统分区节点,如下所示:

root@ido:/# mount/dev/mmcblk2p8 on / type ext4 (rw,relatime)devtmpfs on /dev type devtmpfs (rw,relatime,size=996844k,nr_inodes=249211,mode=755)sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,size=1008396k,nr_inodes=252099)devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)tmpfs on /run type tmpfs (rw,nosuid,nodev,size=201680k,nr_inodes=252099,mode=755)tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,nr_inodes=252099)tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,size=1008396k,nr_inodes=252099,mode=755)cgroup2 on /sys/fs/cgroup/unified type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)pstore on /sys/fs/pstore type pstore (rw,relatime)cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)debugfs on /sys/kernel/debug type debugfs (rw,relatime)tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)adb on /dev/usb-ffs/adb type functionfs (rw,relatime)tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=201676k,nr_inodes=252099,mode=700)tmpfs on /run/user/1001 type tmpfs (rw,nosuid,nodev,relatime,size=201676k,nr_inodes=252099,mode=700,uid=1001,gid=1001)gvfsd-fuse on /run/user/1001/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1001,group_id=1001)/dev/mmcblk2p7 on /media/ido/oem type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)/dev/mmcblk2p6 on /media/ido/userdata type ext4 (rw,nosuid,nodev,relatime,uhelper=udisks2)/dev/sda1 on /media/ido/U type vfat (rw,nosuid,nodev,relatime,uid=1001,gid=1001,fmask=0022,dmask=0022,codepage=936,iocharset=utf8,shortname=mixed,showexec,utf8,flush,errors=remount-ro,uhelper=udisks2)

由上面命令第2和29行可以看到

/dev/mmcblk2p8 on/type ext4 (rw,relatime),/dev/mmcblk2p8

挂载到根目录,/dev/mmcblk2p8就是我们需要的节点。U盘挂载目录为/media/ido/U。

# 挂载根文件目录$ sudo mount /dev/mmcblk2p8 /mnt# 进入挂载文件夹$ cd /mnt$ rm var/lib/misc/firstrun$ sudo tar -czf  /media/ido/U/ido-rootfs.tar.gz ./*$ sync

注意:打包使用tar命令需要用sudo权限。

压缩包解压

将打包出的压缩包,解压至Ubuntu PC端环境,命令如下:

$ mkdir -p your/target/path/$ sudo tar -xzf ido-rootfs.tar.gz -C your/target/path/

文件系统镜像制作

查看文件系统大小,如下所示:

$ sudo du -sh your/target/path/

制作镜像需要的脚本文件mk-rootfs-image.sh,文件位于工具包的pack-tools/roofs_mk/目录。根据系统大小修改 mk-rootfs-image.sh 脚本第25行的参数,默认镜像大小设置为4096MB。

dd if=/dev/zero of=${ROOTFSIMAGE} bs=1M count=0 seek=4096

注意:一般脚本中设置的镜像大小需要大于 du 返回值。

$ sudo cd pack-tools/roofs_mk/$ sudo ./mk-rootfs-image.sh ../../your/target/path/

脚本正常运行退出后,可在目录得到rootfs.img的文件系统镜像。

制作整包固件update.img

前面文章得到了rootfs.img散包固件,接下来我们制作update.img整包固件。

此处分两种情况:

1. 只修改文件系统,只需将原本烧录的update.img镜像解包后,替换新制作的rootfs.img。

2. 如果除了文件系统外还有其他修改,则可以修改sdk源码编译脚本,编译的时候使用自定义的文件系统。

只修改文件系统的情况

将需要解包的完整镜像文件拷贝到工具包 pack-tools 目录下,此处以完整镜像 IDO-EVB3562-V1B_MIPI-800x1280_Ubuntu20_QT5_240719.img为例。

执行解包脚本,将update镜像按照分区拆分出分区镜像。

$ ./unpack.sh IDO-EVB3562-V1B_MIPI-800x1280_Ubuntu20_QT5_240719.img

执行结果如下:

分区文件解包存放到./output/目录。

将文章第2节中打包好的文件系统镜像复制替换到./output/rootfs.img,文件名称必须为rootfs.img。

最后执行./mkupdate.sh脚本将分区镜像合并为一个完整的镜像update.img。

脚本运行成功后,将会产生新的整包文件./output/update.img。

除了文件系统外还有其他修改的情况

不同SDK修改的地方不一致,在sdk中新建自定义目录myrootfs,把rootfs.img放入其中(myrootfs和build.sh同级目录)。

mkdir myrootfs#将rootfs.img放入myrootfs中ls myrootfs/rootfs.img

情况一:直接修改build.sh,使其编译时使用我们的rootfs.img打包。在build.sh的function build_rootfs()函数中,添加24-27行代码。

function build_rootfs(){       check_config RK_ROOTFS_IMG || return 0       RK_ROOTFS_DIR=.rootfs       ROOTFS_IMG=${RK_ROOTFS_IMG##*/}       rm -rf $RK_ROOTFS_IMG $RK_ROOTFS_DIR       mkdir -p ${RK_ROOTFS_IMG%/*} $RK_ROOTFS_DIR       case "$1" in               yocto)                       build_yocto                       ln -rsf yocto/build/latest/rootfs.img \                               $RK_ROOTFS_DIR/rootfs.ext4                       ;;               debian)                       build_debian                       ln -rsf debian/linaro-rootfs.img \                               $RK_ROOTFS_DIR/rootfs.ext4                       ;;               distro)                       build_distro                       for f in $(ls distro/output/images/rootfs.*);do                               ln -rsf $f $RK_ROOTFS_DIR/                       done                       ;;             myrootfs)                     ln -rsf myrootfs/rootfs.img \                         $RK_ROOTFS_DIR/rootfs.ext4                     ;;               *)                       build_buildroot                       for f in $(ls buildroot/output/$RK_CFG_BUILDROOT/images/rootfs.*);do                               ln -rsf $f $RK_ROOTFS_DIR/                       done                       ;;       esac

在执行build.sh lunch后,执行以下命令:

export RK_ROOTFS_SYSTEM=myrootfs

最后执行build.sh即可生成包含了rootfs.img的update.img整包固件。

./build.sh

rockdev/update.img即为我们所需的完整固件。

情况二:如果build.sh脚本中没有function build_rootfs()函数,则修改

./device/rockchip/common/scripts/mk-rootfs.sh,添加以下8-12行与35行代码:

....省略部分代码........build_ubuntu20(){ln -rsf "$PWD/ubuntu/rootfs-ubuntu20.04-desktop.img" $ROOTFS_DIR/rootfs.ext4finish_build build_ubuntu20 $@}

build_myrootfs(){ln -rsf "$PWD/myrootfs/rootfs.img" $ROOTFS_DIR/rootfs.ext4finish_build build_myrootfs $@}

....省略部分代码........build_hook(){check_config RK_ROOTFS_TYPE || return 0if [ -z "$1" -o "$1" = rootfs ]; thenROOTFS=${RK_ROOTFS_SYSTEM:-buildroot}elseROOTFS=$1fiROOTFS_IMG=rootfs.${RK_ROOTFS_TYPE}ROOTFS_DIR="$RK_OUTDIR/rootfs"echo "=========================================="echo "          Start building rootfs($ROOTFS)"echo "=========================================="rm -rf "$ROOTFS_DIR"mkdir -p "$ROOTFS_DIR"case "$ROOTFS" inyocto) build_yocto "$ROOTFS_DIR" ;;debian) build_debian "$ROOTFS_DIR" ;;buildroot) build_buildroot "$ROOTFS_DIR" ;;ubuntu) build_ubuntu20 "$ROOTFS_DIR" ;;myrootfs)build_myrootfs "$ROOTFS_DIR" ;;*) usage ;;esac

修改

./device/rockchip/common/configs/Config.in.rootfs,添加以下7、20、21行代码:

config RK_ROOTFS_SYSTEM       string       default "buildroot" if RK_ROOTFS_SYSTEM_BUILDROOT       default "debian" if RK_ROOTFS_SYSTEM_DEBIAN       default "yocto" if RK_ROOTFS_SYSTEM_YOCTO       default "ubuntu" if RK_ROOTFS_SYSTEM_UBUNTU       default "myrootfs" if RK_ROOTFS_SYSTEM_MYROOTFSchoice       prompt "default rootfs system"       help         Default rootfs system.config RK_ROOTFS_SYSTEM_BUILDROOT       bool "buildroot"       depends on RK_BUILDROOT_BASE_CFG != ""config RK_ROOTFS_SYSTEM_DEBIAN       bool "debian"       depends on RK_DEBIAN_VERSION != ""config RK_ROOTFS_SYSTEM_UBUNTU       bool "ubuntu"config RK_ROOTFS_SYSTEM_MYROOTFS       bool "myrootfs"

在执行build.sh lunch命令后,执行以下命令:

export RK_ROOTFS_SYSTEM=myrootfs

最后执行build.sh命令,即可生成包含了rootfs.img的update.img整包固件。

./build.sh

rockdev/update.img即为我们所需的完整固件。

产品简介

触觉智能RK3562开发板(型号EVB3562),基于瑞芯微新一代SoC RK3562/RK3562J设计,可用于轻量级人工智能应用。EVB3562开发板配备了PCIe2.1/USB3.0 OTG/千兆网口等各类型接口,支持4G/5G通信、多摄像头及多种视频接口,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示、工业控制等行业领域。

搭载瑞芯微新一代RK3562/RK3562J芯片;

1TOPS算力NPU,支持INT8/INT16/FP16

等数据类型运算;

支持4K@30FPS与1080P@60FPS视频解码;

13M ISP,支持HDR与多路摄像头视频采集;

单路MIPI-DSI,最高2048x1080@60fps ;

单通道LVDS,最高1366x768@60fps ;

三路独立的以太网口,其中两路千兆网口,

一路百兆网口(2025新款开发板则为USB OTG+双网口);

支持5G/4G/WiFi/蓝牙无线通信;

支持Android,Linux操作系统;

淘宝购买链接(企业用户咨询客服享折扣)

https://item.taobao.com/item.htm?ft=t&id=739666345147

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OIB4QF5qvFERQ3w_6K8DLRxQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券