DM365 IPNC软件架构具体解释
于2013在上半场 - 年DM365、DM368的IPNC(网络摄像机)与稳定性测试工作产品结束。
1.简单介绍:
TI针对TMS320DM365、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中软件架构
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZ3VvODExMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
Engine都有同样的API。Codec Engine定义了4类编解码器算法接口标准。各自是视频、图像、语音、音频,简称VISA。
3.应用层结构
AV_Server
Systemserver
RTPstreaming server
HTTPserver
这些进程的作用:
AV_Server process is responsible for:
• Capturingvideo and audio data from image sensor and audio device
• 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(连续内存模块)模块,用于DSP和ARM共享。它的起始位置是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.部分进程分析
6.总结
如PISA、ONVIF(安防标准)。boa(提供网页訪问)。GoDB(提供网页訪问的UI),wis-streamer(提供网络视频流)等。
systemserver进程基本与视频採集和codec无关,是纯纯的Linux编程。涉及多线程、socket、System V进程通信,以及USB、网口等各方面的编程,对于学习Linux编程非常有帮助。
版权声明:本文博主原创文章。博客,未经同意不得转载。
DM365 IPNC软件架构具体解释的更多相关文章
- DM368启动串口打印分析
DM36x initialization passed! TI UBL Version: 1.50 Booting Catalog Boot Loader //启动目 ...
- [转]架构蓝图--软件架构 "4+1" 视图模型
架构蓝图--软件架构 "4+1" 视图模型 本文基于多个并发视图的使用情况来说明描述软件密集型系统架构的模型.使用多重视图允许独立地处理各"风险承担人":最终用 ...
- 关于lib,dll,.a,.so,静态库和动态库的解释说明
[转]关于lib,dll,.a,.so,静态库和动态库的解释说明 目录 1 什么叫程序库 2 什么是lib,什么是dll,什么是.a,什么是so,什么是静态库,什么是动态库 3 补充说明 4 作者 什 ...
- b2c项目基础架构分析(二)前端框架 以及补漏的第一篇名词解释
继续上篇,上篇里忘记了也很重要的前端部分,今天的网站基本上是以一个启示页,然后少量的整页切换,大量的浏览器后台调用web服务局部.动态更新页面显示状态这种方式在运作的,从若干年前简单的ajax流行起来 ...
- b2c项目基础架构分析(一)b2c 大型站点方案简述 已补充名词解释
我最近一直在找适合将来用于公司大型bs,b2b b2c的基础架构. 实际情况是要建立一个bs架构b2b.b2c的网站,当然还包括wap站点.手机app站点. 一.现有公司技术人员现状: 1.熟悉asp ...
- DM365视频处理流程/DM368 NAND Flash启动揭秘
出自http://blog.csdn.net/maopig/article/details/7029930 DM365的视频处理涉及到三个相关处理器,分别是视频采集芯片.ARM处理器和视频图像协处理器 ...
- 《Linux设备驱动开发具体解释(第3版)》进展同步更新
本博实时更新<Linux设备驱动开发具体解释(第3版)>的最新进展. 2015.2.26 差点儿完毕初稿. 本书已经rebase到开发中的Linux 4.0内核,案例多数基于多核CORTE ...
- 软件架构系列一:C4模型
本文要点预览:因为软件系统的分布式特点以及开发团队的分布性,了解软件架构的基础变得越来越重要.而在过度设计和毫无设计之间,我们应该把注意力放在对软件系统有重大影响的决策和权衡上.好的架构师应该是团队的 ...
- 结合领域驱动设计的SOA分布式软件架构
引言 本文主要是参考Martion Fowler所著的<企业应用架构模式>与Eric Evans所著的<领域驱动设计>这两本泰山之作,加上本人在近年实际的工作过程中开发SOA系 ...
随机推荐
- (转)SQL Server 2012笔记分享-25:配置备份维护计划
本文转自http://543925535.blog.51cto.com/639838/1427529 在日常的SQL维护中,有很多需要重复周期性去做的工作我们不太可能去手动操作完成,比如备份作业.重建 ...
- JRebel热部署神器的配置(Eclipse,非教程,就自己看看)
1.安装下载 直接下官方正版的就好了 eclipse->help->eclipse marketplace 搜索JRebel 然后按步骤一步步安好 安装好记得重启 2.注册 这东西在搞活动 ...
- 新浪sae上安装原生wordpress4.1
1. 加入/改动wp-config.php文件 <?php /** * WordPress 基础配置文件. * * 本文件包括下面配置选项: MySQL 设置.数据库表名前缀. * 密匙.Wor ...
- open ball、closed ball 与 open set、closed set(interior point,limit point)、dense set
0. demo 在拓扑学上,open set(开集)是对实数轴(real line)上开区间(open interval)的拓展. 红色圆盘:{(x,y)|x2+y2<r2},蓝色圆圈:{(x, ...
- eclipse开发环境下集成activiti插件
一.环境 eclipse 4.3.0 Activiti Designer 5.14.1 二.Activiti Designer 5.14.1插件安装 在eclipse中菜单help->Insta ...
- idea+springboot+freemarker热部署(转)
今天在学习springboot集成freemarker模板引擎修改代码时,发现每次修改一次freemarker文件时,都必须重启下应用,浏览器刷新才能显示修改后的内容,这样效率太低,每次启动一次应用都 ...
- C++ 指针(不论什么一个指针本身的类型都是unsigned long int型)
1.指针数组: 即 数组的元素是指针型; 例:int*pa[2]; 明明是一维的指针数组.竟当作二维数组用. [cpp] view plain copy //利用指针数组存放单位矩阵 #include ...
- css3-11 网页如何使用自定义字体
css3-11 网页如何使用自定义字体 一.总结 一句话总结:下载好字体文件,然后在网页中引入,用src: url('my.otf');来引入,使用的时候就使用自己定义的名字来使用这个字体. 1.网页 ...
- image-base64互转
package base64StringToImage; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStrea ...
- Java解惑八:很多其它库之谜
本文是依据JAVA解惑这本书,做的笔记. 电子书见:http://download.csdn.net/detail/u010378705/7527721 谜题76 将线程的启动方法start(),写成 ...