Hi Martin,
Thanks for the reply.
After reading the manual multiple times, I came up with a simple test case, just to make sure it works the way I think it does: I assigned all of the bus masters to the same domain, then gave everyone full access rights on the whole memory and all the peripherals. This is what I did (in the exact order):
1. assigned domain id 1 to all bus masters and set the validity bits
- wrote 0x80000001 to all XRDC_MDA_W0_n registers
2. gave every domain full access rights to all the peripherals and set the validity bits
- wrote 0x00FFFFFF to all XRDC_PDAC_W0_n registers
- wrote 0x80000000 to all XRDC_PDAC_W1_n registers
3. configured a memory region containing the whole range of memory addresses, set full access rights for all domains and set the validity bit
- wrote 0x00000000 to XRDC_MRGD_W0_0 (start address)
- wrote 0xFFFFFFFF to XRDC_MRGD_W1_0 (end address)
- wrote 0x00FFFFFF to XRDC_MRGD_W2_0 (access policy)
- wrote 0x80000000 to XRDC_MRGD_W3_0 (validity bit)
4. set the global enable bit in the control register
- wrote 0x00000001 to XRDC_CR
It all seemed to go well until the global enable, at which point I got denied any access to the memory or memory-mapped I/O. I used a Lauterbach T32 debugger to run my application step-by-step and test memory availability. I must have missed some step, or wrote the registers in the wrong order. I'd be grateful if you could point out the mistake.
Thanks for your time.
Best regards,
Bogdan