powerpc memory和io访问原理

第一部分、MPC85xx/MPC86xx处理器中的寄存器

MPC85xx/MPC86xx处理器中有两类寄存器:

1. PowerPCE500(MPC85xx)内核的内部寄存器,如MSR,HID寄存器等,使用mtspr,mfspr指令可以对这些寄存器进行读写。

PowerPC E600(MPC86xx) 内核的内部寄存器,如IBAT,DBAT寄存器等,使用mtspr,mfspr指令可以对这些寄存器进行读写

2.  MPC85XX/MPC86xx处理器的内部寄存器,这些寄存器采用存储器映射进行寻址,其地址空间大小为1MB,如LAWBAR0,LAWBAR1寄存器。用户可以使用stwlwz等存储器读写指令对这些存储器映射的寄存器进行访问。

关于 MPC85XX/MPC86xx处理器的内部寄存器Local AccessRegister(局部访问寄存器)Local Buscontroller Register(局部总线控制寄存器)

(1). LocalAccess Register用于定义MPC85xx的数据访问空间。

(2). LocalBus controller Register用于配置MPC85xx处理器的局部总线。处理器的局部总线可以与异步存储器如Nor flash进行连接,也可以连接SDRAM 。对于Enhance LocalBus Controller的设置主要由BR0-BR3,以及OR0-OR3决定

第二部分、Mmu初始化和io访问时处理器寄存器的应用


注意MMU模块中包含TLB即pte的cache。

MMU初始化

          1. E500 core MMU初始化重要的有2个,TLBLAW

刚开始reset时,MMU初始化好了,TLB entry0映射4kLAW分别对应nor flash外设。随着系统运行到sysLib.c文件,加载sysPhysMemDescsysStaticTlbDesc表。其实就是写MSRLAW寄存器。sysStaticTlbDesc数组用于配置TLB1的地址映射,sysPhysMemDesc用于配置TLB0的地址映射。参考E500 MMU架构研究及VxWorks下的优化方案

sysStaticTlbDesc要保证为vxworks启动和基本操作所需的各地址区域具有地址空间0的配置;sysPhysMemDesc描述了物理内存中的一个连续的块,可包含的映射空间有内存、Flash、ROM和IO设备。vxworks下默认配置中,地址空间1的全部系统内存在sysPhysMemDesc中。

        2. E600 core MMU初始化主要有 BAT/PTELAW

刚开始reset时,因为MMU有一些杂乱的初始值,所以必须关闭MMU,此时没有MMU的地址翻译,EA=RA。在以后系统打开MMU,但是系统MMU映射方式有两种PTEBAT。在sysLib.c文件,分别有sysPhysMemDescsysBatDesc表,即写TLBBAT寄存器。sysPhysMemDesc表写TLB寄存器,sysBatDescBAT寄存器为了能够使cpu可以访问外设地址空间。顺便提下在2440bsp中只有sysPhysMemDesc

在初始化时,上面的Desc数组修改的寄存器应该包含BAT、TLB、LAWBAR等底层寄存器,应该没有修改BR寄存器。

nor flash一般位于CS0,通过GPCM,系统复位已经做好了。

pci设备不需要片选信号,通过访问mpc85xx pci相应寄存器也可以控制。

IO访问

         1. E500 core 访问外设

首先系统先根据TLBEA(Effectiveaddress)转换为RA(Real Address),再通过Local Access Register(局部访问寄存器),根据EA选择合适的controller,最终把RA(RealAddress)放到地址总线上去。而通过Local Bus controllerRegister(局部总线控制寄存器)提供给外设控制信号。

         2. E600 core 访问外设

首先系统先根据BAT/PTE,EA转换为RA,再通过Local AccessRegister根据EA选择合适的controller,最终把RA(Real Address)放到地址总线上去。而通过Local Buscontroller Register(局部总线控制寄存器)提供给外设控制信号。


参考文献:

PowerPC小记 http://blog.163.com/symphony_sol/blog/static/30279623200992893636236/


PowerPC的MMU初始化 :http://blog.chinaunix.net/uid-24148050-id-2951898.html



  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值