达芬奇技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1视频信号基础
TVP5147
AN-5321A半球摄像机
像素:PAL:512H×582V NTSC:512H×492V
CCD类型:1/3"SONYCCD
信号制式:PAL/NTSC
分辨率:420TVL
最低照度:0LUX(红外灯开启)
信噪比:≥48dB
自动增益:自动
逆光补偿:自动
镜头:3.6MM(可选)
同步方式:内同步
伽马校正:0.45
视频输出幅度:1.0Vp-p/75Ω
电源:DC12V/450mA
工作温度:-10℃-50℃
工作电压:DC12V±10%
红外距离:20m(24颗φ5灯)
CVBS:
复合视频基带信号(或复合视频消隐与同步)。
复合的视频一般通过黄色RCA接头来连接的。
它将亮度、色度、同步和色彩脉冲信息整合到一根电缆内。
S-Video(Y/C):
可以分别传送亮度和色度内容。
将亮度信息与色差信号分离开来,可以大幅改善图像质量,这也正是S-Video连接在当今的家庭影院系统中流行的原因。
连接器是S端子。
YpbPr【分量视频】:
这是YCbCr数字视频的的模拟版本。
在这种视频中,每个亮度与色度通道都是单独提取、输出的,每路都带有自己的时序。
这就保证了模拟传输后图像的高品质。
分量连接在家用影院系统组件,如DVD播放器和A/V接收机中。
VGA【模拟RGB】:
具有分离的红、绿、蓝信号通道。
这可以提供类似于分量视频的图像质量,但它一般用于计算机图形图像领域,而分量视频则主要应用于消费类电子方面。
RGB连接器是DB15连接器。
Vertical Blanking Interval (VBI)
垂直回扫期
我们通常收看的电视图象是由电子枪发射的电子串高速轰击显象管上的荧光物质而产生的,电子串按从左至右,从上至下的方式扫描整个屏幕,因为速度十分快,所以我们的眼睛感觉不到,当电子枪的扫描位置从左上角达到右下角时,必须由右下角回到左上角,开始下一次扫描,从右下角回到左上角所花费的时间就是垂直回扫期,这一段时间对于设备来说是一个浪费,因此人们想了办法来利用这一段时间,电视台可以利用这一时间发送一些不可显示信息,如果您使用过图文电视您就会立刻明白,为什么图文电视卡要接收电视信号,电视卡可以解读这一信息,而电视不能,这种信息就是利用垂直回扫期发送的,电视卡通过RS-232端口将接收到的不可显示信息传送给计算机,由计算机加以处理,这就是图文电视的原理,也就是说,电视台利用垂直回扫期发送一些不可显示的信息,而图文
电视卡将这种信息接收下来,经过解码发送到计算机内由计算机处理。
DM6446 与DM6467T的区别
其硬件架构与软件工作机制大体是相同的:
双核:ARM926与TMS320 C6400
提供的接口:视频,音频,DDR,flash,rj45,usb,i2c,uart,ide,spi,ir
双核交互机制:codec engine
编译环境:DVSDK,CCS
1.1BT.656详解
BT.656并行接口除了传输4:2:2的YCbCr视频数据流外,还有行、列同步所用的控制信号。
如图3所示,一帧图像数据由一个625行、每行1 728字节的数据块组成。
其中,23~311行是偶数场视频数据,336~624行是奇数场视频数据,其余为垂直控制信号。
BT.656每行的数据结构如图4所示。
图4中,每行数据包含水平控制信号和YCbCr。
视频数据信号。
视频数据信号排列顺序为Cb-Y-Cr-Y。
每行开始的288字节为行控制信号,开始的4字节为EAV信号(有效视频结束),紧接着280个固定填充数据,最后是4字节的SAV 信号(有效视频起始)。
SAV和EAV信号有3字节的前导:FF、FF、00;最后1字节XY表示该行位于整个数据帧的位置及如何区分SAV、EAV。
XY字节各比特位含义见图5。
图5中,最高位bit7为固定数据1;F=0表示偶数场,F=1表示奇数场;V=0表示该行为有效视频数据,V=1表示该行没有有效视频数据;H=0表示为SAV信号,H=1表示为EAV信号;P3~P0为保护信号,由F、V、H信号计算生成;P3=V异或H;P2=F异或H;P1=F异或V;P0=F异或V异或H。
对于PAL制式,每一帧有625行,其中,顶场有效数据288行,底场有效数据也是288行,其余行即为垂直消隐信号。
为什么是288行?因为PAL制式的SDTV或者D1的分辨率为720*576,即一帧有576行,故一场为288行。
为什么一行中的有效数据是1440 字节?因为PAL制式的SDTV或者D1的分辨率为720*576,即一行有720个有效点,由于采集的是彩色图像,那么一行就是由亮度信息(Y)和色差信息(CbCr)组成的,由于是YCbCr422格式,故一行中有720列Y,720列CbCr,这样,一行的有效字节数就自然为720 x 2 = 1440 字节了。
2DMSOC-DM6467T
主要的差异(个人总结):
1,CPU主频提升
594M->1G(DM6467T能支持最高达到1GHz)
2,视频接口变化
DM6446使用VPFE、VPBE;DM6467使用VPIF。
VPFE提供了CCD的控制、H3A等,是准备实现相机功能的,估计是用的很少,在6467中就取消了。
DM6446只支持标清;DM6467提升为也能支持高清,其内置协处理器HDVICP能进行高清图像的编解码。
3,网速提升:网卡由支持100兆升级为支持1000兆
4,音频有所加强:ASP->McASP。
5,DM6467多了个PCI接口。
6,还有些其它差异,如DSP的cache、GPIO、HPI、EDMA、芯片封装等。
由于总体工作机制相同,所以做过DM6446的朋友转到DM6467上是很容易的,只要注意上面提到的差异即可。
DM6467T仅仅支持YUV422格式
OMAPL138的VPIF和DM646x一样
3DM6467T
3.1DM6467T EVM开发环境搭建
3.1.1Nfs文件系统的挂载
#exprotfs –av
#/etc/init.d/nfs-kernel-server restart
默认的uboot参数【拨码开关1-3:ON,4-8,OFF】
U-Boot 2009.08-00002-gcab1855 (Jan 20 2010 - 04:20:31)
I2C: ready
DRAM: 256 MB
NAND: 128 MiB
*** Warning - bad CRC or NAND, using default environment
In: serial
Out: serial
Err: serial
ARM Clock :- 495MHz
DDR Clock :- 396MHz
Net: Ethernet PHY: GENERIC @ 0x01
DaVinci EMAC
Hit any key to stop autoboot: 0
DM6467 EVM >
DM6467 EVM >
DM6467 EVM > print
bootargs=mem=112M console=ttyS0,115200n8 root=/dev/hda1 rw ip=off vpif_display.ch2_numbuffers=0 vpif_display.ch3_numbuffers=0
bootcmd=nboot 0x80700000 0 0x160000; bootm
bootdelay=3
baudrate=115200
bootfile="uImage"
addclk=setenv bootargs ${bootargs} clkref=${clkref}
stdin=serial
stdout=serial
stderr=serial
ethaddr=00:0e:99:02:b7:db
ethact=DaVinci EMAC
ver=U-Boot 2009.08-00002-gcab1855 (Jan 20 2010 - 04:20:31)
Environment size: 413/16380 bytes
DM6467 EVM >
Apt命令
apt-cache search package 搜索包
apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package 安装包
sudo apt-get install package - - reinstall 重新安装包
sudo apt-get -f install 修复安装"-f = ——fix-missing"
sudo apt-get remove package 删除包
sudo apt-get remove package - - purge 删除包,包括删除配置文件等
sudo apt-get update 更新源
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-get dselect-upgrade 使用dselect 升级
apt-cache depends package 了解使用依赖
apt-cache rdepends package 是查看该包被哪些包依赖
sudo apt-get build-dep package 安装相关的编译环境
apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get check 检查是否有损坏的依赖
3.2H2.64编解码
3.2.1在DM6467上编码 IDR frame
使用dm6467编码h264的时候,需要指定特定帧为idr frame。
但是TI提供的编码库似乎存在问题。
在DynParams->forceFrame = IVIDEO_IDR_FRAME,在VIDENC1_control(, XDM_SETPARAMS );之后能够编码出i frame, 但是并不包含SPS 和PPS header。
TI提供了一个work around, 流程如下:
In the encoder thread, When IDR frame is to be inserted
1. Set the following:
dynamicParams.generateHeader = XDM_GENERATE_HEADER;
dynamicParams.forceFrame = IVIDEO_NA_FRAME;
2. Call VIDENC1_control() for XDM_SETPARAMS. This will set the parameter to generate header (SPS and PPS)
3. call VIDENC1_process(). This will be a process call just to create header
4. Set the following:
dynamicParams.generateHeader = XDM_ENCODE_AU;
dynamicParams.forceFrame = IVIDEO_IDR_FRAME;
5. Call VIDENC1_control() for XDM_SETPARAMS. This will set Force IDR Frame parameter
6. call VIDENC1_process(). This will generate an IDR frame
7. Set the following:
dynamicParams.generateHeader = XDM_ENCODE_AU;
dynamicParams.forceFrame = IVIDEO_NA_FRAME;
8. Call VIDENC1_control() for XDM_SETPARAMS. This will set the original parameters for encoding and remove force IDR
frame.
这样就可以编出一帧完整的idr frame。
3.2.2CMEM模块
由于应用程序是运行在MontaVista Linux 之上,在应用程序里进行的地址空间都
是虚拟地址,实际上的物理地址空间不一定是连续的,当将这个指针传递给DSP端的
算法时,DSP 不能够进行处理,因为DSP 端的算法运行在DSPBIOS 之上,而DSP
端只能访问实的物理地址,为了解决这个问题,TI提供了一个CMEM模块,用于解决
这个问题。
CMEM 是一个连续物理存储空间分配模块,使得ARM 端Linux 进程和DSP 端算
法之间能够共享缓冲区。
当应用程序需要在共享缓存区动态申请一个连续的物理空间
时,通过调用CMEM 的API 可以实现,申请得到的空间可以供DSP 端访问,进行算
法处理时数据的传递与处理。
4Codec Engine
Codec Engine是一系列用于表示和运行数字多媒体标准化DSP算法接口(XDAIS)及算法的API。
XDAIS定义了一整套的多媒体算法编程接口,可单独在GPP或DSP上运行,也可在DSP上运行,而GPP通过Codec Engine对其实行控制。
对于所有支持的运算器结构、运行方式及操作系统,Codec Engine都有相同的API。
Codec Engine定义了4类编解码器算法接口标准,分别是视频、图像、语音、音频,简称VISA。
Codec Engine在解决达芬奇双处理器架构问题时首先引入了远程过程控制(RPC)的概念。
RPC是指在另一个处理器上远程执行一个命令或过程。
RPC有客户端和服务端,客户端通过某种通信协议并最终通过物理链路向服务端发送一个命令,服务端执行命令并通过相应的通信方式将结果返回给客户端。
达芬奇DM6446(DM6467)芯片将ARM作为客户端、DSP作为服务端,两者之间的物理链路就是两个处理器之间共享的DDR2存储器,而将物理链路上的通信协议称为DSPLink。
5Davinci驱动
5.1Spi驱动
5.1.1Davinci平台的SPI驱动框架
D:\嵌入式博客\davinci\Davinci平台的SPI驱动框架.mht
5.2GPIO驱动
5.2.1Davinci gpio驱动框架
D:\嵌入式博客\davinci\GPIO的驱动模型.mht
5.2.2Davinci 引脚复用模块代码分析
D:\嵌入式博客\davinci\Davinci 引脚复用模块代码分析.mht
5.3TVP7002 Linux驱动程序开发
D:\嵌入式博客\davinci\基于DM6467的TVP7002 Linux驱动程序开发.mht。