介绍
PUPANVR是一款开源的嵌入式NVR系统,旨在创建一款多平台,易用,稳定的NVR系统。
NVR工程说明
工程的配置,编译是参考Live555开源的方式写的,主要体现在根目录下的config文件夹. 不过一些脚本是从其他芯片厂家的BSP里有拿进来用,如海思安防芯片里的一些脚本。 注意环境是用的bash调试使用的,其他的环境没有测试和使用过。
工程目的
同一个工程里实现不同的硬件,芯片,产品功能,尽量一套代码维护起来。
目录说明
├── app 主应用源代码目录
├── config 不同型号产品配置目录
├── doc 文档目录
├── hardware 不同硬件对应的一些文档
├── product 不同产品对应的一些文档
└── tool打包时一些工具会打包进去,放在这里
编译方式
1. 针对不同的产品,如硬件不同或业务不同,在config目录里编写一个配置文件; 2. 在工程目录下执行 ./config/genMakefiles P30 (P30是对应的一个产品配置文件名,config目录下),这一步会生成buildout目录,并在目录中生成Makefile; 3. 在工程目录下直接执行make app编译应用;
在buildout目录里的Makefile是如何生成的,请查看config里的genMakefiles相关的脚本。
在以往的产品开发实践中,会面临不同的硬件,不同的产品定义,功能等变化。在工程目录里建立了一个hardware的目录,通过这个目录来隔离不同产品硬件相关的差异。
在product目录里,一般可以通过这个目录来隔离不同产品的差异,
还有tool目录的下级目录是以芯片来区分放置文件的,也是方便来区分不同产品,不同芯片硬件,这里可能会导致存在一定的重复文件。
app目录存放应用工程代码,使用CMake来管理代码脚本的。
产品配置示例
如config目录里的P30文件,内容:
#定义交叉编译工具链
export PROJECT_CROSS_COMPILE=arm-hisiv600-linux
#定义芯片型号
export DEV_CHIP=hi3536c
export DEV_OS=LINUX
export DEV_SDK=hi3536c
#定义产品型号
export PRODUCT_SCRIPT=normal
#产品型号
export PRODUCT_MODEL=P30
export PRODUCT_BOARD=P30
export PRODUCT_MODEL_NUMBER=PUPANVR
export PROJECT_CFLAGS=""
export PROJECT_CPPFLAGS=""
里面分别定义了工具链,芯片型号,产品型号,硬件板端型号,这些宏通过脚本又都会导入到一个头文件中,让应用中也可以使用这些宏来区分不同的产品!