阅读:1291回复:7
询问关于基于PCI 的驱动中的一个源代码问题
在一个基于PCI的驱动中有如:
#include "SAA7111.H" #if 0 unsigned char Reg7111[32]={ 0, 0, 0xd8,//0xc0, 0x23,//0x33, 0x00, 0x00, 0xf0,//0xeb, 0x30,//0xe0, 0xa8,//0x88, 0x02,//0x01, 0x80, 0x47, 0x40, 0x00, 0x01, 0x00, 0xd0,//0xc0, 0x0c,//0x1c, 0x80,//0x00, 0x30,//0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; void ReInit7111(PDEVICE_EXTENSION pDE) { unsigned char i; for(i=0; i<sizeof(Reg7111)/sizeof(unsigned char); i++){ IICWrite(pDE,IIC_SUB_VIP, i, Reg7111); if(bIICError) return ; } } #else struct IICReg { unsigned char bySub; unsigned char byData; }Reg7113[]={ //{0, 0xff}, {1, 0x08}, {2, 0xf2}, {3, 0x23}, {4, 0x00}, {5, 0xff}, {6, 0xeb}, {7, 0xe0}, {8, 0xb8}, {9, 0x01}, {0x0a, 0x80}, {0x0b, 0x47}, {0x0c, 0x40}, {0x0d, 0x00}, {0x0e, 0x01}, {0x0f, 0x00}, {0x10, 0x00}, {0x11, 0x0c}, {0x12, 0xc7},//c7 {0x13 ,0x00}, {0x14 ,0x00}, {0x15 ,0x00}, {0x16 ,0x00}, {0x17 ,0x00}, {0x18 ,0x00}, {0x19 ,0x00}, {0x1a ,0x00}, {0x1b ,0x00}, {0x1c ,0x00}, {0x1d ,0x00}, {0x1e ,0x00}, {0x1f ,0xa1}, {0x40 ,0x02}, {0x41 ,0xff}, {0x42 ,0xff}, {0x44 ,0xff}, {0x45 ,0xff}, {0x46 ,0xff}, {0x47 ,0xff}, {0x48 ,0xff}, {0x49 ,0xff}, {0x4a ,0xff}, {0x4b ,0xff}, {0x4c ,0xff}, {0x4d ,0xff}, {0x4e ,0xff}, {0x4f ,0xff}, {0x50 ,0xff}, {0x51 ,0xff}, {0x52 ,0xff}, {0x53 ,0xff}, {0x54 ,0xff}, {0x55 ,0xff}, {0x56 ,0xff}, {0x57 ,0xff}, {0x58 ,0x00}, {0x59 ,0x00}, {0x5a ,0x07}, {0x5b ,0x00}, {0x5c ,0x00}, {0x5d ,0x00}, {0x5e ,0x00}, {0x5f ,0x00}, {0x60 ,0x04}, {0x61 ,0x0f}, {0x62 ,0x91}}; //void ReInit7113(PDEVICE_EXTENSION pDE) BOOLEAN ReInit7111(PDEVICE_EXTENSION pDE) { int i; for(i=0; i<(sizeof(Reg7113)/sizeof(struct IICReg)); i++){ IICWrite(pDE,IIC_SUB_VIP, Reg7113.bySub, Reg7113.byData); if(bIICError) return FALSE; } return TRUE; } void GetVideoParameter(PDEVICE_EXTENSION pDE,PAVE2K_VIDEO_PARAMETER pVideoParameter) { pVideoParameter->Brightness = IICRead(pDE,IIC_SUB_VIP,0xa)*100L/255; pVideoParameter->Contrast = IICRead(pDE,IIC_SUB_VIP,0xb)*100L/127; pVideoParameter->Saturation = IICRead(pDE,IIC_SUB_VIP,0xc)*100L/127; pVideoParameter->Hue = (IICRead(pDE,IIC_SUB_VIP,0xd)+127)*100L/255; } void SetVideoParameter(PDEVICE_EXTENSION pDE,PAVE2K_VIDEO_PARAMETER pVideoParameter) { IICWrite(pDE,IIC_SUB_VIP,0xa,(UCHAR)(pVideoParameter->Brightness*255/100)); IICWrite(pDE,IIC_SUB_VIP,0xb,(UCHAR)(pVideoParameter->Contrast*127/100)); IICWrite(pDE,IIC_SUB_VIP,0xc,(UCHAR)(pVideoParameter->Saturation*127/100)); IICWrite(pDE,IIC_SUB_VIP,0xd,(UCHAR)(pVideoParameter->Hue*255/100-127)); } int GetVideoType(PDEVICE_EXTENSION pDE) { int nMode=IICRead(pDE,IIC_SUB_VIP, 0x1f); if(nMode&0x40) return VIDEOTYPE_NONE;//none if(nMode&0x20) return VIDEOTYPE_NTSC;//ntsc else return VIDEOTYPE_PAL;//pal } void SetVideoSource(PDEVICE_EXTENSION pDE, ULONG VideoSource) { UCHAR SetSource; if(VideoSource==VIDEOSOURCE_CVBS) SetSource = 0xc2; else SetSource = 0xc9; IICWrite(pDE, IIC_SUB_VIP, 2, SetSource); } #endif 这是关于7113的芯片程序吗?怎么才能看懂它,在芯片的资料中有原代码吗? [编辑 - 1/21/05 by zhongjie] |
|
沙发#
发布于:2005-01-23 12:08
怎么没有人回答啊,
|
|
板凳#
发布于:2005-01-23 13:09
怎么没有人回答啊, 牛人!我问问题人家怎么不回答!!!!!!!!!!!!!!!!!! :D :P :D :P :D :P :D :P :D :P :D :P :D :P :D :P :D :P :D :P :D :P :D :P |
|
地板#
发布于:2005-01-24 15:52
该代码只有应用程序示例,根本无驱动程序源码,我猜这段持续是视频捕获卡的,如SetVideoParameter, GetVideoType要使它工作,必须有相应的开发包,包含.DLL文件,其中输出你这里要用的 IICWrite等函数
|
|
|
地下室#
发布于:2005-01-25 21:09
上面的仁兄说的不错,我只是粘贴出了驱动中的一部分,如果没有这些代码,有怎么可以把产品运行起来呢?
|
|
5楼#
发布于:2005-01-26 11:03
上面的仁兄说的不错,我只是粘贴出了驱动中的一部分,如果没有这些代码,有怎么可以把产品运行起来呢? 你是要开发应用程序,使用这个卡吧,如果你有相应的开发包,包含.DLL文件,该开发包中有说明如何调用这里的API,这样根本不用跟该卡的驱动打交道,开发包中的API替你代劳啦! |
|
|
6楼#
发布于:2005-01-26 21:52
谢谢上面的仁兄,问题具体是这样的:
1、我们做一个基于PCI的视频采集卡, 2、然后我们再做SDK开发包, 3、然后才是用这个SDK开发包写应用程序。 如果我的驱动中没有这些代码,这个SDK开发包怎么才能写出来?难道使这些芯片运行起来的代码直接放在SDK中吗? 在我现有的驱动程序的DriverEntry例程中有如下代码:(当然是WINNT的驱动,不是WDM) OpenIIC(pDevExt); //Read EEPROM Information GetBoardInformation(pDevExt); //Config audio channel ConfigAudio(pDevExt); //Load code to DSP DSPCode(pDevExt); //Initialize video decoder ReInit7111(pDevExt); // // Make sure device interrupts are OFF // 其中函数ReInit7111(pDevExt);就是上面代码中的定义了。驱动中可以不用写这些代码吗? |
|
7楼#
发布于:2005-01-27 11:27
谢谢上面的仁兄,问题具体是这样的: 明白了,如果你有驱动源代码,看懂它。看它每个函数如OpenIIC具体要干什么,要写那个寄存器端口,相应硬件实现这个功能。我猜 IICWrite, IICRead一定是读写卡上端口的例程。 |
|
|