hi3531的pcie控制器使能

1. 关闭PCIe 控制器:

通过向系统控制寄存器PERIPHCTRL30[pcie0_app_ltssm_enabl]写入0 关闭PCIe0 控制

器。

通过向系统控制寄存器PERIPHCTRL77[pcie1_app_ltssm_enabl]写入0 关闭PCIe1 控制

器。

2. 使能PCIe 控制器相关的时钟:

设置CRG 寄存器PERI_CRG30[pcie0_cken]使能PCIe0 控制器时钟。

设置CRG 寄存器PERI_CRG30[pcie1_cken]使能PCIe1 控制器时钟。

3. 设置PCIe 控制器的工作模式(RC 模式/EP 模式):

通过系统控制寄存器中的PERIPHCTRL23[pcie0_slv_device_type]寄存器设置PCIe0 控

制器的工作模式。通过系统控制寄存器中的PERIPHCTRL70[pcie1_slv_device_type]寄存器设置PCIe1 控

制器的工作模式。

4. 设置PCIe 控制器软复位以复位PCIe 控制器。

向CRG 寄存器PERI_CRG30[pcie0_srst_req]写1 以复位PCIe0 控制器。

向CRG 寄存器PERI_CRG30[pcie1_srst_req]写1 以复位PCIe1 控制器。

5. 撤销PCIe 控制器软复位。

向CRG 寄存器PERI_CRG30[pcie0_srst_req]写0 以撤销PCIe0 控制器复位。

向CRG 寄存器PERI_CRG30[pcie1_srst_req]写0 以撤销PCIe1 控制器复位。

6. 设置PCIe 控制器的类代码:

当工作在RC 模式时,需要配置对应的控制器的类代码寄存器(CLASS Code

Register)为0x060400(对应为PCI 到PCI 桥设备)。PCIe0 控制器和PCIe1 控制器的

类代码寄存器位于各自的PCIe 配置寄存器空间内。

EP 模式下无需设置(默认值)。

7. 使能PCIe 控制器:

通过向系统控制寄存器PERIPHCTRL30[pcie0_app_ltssm_enable]写入1 使能PCIe0 控制

器。PCIe0 控制器使能后,PCIe0 控制器开始链路建立过程。

通过向系统控制寄存器PERIPHCTRL77[pcie1_app_ltssm_enable]写入1 使能PCIe1 控制

器。PCIe1 控制器使能后,PCIe1 控制器开始链路建立过程。

----结束

若PCIe 控制器与对端设备之间的连接未建立,不可向对端设备发起任何PCIe 事务。

软件通过查询系统控制寄存器PERICTRL39[pcie0_rdlh_link_up]可以确定PCIe0 控制器

是否已与对端设备建立连接。

软件通过查询系统控制寄存器PERICTRL40[pcie1_rdlh_link_up]可以确定PCIe1 控制器

是否已与对端设备建立连接。

请参考系统控制器中关于PERICTRL39 和PERICTRL40 寄存器的定义

上一篇:一名前端Web架构师的成长之路(转载)


下一篇:PythonStudy——函数的参数 Function argument