2.SAA7105配置
EVMDM642_vDisParamsSAA7105结构体:
VPORTDIS_Params EVMDM642_vDisParamsChan = {
};
EVMDM642_vDisParamsChan 参数说明
1.dmode:
当前值:VPORT_MODE_BT656_8BIT,
作用:co-sited luma and chroma data multiplexed into a single data stream
因当前位数为8bit,VDOUT9~ VDOUT2脚输出8位数据
图1:BT.656 Output Sequence
图2:模式选择
2.fldOp:field and frame operation mode.
当前值:VPORT_FLDOP_FRAME
类似于如下
3. Scale: horizontal 2x scaling enable。
当前值:VPORT_SCALING_DISABLE,不允许缩放。
4.defValEn:
default value output enable. Enable output of default value in the non-blanking period outside the image window。
在非空白时段图像输出是否指定为默认值,默认值配置见下面9段。
当前值:VPORTDIS_DEFVAL_ENABLE
5. Resmpl:
VPORT_RESMPL_DISABLE
chroma horizontal 4:2:0 to 4:2:2 re-sampling disable.
6. bpk10Bit:
VPORTDIS_BPK_10BIT_NORMAL,
Fifo填充模式,普通模式,一字填充2个10bit
7.vctl1Config: vctl2Config: vctl3Config:vctl1~vctl3引脚的输出选择
其中vctl1: vctl2都有以下四种选择;
? VPORTDIS_VCTL2_VSYNC
? VPORTDIS_VCTL2_VBLNK
? VPORTDIS_VCTL2_CSYNC
? VPORTDIS_VCTL2_FLD
vctl3有以下2种选择
VPORTDIS_VCTL3_CBLNK
? VPORTDIS_VCTL3_FLD
在此程序中:VPORTDIS_VCTL1_HSYNC,
Vctl
1脚选择输出为水平同步信号
VPORTDIS_VCTL2_VSYNC,
Vctl2脚输出选择为垂直同步信号
VPORTDIS_VCTL3_FLD,
Vctl3脚输出选择为场信号,标志当前场序号(field1或field 2)
8.帧及图像等相关数据,已在下图中标识
9.指定Y,CB,CR分量的默认值:
Y为 0x10,
CB 0x80,
CR 0x80,
10. rgbX 仅在raw mode连续输出24/30-bit RGB模式中使用,是否执行3/4 fifo解包。本程序与其无关。指定为VPORTDIS_RGBX_DISABLE。
11. incPix:仅在 raw mode中使用。
12.thrld: 当fifo中数据达到此值,将触发edma事件。此处为360/8=45双字。
13. numFrmBufs
给driver分配的buffer个数,本程序为3个。
14. Alignment:
Buffer的字对齐,此处为128字节对齐,即buffer的开始地址为128的倍数。
15,mergeFlds:指定场1和场2 buffer是否在存储器中分开存放。
VPORT_FLDS_MERGED,此处不分开放置。
16. SegId:指定driver将buffer分配到的位置,初始值为null,后在初始化函数thrDisplayInit中指定为EXTERNALHEAP,由dsp/bios中mem模块分配可知EXTERNALHEAP是外部存储器中的堆。
17.edma传输的优先级,可指定为高或低。指定为高EDMA_OPT_PRI_HIGH。
18.edma 中断号id,为8,默认值。
SAA7105_ConfParams EVMDM642_vDisParamsSAA7105 = {
SAA7105_AFMT_SVIDEO,
SAA7105_MODE_NTSC720,
SAA7105_IFMT_YCBCR422_INTERLACED,
TRUE,
FALSE,
INV
};
SAA7105_AFMT_SVIDEO,模拟输出的格式
可选格式有:
typedef enum SAA7105_AnalogFormat {
SAA7105_AFMT_SVIDEO = 0,
SAA7105_AFMT_RGB = 1,
SAA7105_AFMT_YPBPR = 1,
SAA7105_AFMT_COMPOSITE = 2
} SAA7105_AnalogFormat;
SAA7105_MODE_NTSC720,视屏模式,可选模式有
typedef enum
{
SAA7105_MODE_NTSC720,
SAA7105_MODE_PAL720,
SAA7105_MODE_QVGA,
SAA7105_MODE_VGA,
SAA7105_MODE_SVGA,
SAA7105_MODE_XGA,
SAA7105_MODE_HD480P60F,
SAA7105_MODE_HD720P24F,
SAA7105_MODE_HD720P60F,
SAA7105_MODE_HD1080I30F
}SAA7105_Mode;
SAA7105_IFMT_YCBCR422_INTERLACED,7105的输入格式,为ycbcr422格式。可选格式有
typedef enum SAA7105_InputFormat {
SAA7105_IFMT_RGB24_YCBCR444,
SAA7105_IFMT_RGB555,
SAA7105_IFMT_RGB565,
SAA7105_IFMT_YCBCR422_NONEINTERLACED,
SAA7105_IFMT_YCBCR422_INTERLACED
}SAA7105_InputFormat;
20.TRUE:指定7105为从模式
21.FALSE:是否使用 SAV/EAV code使能内置的同步
INV暂时不指定。在初始化函数中指定。
Display2
1. 初始化工作:
EVMDM642_vDisParamsChan.segId = EXTERNALHEAP;
EVMDM642_vDisParamsSAA7105.hI2C = EVMDM642_I2C_hI2C;
指定将用来分配视频帧缓冲区的存储段ID设置为EXTERNALHEAP。
I2c句柄指定为EVMDM642_I2C_hI2C。
disChan = FVID_create("/VP2DISPLAY", IOM_OUTPUT,
&status, (Ptr)&EVMDM642_vDisParamsChan, NULL);
建立FVID通道并初始化该通道;FVID即是GIO的一种封装,FVID通道即GIO通道。详见附录。
若成功建立,该函数返回fvid通道句柄,若不成功,返回NULL。
参数意义:
"/VP2DISPLAY ":字符串表示device driver的名字,该device driver在DSP/BIOS中定义。
IOM_OUTPUT指定设备的打开模式为输出。
status:该参量是application送给mini-driver的一个状态指针,由mini-driver来返回状态的;
EVMDM642_vDisParamsChan:是用来初始化FVID channel的具体参数,是用结构体的形式打包,并将指向该结构体的指针传送给mini-driver来进行处理,结构体中参数的具体含义已在display文档中介绍过。
NULL:为FVID_Attrs结构参数,为空,表FVID_alloc,FVID_free,FVID_exchange calls为非block形式,无论成功与否,立刻返回,详见附录。
FVID_control(disChan, VPORT_CMD_EDC_BASE+EDC_CONFIG, (Ptr)&EVMDM642_vDisParamsSAA7105)
应用程序发送一个控制命令给mini-driver,将由mini-driver做相应的响应,在这里将完成对saa7105寄存器的初始化;dischan为指定的fvid通道,由上FVID_create函数返回。VPORT_CMD_EDC_BASE+EDC_CONFIG为相应cmd命令,EVMDM642_vDisParamsSAA7105为一结构体,包含的是配置SAA7105的具体参数信息,该结构体成员已在display文档中介绍,此不再重叙。这里将该结构体的指针传送给mini-driver,mini-driver将通过i2c总线用其配置7105;该函数将导致mdcontrol函数的调用。
本文援引自http://hi.baidu.com/skyfield_007/blog/item/f05a8216c9240902c83d6d67