这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » pci读写问题

共5条 1/1 1 跳转至

pci读写问题

菜鸟
2005-06-30 19:31:44     打赏

我用pci9052做了一块pci卡,外部设备是通过存储器方式读写的。

在pciConfigOutWord(busNo,deviceNo,FunNo,PCI_CFG_COMMAND,PCI_CMD_MEM_ENABLE);之后

调用sysOutByte(address, 0x01);

pci总线上的信号都不对,到pci9052就一点反应都没有了。读pci9052的寄存器是好的

就是不能写到外设去,是用sysOutByte吗?




关键词: 读写     问题    

菜鸟
2005-06-30 22:09:00     打赏
2楼

我的数据是8位的,但是写出来没有反应阿

会是什么问题呢


菜鸟
2005-06-30 23:02:00     打赏
3楼

pci板卡和主板连的是32位的

pci和外设连的是8位的


菜鸟
2005-07-01 00:05:00     打赏
4楼

STATUS canpci_init(unsigned char word) { int busNo; int deviceNo; int FunNo; char irq; int rec_word[6],io_word[6]; UINT32 membaseCsr; UINT32 iobaseCsr; if(ERROR == pciFindDevice(CAN_VENDOR_ID, CAN_DEVICE_ID, 0, &busNo, &deviceNo, &FunNo)) { printErr("\ncan't find the can card\n"); return ERROR; } pciConfigInLong (busNo, deviceNo, FunNo, PCI_CFG_BASE_ADDRESS_2, &membaseCsr); membaseCsr &= 0xFFFFFFF0; pciConfigInByte (busNo, deviceNo, FunNo, PCI_CFG_DEV_INT_LINE, &irq); if (sysMmuMapAdd((void *)membaseCsr, 32,INIT_STATE_MASK, INIT_STATE) == ERROR) { printErr("\ncan't assign enough memory\n"); return ERROR; } else { pciConfigOutWord(busNo,deviceNo,FunNo,PCI_CFG_COMMAND,PCI_CMD_MEM_ENABLE); if(ERROR == taskSpawn("tcan",100,0,0x1000,(FUNCPTR)pciRe_Wr,membaseCsr,0,0,0,0,0,0,0,0,0)) { printErr("/ncan't create a task/n"); return ERROR; } } return OK; /* sysIntEnablePIC (irq); */ }

void pciRe_Wr(int address) { printf("memory address %x",address); FOREVER {

sysOutLong(address, 0x00000001); taskDelay(30); } }

写数据后pci9052的ALE没有反应

这是我的程序,各位看看有问题吗?如果没有问题,可能就是pci9052的问题了


菜鸟
2005-07-02 16:59:00     打赏
5楼
各位大虾救急啊

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]