jason222333 发表于 2010-12-09 10:39

關於PCI device driver 觀念的問題

本帖最后由 jason222333 于 2010-12-09 13:11 编辑

当我的pci总线上有两个chip,一个是CPU,另一个是某个A chip

我想要实现连结这两个chip。



CPU有两个pcie core,不支持DMA功能,所以只用fifo.

如果想连结这两个chip

CPU的PCI driver,prob() function 是不是 detect A chip 的 vender ID 和 device ID?反之亦然?

所以pci侦测 config space的动作,是在 prob() function 实现就可以了吗?

侦测 config space的动作还需要注意什么吗?



关于传送接收数据的 function ,因为规格有写不支持DMA,是不是实现 read() 和 write()即可?

因为我在CPU其他的 PCI device driver 中没有看到 read或write,只有看到庞大的core Init 和 config space 的 读写function.

就算有看到read()或write(),也是只有实现write()的部分.

最后,read()或write()的读写 data reg是不是经由 I/O space或 memory space?或是PCI根本没有实现read()或write()?

a或是BAR0、BAR1就是 data reg?

dreamice 发表于 2010-12-09 12:50

楼主是台湾的,都繁体啊

jason222333 发表于 2010-12-09 13:11

抱歉,現在轉成簡體

accessory 发表于 2010-12-10 07:25

LZ 还是把你的硬件环境表述的再清楚些吧?你是啥机器?X86 PC? ARM? 还是其他?

怎么一个CPU上还有2个PCIE CORE? 你这个CPU是插在主板上的外设上面带的CPU?

为啥DMA不支持就只能FIFO了?比DMA更低级的是中断方式 和 PROGRAM IO....

READ, WRITE 可以自己实现。PCI 肯定支持。

jason222333 发表于 2010-12-10 10:41

你是啥机器?X86 PC? ARM? 还是其他?

怎么一个CPU上还有2个PCIE CORE? 你这个CPU是插在主板上的外设上面带的CPU?


我是用ARM
bcm53001,有兩個pcie core
不過只做一端即可

這個cpu是在內部。


为啥DMA不支持就只能FIFO了?
因為我參考別人的pci device driver只有實現 DMA傳送(pci網路卡) 或是 Mailbox(cpu to cpu 傳送)

READ, WRITE 可以自己实现。PCI 肯定支持。
目前還沒有看到read() 的實際做法= =
我只有看到 DMA傳送 或是 Mailbox


如果這個CPU與A chip利用PCIe作連結的話?
CPU pci driver 的 prob()是實現 config. space detect嗎?
如果是這樣
prob() 是 detect A chip的vender id 和 device id嗎?
還是要prob()自己的vender id 和 device id?

另外,read和write的 data reg.要讀哪裡呢?
config. space 的 BAR0~5? 還是要找CPU的輸出口(PCIe core?)的 data reg.?

真煩惱:outu:
页: [1]
查看完整版本: 關於PCI device driver 觀念的問題