Hi3516DV300在EMMC上的根文件系统创建方法
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中的 ARCH 和 CROSS_COMPILE 两项。
在命令行输入
make menuconfig
进入配置菜单。选中Busybox Settings->Build Options->Build BusyBox as a static binary (no shared libs)项(空格键选中)。如下图所示:
其它的配置项均遵从默认即可。退出配置菜单并保存。
命令行下输入:
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
参考
2.hi3516cv500 sdk 编译提示 cannot find uuid library required for mkfs.ubifs
- 分享
- 举报
-
浏览量:715次2023-12-28 17:04:03
-
浏览量:1132次2023-12-28 14:35:34
-
浏览量:1527次2023-03-20 14:39:03
-
浏览量:3608次2022-10-13 17:29:06
-
浏览量:2110次2017-12-15 16:32:59
-
浏览量:2800次2022-10-14 10:34:46
-
浏览量:4863次2022-10-17 20:51:39
-
2023-09-01 11:10:33
-
2023-09-01 10:50:44
-
浏览量:2555次2020-08-30 11:31:00
-
浏览量:5119次2023-03-20 13:32:44
-
浏览量:2277次2023-07-12 15:22:31
-
浏览量:782次2024-02-05 17:05:51
-
浏览量:4828次2020-09-30 18:01:11
-
浏览量:1108次2024-01-02 16:12:05
-
浏览量:3508次2020-08-30 10:04:00
-
浏览量:8341次2022-06-01 10:01:04
-
浏览量:5634次2020-04-22 13:48:27
-
浏览量:1253次2024-01-08 16:49:01
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
felix
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明