阅读:851回复:0
WinDriver603和Plx 9054 的问题:
WinDriver603和Plx 9054 的几个问题:
看了一下WinDriver603的9054lib.c和9054的datasheet, 发现9054大致有以下几个空间: (1) PCI配置空间包括厂商设备和几个基地址寄存器等 (2) 9054自定义的一些寄存器如runtime系列, DMA系列等 (3) local address space 0 (4) local address space 1 (5) EEPROM WinDriver603的9054lib.c提供的对空间访问的函数有: 对(1)如:P9054_ReadPCIReg() 对(2)如:P9054_ReadReg(), 以BAR0为基地址寄存器 对(3)和(4)如:P9054_ReadByte() 用基地址+偏移量的寻址方法 P9054_ReadByteLocal()用局部端物理地址的寻址方法 对(5)如:P9054_EEPROMReadDWord() 问题在对(3)和(4)的访问. 在9054lib.c中有函数P9054_SetMode(),我理解它的作用是从局部端地址得到基地址写入LAS0BA寄存器,供remap时使用. 因为9054提供了LAS0BA和LAS1BA分别对(3)和(4)空间进行访问,所以开始我以为9054lib.c只是提供了对(3)空间访问的例子函数.这样用P9054_ReadByteLocal()等local系列函数就只能对(3)空间进行访问. 可没想到在WinDriver603提供的例子程序P9054_DIAG.c中,PLX_BoardAccess()函数通过调用P9054_ReadByte()和P9054_ReadByteLocal()等函数,通过两种寻址方法可以访问(3)和(4)两个空间! 不知哪位朋友可以作出解释,谢谢! 另外,我理解P9054_IntEnable()函数是要先取消中断,再执行中断例程,最后开中断.但好像还要添加什么语句,我想在调用中断例程之前添加 WD_Transfer(hPlx->hWD,&hPlx->Int.Trans[0]);//读INTCSR的值 WD_Transfer(hPlx->hWD,&hPlx->Int.Trans[1]);//写入INTCSR,取消中断 不知对不对? |
|
最新喜欢:mapofl |