阅读:872回复:3
【能解答我的疑问的高手,我把分全给他!】如何执行读取硬件数据的动作
我现在负责GPS时钟卡的驱动程序开发,任务书上说数据在线脚上,要把这些数据读出来,占用的资源是0x00-0x0ff,时钟卡是用PLX9052开发,我在超作系统里查看资源占用情况如下:
BRA0:FEAFF800 128Bytes Memory 32-bit BAR1:FFFFFFFC 128Bytes I/O BAR3:FE900000 1M Memory 32-bit Rom base FEAEOOOO 64k Disabled 我在READ历程里分别用 m_MemoryRange0.inb; m_IoPortRange1.inb; m_MemoryRange3.inb; 来读数据,但都不是时钟卡产生时钟信号数据 请问各位高手,如何去读出这些时钟信号数据? 能解答我的疑问的高手,我把分全给他! |
|
沙发#
发布于:2004-08-28 17:31
看你用的函数,应该是用DS开发的吧?
你使用m_MemoryRange和m_IoPortRange之前是否根据它们在地址初始化正确呢? |
|
板凳#
发布于:2004-08-30 14:44
负责时钟卡硬件开发的人说本地地址空间为:0000h-2000h,而时钟数据地址的偏移量为0x00-0xffh,问题是:
1、怎样才能把本地地址映射为PCI地址? 2、是在EEPROM里配置还是在通过程序编写实现? 3、怎样读出本地地址里的时钟数据? 本人刚接触驱动开发,所以水平很低,还望各位高手能指点一下。 我来这个论坛不久,现在也只有300分,但我愿意把所有的分送给帮我解答问题的朋友。绝不食言!! 本人QQ:14511272 希望能和大家交流一下!! |
|
地板#
发布于:2004-08-30 15:00
status = m_MemoryRange0.Initialize(
pResListTranslated,pResListRaw,PciConfig.BaseAddressIndexToOrdinal(0))//在PCI序号上的序号 if (!NT_SUCCESS(status)) { Invalidate(); return status; } status = m_IoPortRange0.Initialize(pResListTranslated, pResListRaw,PciConfig.BaseAddressIndexToOrdinal(1)//在PCI序号上的序号 ); if (!NT_SUCCESS(status)) { Invalidate(); return status; } status = m_MemoryRange1.Initialize( pResListTranslated,pResListRaw, PciConfig.BaseAddressIndexToOrdinal(1),//在PCI总线上的序号TRUE); if (!NT_SUCCESS(status)) { Invalidate(); return status; } |
|