这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 行业应用 » 汽车电子 » 【S32K3XX】XRDC 功能使用

共1条 1/1 1 跳转至

【S32K3XX】XRDC 功能使用

高工
2026-03-09 18:27:35     打赏

【简介】

            XRDC(Extended Resource Domain Controller)的功能优点和MPU类似,都是一个权限保护配置的模块,和MPU不同的是它是针对内存&外设是否可以被Domain 进行访问,以下红框的部分为 XRDC 的构成部分。

以下是对XRDC 的功能概述:

image.png

image.png

从以上的框图可以看出XRDC 主要包含了MDAC/MCR/PAC 模块,以下的图片可以看出MDAC/MCR/PAC 模块的作用,简单的理解MDAC用用配置总线master 的 domain id (DID),MRC 用于配置domain 对 memory 的访问权限,PTAC 用于配置domain 对 外设 的访问权限

image.png

上述的描述可以通过以下框图能更直接的查看出XRDC的功能组成

image.png

下表对应的K3X系列芯片的AXBS 的master id 的定义。

image.png

以下是memory 的slave 端口的定义

image.png

以下是PAC的端口定义

image.png

以下的裸机配置代码也是操作的上述的 MDAC/MCR/PAC 的配置完成XRDC的配置。

void XRDC_Init(void)
{
    uint32_t i, j;
    /* maximum 3 domains – assign domain ID for all masters */
    IP_XRDC->MDA_W0_0_DFMT0 = 0x80000000; //master0 = core0, domain id = 0;
    IP_XRDC->MDA_W0_1_DFMT1 = 0xA0000000; //master1 = DMA, domain id = 0;
    IP_XRDC->MDA_W0_2_DFMT1 = 0xA0000000; //master2 = test port, domain id = 0;
    IP_XRDC->MDA_W0_3_DFMT0 = 0xC0000002; //master3 = HSE core, domain id = 2;
    IP_XRDC->MDA_W0_4_DFMT0 = 0x80000001; //master4 = core1, domain id = 1;
    IP_XRDC->MDA_W0_5_DFMT1 = 0xA0000000; //master5 = EMAC, domain id = 0;

    for(i=0; i<3; i++) /* Domain 0 ~ Domain 2 PDAC settings */
    {
        for(j=0; j< XRDC_PDAC_SLOT_PDACN_COUNT; j++) /* Configure each peripheral’s access policy for a domain */
        {
            IP_XRDC->PDAC_SLOT[i].PDACN[j].PDAC_W0 = 0x00001FFF; //domain 0/1/2 allow full access to this PDAC slot, semaphore disable
            IP_XRDC->PDAC_SLOT[i].PDACN[j].PDAC_W1 = 0x80000000; //set valid bit
        }
    }

    for(i=0; i<3; i++) /* Domain 0 ~ Domain 2 memory region access settings */
    {
        for(j=0; j<1; j++) //initialize only the 1st memory region descriptor
        {
            IP_XRDC->MRGDN[i][j].XRDC_MRGD_W0 = 0x00000000; //start address
            IP_XRDC->MRGDN[i][j].XRDC_MRGD_W1 = 0xFFFFFFFF; //end address
            IP_XRDC->MRGDN[i][j].XRDC_MRGD_W2 = 0x00001FFF; //allow full access for domain 0/1/2
            IP_XRDC->MRGDN[i][j].XRDC_MRGD_W3 = 0x80000000; //set valid bit
        }
    }

    IP_XRDC->CR = 0x0000008B; //set IP_XRDC global valid bit
}




   


           


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]