This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[TDA4][IPC]How to set the other part of DDR as cached on C66, meanwhile ipc/VRing buffer uncached?

If I set MAR as below,I can use IPC to communicate with Linux A72.

But if I set MAR as following, Linux will not find char device "rpmsg_chrdev", so that I can not communicate with Linux A72

  • See vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/c66x_1/main.c, appCacheMarInit

        /* enable cache for cached sections */
        Cache_setMar((Ptr)DDR_C66x_1_DTS_ADDR, DDR_C66x_1_DTS_SIZE, Cache_Mar_ENABLE);
        Cache_setMar((Ptr)DDR_SHARED_MEM_ADDR, DDR_SHARED_MEM_SIZE, Cache_Mar_ENABLE);

        /* disable cache for non-cached sections */
        Cache_setMar((Ptr)DDR_C66x_1_IPC_ADDR, DDR_C66x_1_IPC_SIZE, Cache_Mar_DISABLE);
        Cache_setMar((Ptr)APP_LOG_MEM_ADDR, APP_LOG_MEM_SIZE, Cache_Mar_DISABLE);
        Cache_setMar((Ptr)TIOVX_OBJ_DESC_MEM_ADDR, TIOVX_OBJ_DESC_MEM_SIZE, Cache_Mar_DISABLE);
        Cache_setMar((Ptr)IPC_VRING_MEM_ADDR, IPC_VRING_MEM_SIZE, Cache_Mar_DISABLE);

    Mar_ENABLE enables cache for these regions.

    Mar_DISABLE disables cache for these regions.

    Note, the below contraints though,

    - region start address MUST be 16MB aligned

    - region size MUST be 16MB aligned.

    i.e you can enable or disable cache in units of 16MB

    regards

    Kedar