探究:AR/QCA 芯片通过 APB 访问内置交换机寄存器

从 AR9341 开始,AR/QCA 芯片的 datasheet 上都会列出一个寄存器的某一位的作用:

eth_cfg

其中提到:

设置 0x18070000 寄存器的第9位 (SW_APB_ACCESS) 为1,可以从 APB——也就是通过内存地址访问交换机的寄存器而不是通过MDIO来访问。

但是 datasheet 通篇没有提到设置后交换机的寄存器将被映射到的内存地址基址。

根据 AR/QCA 芯片的 APB 布局来看,旧的布局不会改变,要改变只会改变新的未使用的地址。

QCA9531 的 APB 布局:

apb

通过观察可以发现 APB 新增的寄存器映射地址都是从 0x18100000 开始的,而且很密集,那么交换机的寄存器映射地址会不会在这之后呢?

使用 breed 进行实验:

首先设置 0x1b070000 寄存器:

t1

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

t2

然后测试 0x18300000,成功:

t3

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

1. Mask Control

mask_control

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

2. LED Control

led_control

LED Control 前三个寄存器的值分别是:

0xb0: 0xc935c935

0xb4: 0xca35ca35

0xb8: 0x0000cf35

跟 0xb83000b0 0xb83000b4 0xb83000b8 处读取的值相同

 

至此,我就成功探索出了 AR/QCA 芯片未公开的一点信息。

 

另外,通过 APB 访问内置交换机寄存器的效率高于通过 MDIO 访问,但是这对于 breed 来说没有太大的意义。

探究:AR/QCA 芯片通过 APB 访问内置交换机寄存器》有1个想法

  1. hello sir

    I am very happy that I send you this message

    I have a simple query : is
    in the root whit putty Type : iwlist txpower

    The result:

    lo no transmit-power information.
    br0 no transmit-power information.
    ath0.sta1 unknown transmit-power information.
    Current Tx-Power=19 dBm (79 mW)
    eth1 no transmit-power information.
    eth0 no transmit-power information.
    ath0 unknown transmit-power information.
    Current Tx-Power=19 dBm (79 mW)

    i work whit Hex Workshop

    if i need up Tx-Power to 22 19 dBm
    In any line change my value in art.bin

发表评论

电子邮件地址不会被公开。 必填项已用*标注