2013 年上半年,筆者接手 DM365/DM368 IPNC(網路攝像機)產品的收尾與穩定性測試工作。本文整理了 IPNC 軟體架構的核心知識,幫助初學者快速建立系統全貌。
TI 針對 TMS320DM365/DM368 提供 DVR 與 IPNC 兩大應用方案。DVR 基於 DM368 DVRRD SDK(含 TI DVSDK、LSP、DVR 應用、文件系統、啟動工具等);IPNC 同樣基於 DVSDK 開發。具體環境搭建請參考對應開發包文檔。

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

系統啟動後運行四大核心進程:
| 進程 | 主要職責 |
|---|---|
| AV_Server | 視頻/音頻採集、編碼、環形緩衝區管理、碼流分發 |
| System Server | 系統參數存儲、錄像文件管理(FTP/本地)、設備控制(RTC/USB) |
| RTP Streaming Server | 網路視頻流傳輸(RTP/RTSP) |
| HTTP Server | Web 配置介面、API 響應 |
進程間通信採用 POSIX 消息隊列 傳遞控制命令,共享內存 / CMEM 驅動 傳遞大數據(視頻幀、環形緩衝區)。
核心啟動腳本位於 /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。
本文僅覆蓋架構骨幹,實際開發還需深入:
參考文檔: Application_DesignGuide_IPNC_DM36x.pdf、AVServer_DesignGuide_IPNC_DM36x.pdf