I am now working on the heterogeneous processors on the i.mx7D. In my system, Linux runs on the dual A7 core and a bare-metal OS runs on the M4 core.
For the bare-metal OS, the task is very simple, use UART4 to send out 64 bytes of data with 4000000 baudrate every 500us.
So on M4, I tried to set the RDC peripheral access permission to let only m4 can access it.
// on M4
#define BOARD_DOMAIN_ID (1)
RDC_SetDomainID(RDC, rdcMdaM4, BOARD_DOMAIN_ID, false);
RDC_SetPdapAccess(RDC, rdcPdapUart4, (3 << (BOARD_DOMAIN_ID * 2)), false, false);
In the Linux, I also remove the UART4 driver from the dts.
So now, it seems only the M4 can access the UART4. And I did some experiment:
(1) A7 Linux working, and M4 sends data periodically
Some of the data sent by the m4 are losing.
It takes only few seconds to find data are losing.
(2) Shutdown Linux on A7, and then let M4 start sending data periodically
Let the M4 sends data for couple of hours, and not a byte is lost.
Could anyone give some advice on this issue, or did I miss some settings?