powerpc构架对于地址的访问

powerpc构架的处理器,对于内设和外设的访问比较奇怪(当然是和常见的ARM比起来),这些地址是可以重新配置的,包括配置这些配置的寄存器地址也是可配置的,以MPC8313的仿真器初始化文件为例

#setMMRBaseAddr 0xFF400000    ------------------------>复位后默认的地址是0xff400000
writereg MBAR 0xFF400000


# change internal MMR base from 0xff400000 (reset value) to 0xe0000000
writemem.l 0xff400000 0xe0000000 # IMMRBAR = 0xe0000000  ------------------------>把0xff400000改成了0xe0000000,从此以后对IMMRBAR的访问基址都是0xe0000000了


#setMMRBaseAddr 0xe0000000
writereg MBAR 0xe0000000




##############################################
# System Configuration - Local Access Windows 
##############################################


# Local Bus Local Access Windows
#################################
# WINDOW 0 - NOR FLASH
writemem.l 0xe0000020 0xfe000000 # LBLAWBAR0  - begining at 0xfe000000 ------>以后凡是对0xfe000000的寻址都会出现在CS0和它的地址数据线上了
writemem.l 0xe0000024 0x80000018 # LBLAWAR0   - enable, size = 32MB 


# WINDOW 1 - NAND Flash
writemem.l 0xe0000028 0xf8000000 # LBLAWBAR1  - begining at 0xf8000000
writemem.l 0xe000002c 0x80000018 # LBLAWAR1   - enable, size = 32MB 


# WINDOW 2 - VSC7385
writemem.l 0xe0000030 0xf0000000 # LBLAWBAR2  - begining at 0xfc100000
writemem.l 0xe0000034 0x80000010 # LBLAWAR2   - enable, size = 128kB


# WINDOW 3 - Read Write Buffer
writemem.l 0xe0000038 0xfa000000 # LBLAWBAR3  - begining at 0xfa000000
writemem.l 0xe000003c 0x8000000e # LBLAWAR3   - enable, size = 32kB


# PCI Local Access Windows
#################################
# WINDOW 0
writemem.l 0xe0000060 0x80000000 # PCILAWBAR0 - begining at 0x80000000
writemem.l 0xe0000064 0x8000001c # PCILAWAR0  - enable, size = 512MB


# WINDOW 1
writemem.l 0xe0000068 0xa0000000 # PCILAWBAR1 - begining at 0xa0000000
writemem.l 0xe000006c 0x8000001c # PCILAWAR1  - enable, size = 512MB


# DDR Local Access Windows
#################################
# WINDOW 0 - 1st DDR SODIMM
writemem.l 0xe00000a0 0x00000000 # DDRLAWBAR0 - begining at 0x00000000
writemem.l 0xe00000a4 0x8000001a # DDRLAWAR0  - enable, size = 128MB


#*********************************
# DDR2 Controller Registers
#*********************************


#DDRCDR
writemem.l 0xE0000128 0x73000002


。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

总结一下:我要说2个意思,第一个是,我们平时访问的外设的控制寄存器都在IMMRBAR中,偏移量是固定的,基址默认是0xff400000,但是这个基址可以改变。第二个意思是,localbus总线,ddr,pci等的地址和大小也是可以配置的。所有这些配置都在IMMRBAR中叫“System Configuration Registers”的地方配置。

再补充一下:powerpc的windows设置和片选地址的设置是两码事,windows的设置对于core而言,不同地址寻址去的地方不同(2个寄存器,一个是基址一个是属性,包括大小和去向),而片选地址设置是为了产生外部的读写控制信号,二者没有直接的关系,但是一般来说,windows中的LocalBus空间要大于所有的片选空间。

你可能感兴趣的:(powerpc构架对于地址的访问)