DSP

DM8168中程序启动分析及如何加载自己的库与程序

2019-07-13 17:13发布

软件环境:本文基于dm81xx DVR RDK Release-03.00.00.00

硬件环境:ETV-HDV8168-HDMI

背景:

前一篇文章介绍 :  

DM8168在DVRRDK集成新的DSP算法(改正官方文档中误)http://blog.csdn.net/guo8113/article/details/20149191

其中算法编译完成后会生成一些库,以及.out文件,我将.out文件直接运行的时候发现并没按预期的执行输出结果,查看代码没有发现异常,因此从程序加载执行的层面去看程序执行所需的组件。本文介绍程序加载的过程。(linux启动加载不在此文范围内)

默认的运行demo的脚本位于/home/root/demo.sh追踪此脚本的执行顺序:

脚本执行顺序如下图:


结论:

在上图中可见dvr_rdk_demo_link_api.out执行前还需要晕fw_load.out将相应核的库(执行文件)加载进系统。 因此仅执行dvr_rdk_demo_link_api.out是不够的。

执行用户程序的方案:

我们这边采用nfs挂载的方式执行自己的程序,大部分的库以及驱动都已经烧写到nand中,如何在不更改nand中数据的前提下,运行自己的程序呢。 为此,将脚本做一些更改: 用户目录如下
demo.sh如下: #!/bin/sh #set your demo dir,here my is /mnt/test cd /mnt/test chmod +x *.out chmod +x *.sh chmod +x ./scripts/*.sh chmod +x ./firmware/*.out #cp -rf firmware/dvr_rdk_fw_*/home/root/opt/dvr_rdk/ti816x/firmware cd /home/root/opt/dvr_rdk/ti816x ./init.sh cd - ./load.sh #run your software cd /mnt/test ./dvr_rdk_demo_link_api.out 720P30 RTSPH264  8000 VBR HIG 将load.sh做如下修改,以让/load_XXX.sh加载m3及DSP核可执行程序时加载用户目录(这里为/mnt/test/firmware)下的程序: cd /home/root/opt/dvr_rdk/ti816x ./env.sh #return to my folder cd - cd ./scripts/ ./load_vpss.sh ./load_video.sh ./load_c6xdsp.sh #wait for the completion of load sleep 8 #cd to system folder cd /home/root/opt/dvr_rdk/ti816x/scripts ./osa_kermod_load.sh   ./wait_cmd.sh s m3vpss  ${REMOTE_DEBUG_ADDR} ./wait_cmd.sh s m3video${REMOTE_DEBUG_ADDR} ./wait_cmd.sh s c6xdsp  ${REMOTE_DEBUG_ADDR}   cd /home/root/opt/dvr_rdk/ti816x/   # load module fb insmod ./kermod/vpss.ko i2c_mode=1sbufaddr=${HDVPSS_SHARED_MEM} insmod ./kermod/ti81xxfb.kovram=0:8M,1:8M,2:4M insmod ./kermod/ti81xxhdmi.ko   sleep 1   # # enable range compression in HDMI 0..255to 16..235. # This is needed for consumer HDTVs # ./bin/mem_rdwr.out --wr 0x46c00524 2 # # enable range compression in HDMI 0..255to 16..235. # This is needed for consumer HDTVs # ./bin/mem_rdwr.out --wr 0x46c00524 2