DVRRDK的系统开发
一、系统环境的搭建
1、修改官方的shell文件mksdboot.sh,文件系统816x-dvr-rdk-rootfs-1.0.tar.gz在官网下载,制作SD启动卡。
2、安装DVRRDK开发库DVRRDK_04.01.00.02,如下图所示。
3、在路径/home/***/dvrrdk/DVRRDK_04.01.00.02/dvr_rdk下,执行指令
make -s sys_all
以完成整个开发库的全编译。
4、这里重点要修改几个地方,
1)由于我们使用的是DM8168的TI_EVM 板,因此我们必须在路径/home/***/dvrrdk/DVRRDK_04.01.00.02/dvr_rdk下,修改Rules.make文件,
2)在路径
/home/***/dvrrdk/DVRRDK_04.01.00.02/dvr_rdk/mcfw/src_bios6/cfg/ti816x下面修改config_1G_256MLinux.bld文件,(1G代表系统的DDR为1G,256M代表mem为256M),具体修改如下图所示,DSP的代码段与数据段都多添加2MB,那么SR1必须缩小4MB,才可使得整体大小为256MB。
5、完成上述修改后,同样在路径/home/***/dvrrdk/DVRRDK_04.01.00.02/dvr_rdk下,执行命令: make -s sys_all ,至此,系统才算搭建完毕。
二、 系统软件开发流程(基于MCFW软件架构)
1、参考路径/home/***/dvrrdk/DVRRDK_04.01.00.02/dvr_rdk/docs/Trainings下文件DVR_RDK_McFW_Link_API_Training.pdf,熟悉MCFW的link配置。下图是多核的软件框图。
采集、编解码、显示的软件流程图
Link机制
Link类型
2、开发方法
1)在DVRRDK的官方demo里面修改代码后,
Linux 端(A8)编译命令:
make -s dvr_rdk_linux
在文件夹
DVRRDK_04.01.00.02/dvr_rdk/bin/ti816x/bin/
生成
dvr_rdk_demo_mcfw_api.out
Bios6 端(DSP)编译命令:
make -s dvr_rdk_bios6
在文件夹
DVRRDK_04.01.00.02/dvr_rdk/bin/ti816x/firmware/
生成
dvr_rdk_fw_c6xdsp_1024M_256M.xe674
dvr_rdk_fw_m3video_1024M_256M.xem3
dvr_rdk_fw_m3vpss_1024M_256M.xem3
2)将所有代码写到同一个文件下面,编写makefile以及Rules.make(规则文件),
3)具体代码分析 cap_enc_save_dsp_dis
该代码实现了在MCFW框架下采集、编码、 DSP 灰度处理、显示及文件保存的功能。主要使用到了ARM( Cortex-A8)、M3 VPSS、M3 VIDEO以及DSP四个核。除了生成运行于 ARM( Cortex-A8)Linux 的可执行程序外,还要编译出新的DSP固件,用来加载运行。该代码的MCFW架构如下图所示。
编译
将源码例程拷贝到 Ubuntu下,进入src目录。修改 makefile 中的
DVR_RDK_ROOT_PATH 和 NFS_PATH。其中
DVR_RDK_ROOT_PATH 为DVRRDK_04.01.00.02安装路径,
NFS_PATH 为编译产生的目标文件的路径。
编译完成后,在DSP和Host目录下会生成build目录,包含编译过程的中间文件,以及目标可执行文件。修改完成后执行make即可:
Host# make clean //注意要清除一下
Host# make
生成如下文件
生成的dvr_rdk_fw_c6xdsp_1024M_256M.xe674覆盖
/opt/dvr_rdk/ti816x/firmware中dvr_rdk_fw_c6xdsp_1024M_256M.xe674文件,
在开发板系统上初始化:
Target# cd /opt/dvr_rdk/ti816x
Target# ./init.sh
Target# ./load.sh
Target# ./bin/cap_enc_save_dsp_dis.out
即可运行系统。效果图如下。