DM365 IPNC軟件架構具體解釋

於2013在上半場 - 年DM36五、DM368的IPNC(網絡攝像機)與穩定性測試工做產品結束。算法

1.簡單介紹:

TI針對TMS320DM36五、DM368進行了DVR和IPNC的應用方案參考。DVR方案通常基於DM368 DVRRD SDK (includes TI DVSDK, TI LSP, DVR applications, DVR filesystem, boot and other utilities)開發。IPNC方案也是基於DVSDK。詳細開發環境的搭建參考對應的開發包中的文檔。編程

本文主要介紹IPNC網絡

2.IPNC中軟件架構



主要是基於CE(codec engine)的機構,CE說白了是一套軟件,在這套軟件上可以方便的集成TI針對DSP編寫的 一些算法。
ps:Codec Engine是一系列用於表示和執行數字多媒體標準化DSP算法接口(XDAIS)及算法的API。XDAIS定義了一整套的多媒體算法編程接口,可單獨在GPP或DSP上執行,也可在DSP上執行,而GPP經過Codec Engine對事實上行控制。對於所有支持的運算器結構、執行方式及操做系統,Codec Engine都有一樣的API。Codec Engine定義了4類編解碼器算法接口標準。各自是視頻、圖像、語音、音頻,簡稱VISA。

CMEM模塊也是基於CE架構的軟件框架中常常使用的一個內核模塊。他在用戶空間方便用戶進行物理上連續內存的管理與共享使用。

3.應用層結構

在Linux、cmem、CE等的基礎上。基於Linux的應用程序的框架例如如下圖所看到的:

在系統啓動後,會啓動一些應用程序(進程),主要有:

AV_Server多線程

Systemserver架構

RTPstreaming serverapp

HTTPserver框架

這些進程的做用:

AV_Server process is responsible for:socket

• Capturingvideo and audio data from image sensor and audio deviceide

• Encodingaudio and video data學習

• Managingand storing encoded data in the circular buffer and cache buffer

• Sendingaudio or video bit-stream response requested by other application

System server process responsible for:

• Storingand restoring system parameter

• Savingor uploading video files to ftp servers or local disk depending on the

alarm or schedule events

• Controllingthe system devices (RTC, USB)

HTTP server and RTP streaming servers areresponsible for:

• Sendingresponse of the video, audio, or system requested from internet

Processes use POSIX msgsnd and msgrcv tocommunicate with each other

• Passingparameters by POSIX share memory or CMEM device driver

Circular buffers, cache pools and messagequeues in shared memory are used for

inter-process communication.

4.程序的啓動分析

在內核啓動後,運行一些腳本。

啓動腳本位於文件系統的/etc/init.d/rsS文件裏。當中核心啓動順序代碼例如如下:

DVEVMDIR=/opt/ipnc       #聲明一個變量並賦值

# Load the dsplink and cmem kernel modules 載入dsplink和cmem等內核模塊

cd $DVEVMDIR   #進入opt/ipnc文件夾

$DVEVMDIR/av_capture_load.sh    #」$」表示引用變量

{#av_capture_load.sh

#!/bin/sh

#"#!"字符告訴系統同一行上緊跟在他後面的那個參數用來運行文件的程序

./av_capture_unload.sh 2>/dev/null #首先將相關的模塊卸載

#0表示標準輸入,1表示標準output 2表示標準錯誤error,該命令表示將腳本csl_unload.sh錯誤信息輸入到(重定向到)僅僅寫文件裏(/dev/null經典的黑洞文件。即僅僅能寫不能讀),可以理解爲不要將錯誤信息輸入到標準輸出設備。

./csl_load.sh                #載入csl(片級支持庫)模塊

./drv_load.sh   #載入drv(驅動模塊)模塊

insmod cmemk.ko phys_start=0x83000000 phys_end=0x88000000allowOverlap=1 phys_start_1=0x00001000 phys_end_1=0x00008000 pools_1=1x28672

#載入cmemk.ko(連續內存模塊)模塊,用於DSPARM共享。它的起始位置是0x83000000,結束位置爲0x88000000,大小爲80M

insmod edmak.ko  #載入EDMA模塊

insmod irqk.ko    #載入高速中斷模塊

insmod dm365mmap.ko   #載入dm365內存映射模塊

}

cd /dev

ln -s rtc0 rtc  #創建鏈接

cd $DVEVMDIR

mount -t jffs2 /dev/mtdblock4 /mnt/nand  #掛載日誌文件系統

sleep 1

./system_server &  #後臺執行system_server

$DVEVMDIR/loadkmodules.sh  #執行內核模塊腳本

$DVEVMDIR/loadmodules_ipnc.sh  #執行內核模塊腳本

ifconfig lo 127.0.0.1 #設定本機迴環地址爲 127.0.0.1

./boot_proc 1

# Start the demo application #開始執行應用程序demo

cd $DVEVMDIR

$DVEVMDIR/autorun.sh #運行autorun.sh腳本

{# autorun.sh

#echo "2" >/proc/cpu/alignment

sleep 1

./boa -c /etc &    #啓動boaserver

}

5.部分進程分析

整體上來講上述幾個進程經過Linux及DSPLINK提供的進程間通訊的手段進行通訊與協做控制,主要是systemserver利用消息隊列進行系統控制,控制av_server、boa等。網頁配置參數經過boa接收網頁消息,給systemserver發送消息進行系統控制。

6.總結

本文幫助新手高速瞭解架構,涉獵不深,系統中涉及到的其它內容。依據需要進行學習。

如PISA、ONVIF(安防標準)。boa(提供網頁訪問)。GoDB(提供網頁訪問的UI),wis-streamer(提供網絡視頻流)等。

最後談一下本身的感覺:一個完整的系統,每一部分拿出來細細研究都有很是多內容。由於我主要作的穩定性測試性工做,因此很是多細節的技術都有心無力。

systemserver進程基本與視頻採集和codec無關,是純純的Linux編程。涉及多線程、socket、System V進程通訊,以及USB、網口等各方面的編程,對於學習Linux編程很是有幫助。

參考:Application_DesignGuide_IPNC_DM36x.pdf
AVServer_DesignGuide_IPNC_DM36x.pdf
具體內容可下載文檔:http://download.csdn.net/detail/guo8113/8420233
相關文章
相關標籤/搜索