探究:AR/QCA 芯片通过 APB 访问内置交换机寄存器
时间:2015-7-7 10:05 热度:4154° 评论:0 条

从 AR9341 开始,AR/QCA 芯片的 datasheet 上都会列出一个寄存器的某一位的作用:
其中提到:
设置 0x18070000 寄存器的第9位 (SW_APB_ACCESS) 为1,可以从 APB——也就是通过内存地址访问交换机的寄存器而不是通过MDIO来访问。
但是 datasheet 通篇没有提到设置后交换机的寄存器将被映射到的内存地址基址。
根据 AR/QCA 芯片的 APB 布局来看,旧的布局不会改变,要改变只会改变新的未使用的地址。
QCA9531 的 APB 布局:

通过观察可以发现 APB 新增的寄存器映射地址都是从 0x18100000 开始的,而且很密集,那么交换机的寄存器映射地址会不会在这之后呢?
使用 breed 进行实验:
首先设置 0x1b070000 寄存器:

因为 0x18100000 已经被占用了,所以测试 0x18200000,失败:

然后测试 0x18300000,成功:

为什么说成功?因为我比较了几个关键的寄存器:
1. Mask Control

Mask Control 记录有交换机的设备标识,由 datasheet 可以看到此寄存器默认值是 0x00000201,跟刚才读取的 0x18300000 的值相等
2. LED Control

LED Control 前三个寄存器的值分别是:
0xb0: 0xc935c935
0xb4: 0xca35ca35
0xb8: 0x0000cf35
跟 0xb83000b0 0xb83000b4 0xb83000b8 处读取的值相同
至此,我就成功探索出了 AR/QCA 芯片未公开的一点信息。
另外,通过 APB 访问内置交换机寄存器的效率高于通过 MDIO 访问,但是这对于 breed 来说没有太大的意义。


捐赠支持:如果觉得这篇文章对您有帮助,请“扫一扫”鼓励作者!
相关文章本文作者:沁雨寒 文章标题: 探究:AR/QCA 芯片通过 APB 访问内置交换机寄存器
本文地址:https://blog.sxx1314.com/router-test/310.html
版权声明:若无注明,本文皆为“unix 软硬件 技术宅 ”原创,转载请保留文章出处。百度已收录
本文地址:https://blog.sxx1314.com/router-test/310.html
版权声明:若无注明,本文皆为“unix 软硬件 技术宅 ”原创,转载请保留文章出处。百度已收录















