I try to make a test programm (without Linux...) for IPU/CSI to get a picture from a camera (IPU2/CSI1 parallel interface) to memory via IDMA. At this, the question rise what the address for the CPMEM to configure the IDMA is? In reference manuale I found, that CPMEM is "Memory mapped" but I found no value for the address where CPMEM is situated and I also did not found a register to put in the address for CPMEM.
In "iMX6_Platform_SDK\sdk\include\mx6dq\ipu_reg_def.h" I found :
#define IPU_REGISTERS_OFFSET 0x00200000
#define IPU_MEMORY_OFFSET IPU_REGISTERS_OFFSET + 0x00100000
#define CPMEM_WORD0_DATA0_INT__ADDR IPU_MEMORY_OFFSET+0x0000000
From this, the address for the start of CPMEM in case of IPU2 is 0x02D00000.
When I try to read from this address or to write to this address I got an bus error exception (0x10). This happens both in UBOOT (md.l 0x02D0000 1)
and in my application which I load with JTAG (Lauterbach/TRACE32). So I have to assume that there is no memory or registers at this address?
Where are the values used in SDK for IPU_REGISTERS_OFFSET and IPU_MEMORY_OFFSET documented in datasheet or reference manual ?
How do I tell the IDMAC where the CPMEM with his configuration is ?
Thanks in advance for answers.
Hi Yuri Muhin,
the base address of the IPU is defined in Table 2-1, but not the offset for CPMEM. And when I take the values from
the SDK, I get 0x02600000 + 0x00200000 + 0x00100000 = 0x02900000. And still there is the question where these
offsets from SDK (0x00200000 and 0x00100000) comming from. Where are these values documented.
I verified the CPMEM address for IPU2 as 0x02B0_0000. It works fine. But still there is the question where I can find this in the documents and still there are the strange defines also in the latest SDK's file ipu_reg_def.h. See my initial posting.