pci的io空间问题

  1. pci的io空间和mem空间有什么区别?
  2. 度去哪一些寄存器区分是io空间还是mem空间呢?
  3. mem空间的大小怎么确定,读取哪一个寄存器可以知道呢?

驱动大群交流群里,无老师回答问题,助理说在社区里问问题,虽然效率很低,但是还是有一个地方问,麻烦老师看到了帮答疑一下,谢谢

对于X86系统,MEM空间、IO空间地址才是分隔开的。
对于ARM系统来说,无论是MEM空间,还是IO空间,它的地址都处于同一个空间里。
在ARM系统里,MEM和IO还有区分的必要吗?有的:

  1. MEM空间的话,数据可以先保存在CACHE里,这样读写数据前先访问CACHE,这样会加快速度
    2.IO空间的话,数据会直达设备,不会保存在CACHE里
    PCI设备的base寄存器会声明:它需要多大的地址空间、它需要的空间是MEM还是IO