sdk自带两种参考设计代码,一个是dv,另一个是dashcam即运动相机,两个的代码组织结构差不多,以dv为例,编译后的烧写固件存放路径为当前reference文件下的out/(chip)_(sensor)/burn/fastboot_(flash)
,例如hi3559平台imx385 sensor使用spi nor flash存储的固件位于out/hi3559_imx385/burn/fastboot_spinor下面。值得注意的是burn_readme.txt中的固件烧写地址和相关描述跟实际固件布局不符,建议以out/(chip)_(sensor)/burn/fastboot_(flash)/config
内容为参考。
由此我们知道有两个文件系统镜像,以spi nor存储为例,rootfs.squashfs和privatefs.jffs2,很显然前者是存放不可修改的系统相关文件和应用程序,后者是可读写的配置参数及其他文件。接下来我们很想知道最终生成的文件系统镜像是从哪里来的,通过product/hi3559/rootfs/Makefile可以看到,rootfs答案分两种情况:
1、没有配置了fastboot启动模式,则来自product/hi3559/rootfs/rootfs。
2、配置fastboot启动模式,则来自product/hi3559/rootfs/minirootfs,其中在打包之前还有将product/hi3559/rootfs/mini_rootfs_priv下所有内容拷贝到前者下面的操作。
上面两种情况的最后,还会将product/hi3559/rootfs/rootfs_priv下所有内容也拷贝到各自的文件系统系统文件夹下。对于不同的参考设计,还有特定的文件系统定制动作,详情可以看rootfs_prepare目标。
通过rootfs_prepare目标还可以看到,上面两种情况下的文件夹最开始都来自于/osdrv/pub/linux下面两个压缩文件(minirootfs.tgz和rootfs.tgz),它们经过解压到现在路径后还加入了一些删减操作以及拷贝参考设计相关编译结果拷贝进去的动作,说白了就是再标准文件系统基础上加入参考设计相关的文件。
privatefs的文件夹则来源于product/hi3559/rootfs/privatefs,这个文件夹很简单只有一个null空文件,这个文件夹实际上也是编译时用脚本生成的,看一看privatefs_prepare目标就知道了,用户可以在这里添加自己产品需要的文件进去。
通过简单grep可以找到主程序文件就是:product/hi3559/init_master/hi_product_init_main.c
未完待续…