powerpc2020 Localbus_norflash 驱动及dos文件系统挂载调试总结

       2020疫情肆虐全球,而笔者最近也被ppc2020虐了一段时间。当然两件事情一点关系也没有啊,只是笔者加戏而已。下面进入正题,Localbus_norflash驱动及dos文件系统挂载调试。题目有点长,将题目进行拆解涉及三个步骤,一配置Localbus总线使cpu可以通过localbus访问norflash设备,二调试norflash的驱动(擦写功能),三将norflash挂载上dos文件系统(通过文件系统操作norflash)。以下从这三个步骤,依次来分析每一步所涉及的工作。

一配置Localbus总线

        何为Localbus,cpu局部总线,具体规范和介绍大家可以查看p2020的参考手册。笔者的看法是Localbus无非也是一种板级总线,可以向理解i2c、spi、pci一样,使cpu可以如访问内存地址一般来访问外接设备。如何配置p2020上的Localbus总线呢,涉及到的寄存器LAWBAR0,设置access window即访问窗口的位置。LAWAR0,设置access window的尺寸。BR0,localbus的cs0(0号片选)的访问基址。OR0,localbus的cs0的空间大小。LCRR,localbus时钟与cpu时钟频率配比。由于此块板卡,localbus下只挂接了一块nor存储设备,所以只用进行cs0配置即可。

          以上关于localbus的配置就完成了,接下来要去验证localbus配置是否正确。直接对norflash进行读操作即可完成相应的验证。通过系统自带的内存读取指令即可访问相应的地址。按照之前,LAWBAR0,LAWAR0的配置空间及范围,访问该范围之内的地址系统直接抛出异常崩溃了。以下讲讲从EA(effective address)到总线地址的转换过程,可以参考博客,博客链接:https://blog.csdn.net/evenness/article/details/7410293

***************************************************************华丽分割线*******************************************************************

第一步:根据 EA有效地址产生 VA虚拟地址;

第二步:根据虚拟地址匹配TLB;

第三步,根据TLB生成 RA;

第四步,匹配LAW,生成总线地址

****************************************************************华丽分割线******************************************************************

系统崩溃无非于以上四步没有正确执行,先假设localbus这边配置成功。那么前三步就是跟mmu相关了,然后看源码发现mmu关于norflash操作的地址没有进行映射配置。用系统带有的内存配置接口完成配置即可。

再来显示相应地址范围中的内容、大片大片的0xff,那么mmu、localbus配置完成。关于驱动以及文件系统相关挂载看下篇博客。

你可能感兴趣的:(底层驱动)