Hi3516DV300在EMMC上的根文件系统创建方法

Hi3516DV300在EMMC上的根文件系统创建方法 felix 2023-06-13 09:22:20 1116

Hi3516DV300及测试环境介绍

海思Hi3516DV300使用arm-himix200-linux-工具链,内含双核 ARM Cortex-A7。

本文使用的测试硬件为 荣品Hi3516DV300开发板 ,淘宝有售,此处非广告。使用的SDK版本为 Hi3516CV500_SDK_V2.0.1.0

创建步骤

1.busybox的编译

busybox的作用是提供Linux下的一系列命令工具,独立于内核,因为内核提供管理但不提供工具。目标平台不同,就需要使用不同的交叉编译工具链进行编译,编译步骤很简单。来源见参考1。

SDK中提供busybox的源码故无需下载。在 /Hi3516CV500_SDK_V2.0.1.0/package/osdrv/opensource/busybox 目录下解压busybox-1.26.2.tgz。修改Makefile中的 ARCHCROSS_COMPILE 两项。

修改busybox编译设置

在命令行输入

make menuconfig

进入配置菜单。选中Busybox Settings->Build Options->Build BusyBox as a static binary (no shared libs)项(空格键选中)。如下图所示:

busybox2其它的配置项均遵从默认即可。退出配置菜单并保存。

命令行下输入:

make
make install

即可在busybox目录下生成 _install 文件夹。这里面存放的就是linux下操作的基本命令了。

2.海思工具的编译

Hi3516CV500_SDK_V2.0.1.0/package/osdrv/tools/board 目录下,存放了板端可能用得到的工具。在 Hi3516CV500_SDK_V2.0.1.0/package/osdrv/tools/pc 目录下,则需要使用 make_ext4fs 工具。

2.1 himm工具的编译

himm工具是海思提供的可以直接操作SOC寄存器的工具,当配置IO复用或者调整IRCUT等的时候,可能会用上。himm工具在板端目录下的 reg-tools-1.0.0 文件夹内,命令行进入直接输入 make 编译即可。

2.2 make_ext4fs工具的编译

ext4是用于EMMC的文件系统,make_ext4fs工具在pc端目录下的 ext4_utils 文件夹内,如果安装过程中出错,提示 cannot find uuid library required for mkfs.ubifs ,则验证有没有安装以下依赖包:

sudo apt install libuuid1:i386 zlib1g-dev liblzo2-dev uuid-dev pkg-config

而后重新 make 即可。本步骤来源见参考2。

3.建立根文件系统的目录

本阶段步骤部分来源为:《Hi3516CV500╱Hi3516DV300╱Hi3516AV300 开发环境用户指南》P18。

找一个自己喜欢的目录,建一个用于存放根文件系统的文件夹,比如这里就单纯的命名为 rootfs

3.1 复制busybox编译的文件到rootfs目录

这一步很简单,因为目录还是空的,所以直接拷贝busybox目录下的 _install 中全部文件(夹)到 rootfs 目录即可。

3.2 复制himm工具到rootfs

在himm工具编译完后,将其目录下 bin 文件夹中的内容复制到 rootfs/bin 中,这样就算完成了。

3.3 建立根文件系统目录结构

使用命令行进入 rootfs 文件夹中,输入:

mkdir etc dev lib tmp var mnt home proc
3.4 填充etc目录

进入目录:

/Hi3516CV500_SDK_V2.0.1.0/package/osdrv/opensource/busybox/busybox-1.26.2/examples/bootfloppy/etc

将其中的所有文件拷贝到 rootfs/etc 中,这将作为kerne的“启动”文件夹。

3.5 填充lib目录

Hi3516DV300芯片具有浮点运算单元和neon,程序运行需要依赖编译工具提供的运行库,进入海思arm-himix200-linux-工具链对应目录下:

cd /opt/hisi-linux/x86-arm/arm-himix200-linux/runtime_glibc/a7_softfp_neon-vfpv4

可以看到其中有一个孤零零的 lib.tgz 文件,解压到rootfs中的lib文件夹内即可。

4.打包rootfs镜像

将前面编译好的 make_ext4fs 工具拷贝到和 rootfs 文件夹同一级目录下,命令行下运行:

./make_ext4fs -l 200M -s rootfs_hi3516dv300.ext4 rootfs

这里,200M指的是根文件系统所占EMMC的大小,可以根据需要修改,-s后面是生成的镜像名,rootfs为待压缩的目录。

至此,得到根文件系统镜像,使用Hi_Tool或者手动操作uboot进行烧录均可。

Hi_Burn下载过程截图(我这里Hi_Tool工具打不开69端口,使用TFTP外挂的):

烧录镜像

Hi_Burn操作下的下载命令供参考:

setenv serverip 169.254.134.39
setenv ethaddr 00:7c:6f:41:94:55
setenv ipaddr 169.254.134.0
etenv netmask 255.255.0.0
setenv gatewayip 169.254.134.1
getinfo ddrfree

mw.b 0x81000000 0xFF 0x121f600
tftp 0x81000000 L_rootfs_hi3516dv300.ext4
crc32 81000000 121f5b0
mmc write.ext4sp 0x0 0x81000000 0x7800 0x64000

这些取决于本地设置。

如果需要操作MPP,将MPP下的ko加载即可,此处不表。

注意事项

运行库的解压一定要在linux环境进行,如果lib中的文件经过Windows环境打包进rootfs,可能导致符号链接损坏,表现为根文件系统烧录成功、linux启动成功、操作命令可以使用,但运行程序时显示 Input/Output error

本文资源分享

百度网盘链接: https://pan.baidu.com/s/1xYszCIPdaaQFKnms-JJ-KQ

提取码: 4rb1

参考

1.使用BusyBox制作根文件系统

2.hi3516cv500 sdk 编译提示 cannot find uuid library required for mkfs.ubifs

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
felix
红包 点赞 1 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
felix
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区