linux问题定位之寄存器篇
uboot md指令读地址寄存器数据,以及kernel阶段读寄存器举例,和使用devm读写寄存器,这里面的寄存器是哪里来的,举一个例子分析读rk3568的iic。
寄存器从哪里来?—— 答案是:芯片的数据手册
1. 找到寄存器地址(源头)
查阅 RK3568 的 TRM 手册,我们可以找到 I2C1 控制器的寄存器基地址和部分关键寄存器描述:
- I2C1 寄存器基地址:
0xFDD40000
- 寄存器映射表 (部分):
- 偏移
0x000
:CON
(I2C Control Register) - 控制寄存器,用来使能I2C、设置时钟等。 - 偏移
0x004
:TXCMD0
(I2C Transmit Command 0) - 发送命令寄存器,用来启动一次传输。 - 偏移
0x00C
:MRXADDR
(I2C Master Received Address) - 主机接收地址寄存器。 - **偏移
0x010``:
RXDATA` (I2C Received Data) - 接收数据寄存器,读取从机发来
- 偏移