虽然用户数据是可以合并到根文件系统中进行管理;但在实际的产品开发过程当中,我们会把产品自身的应用程序和数据,都可以归类为用户数据。为了能更好的区分系统层和用户数据,我们的根文件系统只用于访问系统程序,比如ls命令等等,还有必要的系统数据;而用户数据,比如我们的应用程序和数据库等数据,存放在一个独立的分区中,类似于电脑的C盘(系统盘)和D盘(数据盘)的区别。
一个NorFlash,比如我们板载的是128MB,就好比是一个电脑上使用的硬盘,可以进行分区管理,比如C盘存放系统,D盘存放资料,E盘放游戏小电影等等;查看分区的情况可以运行命令:cat /proc/partitions
上图的含义是,有一个磁盘rkflash0,分了4个分区rkflash0p1,2,3,4;其实从先前的课程中,我们知道这几个分区分别存放着uboot,kernel,rootfs以及厂商的固件trust;烧录信息如下:
对应的分区地址在描述文件parameter.txt中:
假设我们增加一个分区,分区名称叫userdata,而userdata磁盘大小是其它分区所用空间外的所有空余空间,那么需要把rootfs分区的grow选项给到userdata,如下:
CMDLINE:mtdparts=rk29xxnand:0x1000@0x2000(uboot),0x1000@0x6000(trust),0x6000@0x8000(boot),0x14000@0xE000(rootfs),-@0x22000(userdata:grow)
同时修改我们烧录的选项:
当我们重新烧录固件到板子中时,就会多出来一个分区了。
1. 修改打包所需分区文件:
~/workspace/Embedded_kits_rk3308/device/rockchip/rk3308
目录下的:
parameter-64bit-emmc.txt
内容和parameter.txt一致,如果是其它文件,可以在BoardConfig.mk中修改:
修改地方(如果需要):
2. 指定userdata所在目录及格式:
也是在BoardConfig.mk中修改:
分区格式为ext2,内容为userdata_normal
具体目录是:
Embedded_kits_rk3308/device/rockchip/userdata/userdata_normal
我们可以把自己的应用程序和数据库放在这个目录中!
3. 打包:
只需要在根目录下去运行./mkfirmware.sh即可:
成功后可以在rockdev中看到生成的文件:
打包完成!
首先烧录完整固件:
查看分区情况:
其中rkflash0p5这个分区其实就是userdata分区,但我们发现根目录下也有userdata的目录。但是无法创建文件(提示只读文件系统),也看不到任何内容:
这是因为分区没有进行挂载:mount -t ext2 /dev/rkflash0p5 /userdata
同时记得不要在/userdata目录下挂载!
==================================================================================================================================
挂载成功,并且可以看到我们的用户数据啦!就是这样Easy!!
如果觉得对您有帮助并想进一步深入学习交流可以扫描以下微信二维码或加入QQ群:928840648
欢迎共同学习成长,有一群爱学习的小伙伴一起勉励!!一起加油!!也可点击
笔者基于嵌入式系统框架内容如下整理编辑: