问题描述
我想修改我的PowerPC内存系统功能。我想为我的系统配置核心配置寄存器(CCR0)。
在进行修改时我应该注意什么?CCR0的复位值是多少? “复位和初始化”一章中“复位时弹出的内容”表中的“PowerPC处理器参考指南”中存在差异,该表指出复位时CCR0被分配为0x00700000。但是,“按名称排序的专用寄存器”,“按SPRN排序的专用寄存器”和“寄存器摘要”附录中的“按SPRF排序的特殊用途寄存器”表说明其复位值未定义。哪个值是正确的?
解决/修复方法
Xilinx建议使用0x50700000作为CCR0寄存器的复位值。从EDK 8.1i开始,引导代码将CCR0寄存器的复位值设置为0x50700000(这仅适用于Virtex-4)。
上述复位值设置CCR0如下:
BITNumber名称功能
位0:5保留
位6 LWL加载字为线路设置为0 – 仅加载请求的数据
位7 LWOA Load No Allocate设置为0-Allocate
位8 SWOA Store No Allocate设置为0-Allocate
位9 DPP1 DCU PLB优先级位1在位1上设置为1-DCU PLB优先级1
位10:11 IPP ICU PLB-优先级位0:1设置为03-最高PLB请求优先级
比特12:13保留
Bit 14 U0XE使能U0异常设置为0-禁用
位15 LDBE加载 – 调试启用设置为0 – 加载数据在数据端OCM上不可见
比特16:19保留
可缓存区域的位20 PFC预取设置为0 – 禁用
位21 PFNC预取非可缓存区域设置为0 – 禁用
位22 NCRS非可缓存请求大小设置为0 – 请求大小是四个字
位23 FWOA Fetch Without Allocate设置为0-Allocate
比特24:26保留
位27 CIS缓存信息选择设置为0 – 信息是缓存数据
比特28:30保留
位31 CWS Cache-Way Select设置为0-Cache方式为A.
有关更多信息,请参阅PowerPC处理器参考指南:
转至存储器 – 系统管理 – >高速缓存控制 – >核心配置寄存器中的“核心配置(CCR0)寄存器字段定义”表。
通过修改此寄存器,Xilinx未发现任何性能改进,建议对所有系统使用复位值。如果您的系统要为描述符和数据执行高速缓存行事务,请在可高速缓存的内存中包含描述符和数据区域,然后在写入之后或读取之前刷新区域。
有关如何刷新缓存的使用信息,请参阅位于以下位置的EDK安装中的XCache_Flush函数:
%Xilinx_EDK%\的sw \ lib中\ BSP \ standalone_ <CURRENT_VERSION> \ SRC \ PPC405 \ xcache_l.h
%Xilinx_EDK%\的sw \ lib中\ BSP \ standalone_ <CURRENT_VERSION> \ SRC \ PPC405 \ xcache_l.c
该解决方案仅需要应用于其中PPC405的PVR(处理器版本寄存器)具有值0x20011430的硅。 PPC405具有0x20011470的PVR的硅不需要解决(即,CCR0可以保留在原始复位值)。所有生产硅都有PPC405,PVR为0x20011470。
根据此信息,可以修改引导代码以将CCR0复位值更改为0x50700000。
没有回复内容