MPC8572地址空间解读
来源:互联网 发布:JS在图片上录入文字 编辑:程序博客网 时间:2024/05/22 15:23
本文中的内容主要是根据MPC8572ERM.pdf手册第2章Memory Map的内容进行了分析和解读。阅读下面的内容的同时,请参考这本手册。
MPC8572提供了灵活的地址空间分配,它定义了12个本地访问窗口(LAW, Local Access Window),我们可以认为LAW是一个基址可变,长度可变的地址范围,所以用英文比较形象的形容为window。这十二个LAW可以灵活的被分配给以下几个目标,并且为每一个目标都规定了一个目标编码。这里的目标我们可以认为是某一个具体的物理总线,某一个具体的外设控制器等。我们访问这些物理总线或者外设控制器都是通过这些LAW来访问。
目标接口编码
目标接口 目标编码
PCIE 3 00000
PCIE2 00001
PCIE1 00010
Local bus 00100
Interleaved SDRAM 01011
Serial RapidIO 01100
DDR SDRAM1 01111
DDR SDRAM2 10110
既然这12个LAW都是基址、长度可变的地址空间范围,那我们在访问之前就需要配置或者通过某种方式知道它们的基址和范围,这样我们才可以对映射到这些窗口的总线或者外设进行访问。事实上,每一个窗口都有对应的一对寄存器:
LAWBARn : 本地窗口基址寄存器( n 从0 到 11)
LAWARn: 本地窗口属性寄存器( n 从0 到 11)
顾名思义,LAWBARn定义了每个窗口的基址,理论上你可以把这个窗口放在0到64G地址空间的任意一个位置。
LAWARn定义了三个域( field) :
其中第0位是en域,是否使能这个窗口。
其中第7 - 11位是TART_ID域,这个窗口对应的总线或者外设控制器,请参考我上面的目标接口编码。
第26 - 31位是SIZE域,定义了这个窗口的大小。
那接下来大家的问题可能是我如何访问这些LAWBAR和LAWAR寄存器呢,其中如手册2.2.3章节描述,这些LAW相关的寄存器都位于CCSRBAR寄存器定义的窗口(LAW)中,CCSRBAR定义了一个1M大小的窗口,并且在地址空间访问的时候这个窗口的优先级别高于其他窗口。CCSBAR有一个初始的默认值为0xFF700,如手册中Table 4-4所示。这样的话,如果我们在MPC8572上电之后,需要马上访问和配置LAWBARn和LAWAR寄存器,就可以以0xFF70_0000为基址,然后再加上各个LAWBAR和LAWAR寄存器的偏移量来进行操作,其中LAWBAR和LAWAR寄存器的偏移量在手册的2.2.3.1章节描述的Table 2-4。
总结如下:
mpc8572通过本地访问窗口提供了一个非常灵活的地址映射机制。我们在初始需要进行配置的时候,需要对CCSRBAR定义的IO寄存器窗口中的相应LAW寄存器进行访问,来完成对想要的操作。
- MPC8572地址空间解读
- MPC8572地址空间解读
- MPC8572调试记录
- MPC8572调试记录
- 地址空间
- 地址空间
- 地址空间
- 地址空间
- 地址空间
- 地址空间、内核空间、IO地址空间
- 地址空间、内核空间、IO地址空间
- ipv6地址解读---子网掩码
- 系统地址空间,PCI地址空间
- 系统地址空间,PCI地址空间
- 内核地址空间与进程地址空间
- 进程地址空间和虚拟地址空间
- 进程地址空间 - 地址空间布局
- Oracle-SYSAUX表空间解读
- 随笔090606
- python 介绍
- CPU支持虚拟化技术的CPU型号
- VC开发辅助工具大收集
- c++ 程序 统计一个字符串内的正整数和负整数个数
- MPC8572地址空间解读
- gdb保存断点信息问题
- assert() c++ 使用方法
- Xtreme.Toolkit.Pro v11.2.1 汉化方法及全过程
- MYSQL常用查命令:
- mysql alter 语句用法,添加、修改、删除字段等
- MSComm串口控件使用详解(转)
- 双ADSL双局域网合并共享
- Installed Ubuntu on my laptop~~~