CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1042回复:4

麻烦做过9052的兄弟帮个忙

楼主#
更多 发布于:2003-09-25 10:19
是有关中断的寄存器的问题。INTCSR的偏移地址为0x4c,是不是我都这个寄存器的时候,地址直接为4c就可以了?就好像我用out指令读吧,是不是这样:IoPortRange.outw(0x4c,0x12)就可以对INTCSR进行写?谢谢

最新喜欢:

mapoflmapofl
答得好的话,请兄弟们加点分,那是对我的肯定
zzhmmx
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2004-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-09-25 14:31
应是这样。
我是用内存映射访问9052 LOCAL REGISTER,偏移地址为0x50,让9052产后复位信号,如下:
       先在::OnStartDevice(KIrp I)初始化:
       status = m_MemRange0.Initialize(
pResListTranslated,
pResListRaw,
PciConfig.BaseAddressIndexToOrdinal(0)
);
if (!NT_SUCCESS(status))
{
Invalidate();
return status;
}
      然后在需要处:
ULONG dwPCI9052Control = m_MemRange0.ind(0x50);

dwPCI9052Control |= 0x40000000;
m_MemRange0.outd(0x50,dwPCI9052Control);

dwPCI9052Control &= 0xbfffffff;
m_MemRange0.outd(0x50,dwPCI9052Control);
    是没有问题的,I/O没试过,如成功了告诉我一声,谢谢!
       :P
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-09-25 14:52
兄弟可否说下为什么要这样做呢?还有可否说下这段代码是什么意思:ULONG dwPCI9052Control = m_MemRange0.ind(0x50);

dwPCI9052Control |= 0x40000000;
m_MemRange0.outd(0x50,dwPCI9052Control);

dwPCI9052Control &= 0xbfffffff;
m_MemRange0.outd(0x50,dwPCI9052Control);

谢了
答得好的话,请兄弟们加点分,那是对我的肯定
zzhmmx
驱动牛犊
驱动牛犊
  • 注册日期2003-05-05
  • 最后登录2004-07-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-09-25 18:04
这是一个例子,让PCI9052的复位BIT置1(Serial EEPROM Control, PCI Slave Response, User I/O Control, Init Control寄存器,在Local Configuration Registers 的偏移地址为0X50),让PCI9052产生复位信号,然后再恢复该位为0;
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-09-25 18:29
zzhmmx兄,送了信息给您,不知您可不可以答应我的要求呢?不胜感激
答得好的话,请兄弟们加点分,那是对我的肯定
游客

返回顶部