简介
- 复杂的IC(SOC)内部有多个拥有独立功能的硬件模块,例如:cpu cores,tpu cores以及wdt,usb,mmc等各种外设。
- 出于IC稳定性(异常后可恢复)等方面的考虑,SOC中会设计专门的reset电路,负责各个硬件模块的复位,在内部为硬件模块设计复位信号(reset signals),软件可通过寄存器控制硬件模块的复位。
SOC 示例
- SOC(xx181x)的reset系统,比较复杂,设计了三个层级,主要功能:
- 外设模块的复位。
- CPU、TPU核的复位。
- 系统整体的复位。
使用
- Reset系统实现比较复杂,但是暴露给用户使用的方式比较简单,一般是提供多个寄存器,每个寄存器以1 bit控制一个ip的复位,因此对于某个ip的复位只有两个操作:
- 复位,往控制该ip的特定bit写0
- 解复位,往控制该ip的特定bit写1
- 先复位,延时一会,解复位,ip就能够复位成功。
- SOC(xx181x)也提供了另外一套寄存器,同样以1 bit控制一个ip的复位,不同的是:复位时只需要往该bit写0,不需要再解复位(往该bit写1),ip就能复位成功。
适配
- dts配置
- 需要在dts中配置reset-controller
/ {
...
rst: reset-controller {
compatible = "xxxxxx,reset";
reg = <0x0 0x03003000 0x0 0x10>;
};
...