首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

DM365 IPNC 軟體架構深度解析:從核心模組到應用層協作

     編輯:C++ 入門

DM365 IPNC 軟體架構深度解析

2013 年上半年,筆者接手 DM365/DM368 IPNC(網路攝像機)產品的收尾與穩定性測試工作。本文整理了 IPNC 軟體架構的核心知識,幫助初學者快速建立系統全貌。

1. 簡介:TI 官方 SDK 體系

TI 針對 TMS320DM365/DM368 提供 DVR 與 IPNC 兩大應用方案。DVR 基於 DM368 DVRRD SDK(含 TI DVSDK、LSP、DVR 應用、文件系統、啟動工具等);IPNC 同樣基於 DVSDK 開發。具體環境搭建請參考對應開發包文檔。

2. IPNC 軟體核心架構:Codec Engine (CE)

IPNC 軟體架構圖

核心採用 Codec Engine (CE) 架構。CE 是一套標準化 DSP 算法接口(XDAIS)的運行框架,提供統一 API 供 GPP 控制 DSP 上的算法。CE 定義四類編解碼器接口標準(VISA):視頻、圖像、語音、音頻。CMEM 模組 是 CE 架構中常用的內核模組,負責用戶空間的物理連續內存管理與 ARM/DSP 共享。

3. 應用層進程架構

應用層架構圖

系統啟動後運行四大核心進程:

進程主要職責
AV_Server視頻/音頻採集、編碼、環形緩衝區管理、碼流分發
System Server系統參數存儲、錄像文件管理(FTP/本地)、設備控制(RTC/USB)
RTP Streaming Server網路視頻流傳輸(RTP/RTSP)
HTTP ServerWeb 配置介面、API 響應

進程間通信採用 POSIX 消息隊列 傳遞控制命令,共享內存 / CMEM 驅動 傳遞大數據(視頻幀、環形緩衝區)。

4. 啟動流程腳本分析

核心啟動腳本位於 /etc/init.d/rcS,關鍵步驟:

DVEVMDIR=/opt/ipnc
cd $DVEVMDIR
./av_capture_load.sh   # 載入 CSL、DRV、CMEM、EDMA、IRQ、MMAP 等內核模組
cd /dev; ln -s rtc0 rtc
mount -t jffs2 /dev/mtdblock4 /mnt/nand
./system_server &      # 後台啟動系統服務
./loadkmodules.sh
./loadmodules_ipnc.sh
ifconfig lo 127.0.0.1
./boot_proc 1
cd $DVEVMDIR; ./autorun.sh  # 啟動 Boa Web 服務器

av_capture_load.sh 內部先卸載舊模組,再依序載入 csl_load.sh、drv_load.sh、cmemk.ko(80MB 共享內存)、edmak.ko、irqk.ko、dm365mmap.ko。

5. 進程協作機制

  • System Server 為控制中樞,透過消息隊列管理 AV_Server、Boa 等
  • Web 配置 → Boa 接收 HTTP → 轉發消息給 System Server → 控制底層
  • 視頻數據面:AV_Server 編碼 → 共享內存緩衝區 → RTP/HTTP Server 取流發送

6. 總結與延伸學習建議

本文僅覆蓋架構骨幹,實際開發還需深入:

  • PISA / ONVIF 安防標準協議棧
  • Boa / GoDB Web 服務與 UI 框架
  • Wis-Streamer 網路流媒體引擎
  • System Server 純 Linux 系統編程(多線程、Socket、System V IPC、USB/網口驅動)

參考文檔: Application_DesignGuide_IPNC_DM36x.pdf、AVServer_DesignGuide_IPNC_DM36x.pdf

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved