海思平台SDK中rootfs的文件添加和编译的操作(以hi3559av100为例)

时间:2024-04-04 18:09:40

由于项目需要,在系统启动后需要插入一些驱动程序以及运行一些应用程序。这就需要将所要执行的文件打包到根文件系统中,以便系统启动后可以运行。

 

一般我们在目录Hi3559AV100_SDK_V2.0.3.0/package/osdrv/中完整的编译了整个osdrv的情况下,yaffs2文件系统的编译工具mkyaffs2image100以及使用busybox制作的跟文件系统都应该是编译好了的,存放在目录:

Hi3559AV100_SDK_V2.0.3.0/package/osdrv/tools/pc/mkyaffs2image/mkyaffs2image

Hi3559AV100_SDK_V2.0.3.0/package/osdrv/pub

如果没有现有编译好的rootfs的镜像打包程序以及做好的rootfs,就必须先编译rootfs的镜像打包程序,以及完成rootfs的制作。

 

 

第一步在我们的开发环境中安装相对应的rootfs的打包命令,好在海思SDK中提供了它所支持的常用文件系统的镜像打包工具,在路径

Hi3559AV100_SDK_V2.0.3.0/package/osdrv/tools/pc/

我所使用的是nand flash,所以使用的是yaffs2跟文件系统。过程如下:

$cd Hi3559AV100_SDK_V2.0.3.0/package/osdrv/tools/pc/mkyaffs2image/mkyaffs2image

$sudo cp mkyaffs2image100 /usr/bin/

$sudo chmod 777 /usr/bin/mkyaffs2image100

可以直接在终端敲命令mkyaffs2image100得到如下的帮助信息:

海思平台SDK中rootfs的文件添加和编译的操作(以hi3559av100为例)

自此yaffs2的编译工具就安装好了。

 

 

第二部到我们制作好的文件系统的目录下Hi3559AV100_SDK_V2.0.3.0/package/osdrv/pub,将所需要的文件放置于对应的目录,然后执行下面的命令

$ mkyaffs2image100 ./rootfs_glibc_multi-core_arm64 rootfs_hi3559av100_2k_24bit.yaffs2 1 4

海思平台SDK中rootfs的文件添加和编译的操作(以hi3559av100为例)

 

 

后面就是根据新打包好的rootfs的大小,下载rootfs到单板上,并且设置相对应的env。

由于我这里的rootfs的大小:

-rw------- 1 root root 74229888 10月  8 14:47 rootfs_hi3559av100_2k_24bit.yaffs2

所以rootfs分配了80M的大小:0x5000000

 

烧写文件系统:

mw.b 0x44000000 0xff 0x5000000

tftp 0x44000000 rootfs_hi3559av100_2k_24bit.yaffs2

nand erase 0xA00000 0x5000000

nand write.yaffs 0x44000000 0xA00000 0x46ca880//0x46ca880实际的文件大小74229888

 

设置启动参数:

setenv bootargs 'mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot),9M(kernel),80M(rootfs)'//注意rootfs分配的是80M

setenv bootcmd 'nand read 0x44000000 0x100000 0x900000;bootm 0x44000000'

saveenv

 

重启系统:

reset