本文主要是介绍i.MX8MP平台开发分享(RDC软件配置篇),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Uboot中已经将RDC的配置写入到了OCRAM中,NXP在ATF中预设了SIP服务,SIP服务下有厂商自定义的smc命令ID。例如下面的DDR、GPC、SRC和HAB的smc回调函数。
在SRC中断处理函数中,对于SRC_M4_START指令,先读取OCRAM中的配置,然后初始化RDC。
RDC初始化
初始化过程很简单,设置master分配、外设访问权限和内存区域访问权限。
void imx_rdc_init(const struct imx_rdc_cfg *rdc_cfg)
{const struct imx_rdc_cfg *rdc = rdc_cfg;while (rdc->type != RDC_INVALID) {switch (rdc->type) {case RDC_MDA:/* MDA config */mmio_write_32(MDAn(rdc->index), rdc->setting.rdc_mda);break;case RDC_PDAP:/* peripheral access permission config */mmio_write_32(PDAPn(rdc->index), rdc->setting.rdc_pdap);break;case RDC_MEM_REGION:/* memory region access permission config */mmio_write_32(MRSAn(rdc->index), rdc->setting.rdc_mem_region[0]);mmio_write_32(MREAn(rdc->index), rdc->setting.rdc_mem_region[1]);mmio_write_32(MRCn(rdc->index), rdc->setting.rdc_mem_region[2]);break;default:break;}rdc++;}
}
这篇关于i.MX8MP平台开发分享(RDC软件配置篇)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!