MPC8245的大部分可编程配置寄存器是要在上电进行初始化的,这些寄存器其实在MPC内部PCI控制器MPC107里面的。MPC8245提供了一个接口来访问这些在PCI总线上的寄存器(也外部接着的PCI设备),这个接口其实就是两个port,一个port叫CONFIG_ADDR,范围可以在0xFEC0_0000 – 0xFEDF_FFFF,
另一个叫CONFIG_DAT,范围在0xFEE0_0000 – 0xFEEF_FFFF.虽然是一个地址范围,到必须使用相同的偏移量。使用0x8000_00nn来范围MPC107的配置寄存器,nn是寄存器的偏移值。当向CONFIG_ADDR写入地址时,CONFIG_DAT就是对应地址寄存器的数据,可读写。
这些寄存器可以分为两大类,一类是PCI的控制寄存器(0x00 – 0x3C),这些寄存器的定义都是全球统一的。还有一类就是boardcom加上去的“特殊功能”寄存器了(0x40 – 0xFC)。
PCI控制寄存器(0x00 – 0x44)
0x00开始的是设备ID设别寄存器,这些寄存器能够在硬件初始化的时候进行检测,通过检测所有的PCI slot,可以知道究竟有多少个PCI设备接在总线上。
Slot上不存在设备,读取ID时会返回0xFFFF.
PCI Command Register—Offset 0x04
Fast back-to-back 硬件指定为0,MPC8245不能运行 fast back-to-back transactions.
SERR 允许地址校验错误报告,驱动SERR引脚。
Parity error response 允许产生奇偶检验错误。
Memory-write-andinvalidate 允许MPC8245作为master时,产生内存写无效命令。
Special cycles 硬件指定为0,忽略所有的special-cycle 命令。
Bus master 允许MPC5248作为总线master
Memory space MPC8245作为target的时候是否响应内存访问。
I/O space 硬件指定为0,作为target时不响应PCI I/O空间访问。
PCI Status Register—Offset 0x06
通过写1来清零相应位,写0不影响,详细参见datasheet。
Detected parity error 有地址或者数据检验错误即使parity error handling被通过PCI command寄存器禁止
Signaled system error 置位,如果有SERR信号.
Received master-abort MPC8245作为master时使用 master-abort.命令终止一个传输
Received target-abort MPC8245作为一个发起者,被目标使用target-abort.命令终止一个传输
66-MHz capable 只读,只是PCI是否为66MHz
PCI Base Address Registers—LMBARn and PCSRBAR
这些寄存器是MPC8245作为PCI agent模式时使用的。两个本地内存基址寄存器:LMBAR0,LMBAR1。一个外围控制和状态寄存器PCSRBAR-给外部PCI设备控制MPC8245时用的。
当MPC8245作为一个PCI agent时,这些寄存器允许一个主处理器进行配置。