zhongjie
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2006-02-15
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1291回复:7

询问关于基于PCI 的驱动中的一个源代码问题

楼主#
更多 发布于:2005-01-21 19:17
在一个基于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]
zhongjie
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2006-02-15
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-23 12:08
怎么没有人回答啊,
carrot_top
驱动牛犊
驱动牛犊
  • 注册日期2005-01-17
  • 最后登录2005-03-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于: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
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-24 15:52
该代码只有应用程序示例,根本无驱动程序源码,我猜这段持续是视频捕获卡的,如SetVideoParameter, GetVideoType要使它工作,必须有相应的开发包,包含.DLL文件,其中输出你这里要用的 IICWrite等函数
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhongjie
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2006-02-15
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-25 21:09
上面的仁兄说的不错,我只是粘贴出了驱动中的一部分,如果没有这些代码,有怎么可以把产品运行起来呢?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-26 11:03
上面的仁兄说的不错,我只是粘贴出了驱动中的一部分,如果没有这些代码,有怎么可以把产品运行起来呢?
 

你是要开发应用程序,使用这个卡吧,如果你有相应的开发包,包含.DLL文件,该开发包中有说明如何调用这里的API,这样根本不用跟该卡的驱动打交道,开发包中的API替你代劳啦!
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
zhongjie
驱动牛犊
驱动牛犊
  • 注册日期2004-08-24
  • 最后登录2006-02-15
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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);就是上面代码中的定义了。驱动中可以不用写这些代码吗?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-01-27 11:27
谢谢上面的仁兄,问题具体是这样的:
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);就是上面代码中的定义了。驱动中可以不用写这些代码吗?

明白了,如果你有驱动源代码,看懂它。看它每个函数如OpenIIC具体要干什么,要写那个寄存器端口,相应硬件实现这个功能。我猜 IICWrite, IICRead一定是读写卡上端口的例程。
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部