On "data transfer between external register to internal memory" implentation when porting WinCE 7 application project from T30 to iMX6 on "data transfer between external memory to internal memory"

Continuing the discussion from Latest WinCE SDK issues on VS2008:

When we were development WinCE application in 2017 for T30, Alexander Samutin of Toradex, knowing our need to implement the feature to read/write data from/to PLD on board as external memory, shared with us the GMI_Sample_Code_T20_T30_r2426.zip, attached, on 8/24/2017. Which was a boost for our development.
GMI_Sample_Code_T20_T30_r2426.zip
(7.0 KB)

I wonder if you have similar sample code for iMX6 development. I’d deeply appreciated if you can provide something similar. You can email it to mfang@skylinktechnology.com.

If not, I’d appreciate if you can provide the phsical memory “BASE address” for mapping to a virtual address.
In T30’s case, the base address is the GMI Configuration Register Base/SNOR Register Address 0x70009000, which is defined in line 18 of the GMI_Sample_T20_T30.c file in the zip file provided by Toradex, and is being used in line 155 of teh same C file:
g_gmiReg = (GMI_REGISTERS*) MapRegister(0x70009000);

Now in the SDK 2.1, MapRegister(), is replaced by
void *Map_MapMemory(DWORD pa, DWORD size); // in line 95 of MemMap.h
However, I don’t know what the Physical Address, the first parameter in this API call, should be for iMX6DL for our configuration purpose.
Thanks in advance for your help.

While Tegra has the Generic Memory Interface bus (GMI) IP Apalis iMX6 has the External Interface Module (EIM) which is completely different IP block so mentioned GMI sample code can’t be used just by replacing physical address for GMI configuration register. Unfortunately we have no sample code similar to GMI Sample code. However you can still use it as basis but configuration should be done differently. Please refer to the i.MX 6Dual/6Quad Applications Processor Reference Manual for details ( this manual also have some sample pseudocode for EIM initialization and accessing.

You can also check this thread .

By the way, we’re using Colibri iMX6, not Apaliis iMX6. Colibri iMX6 is running on i.MX6 DualLight processor. However the Refereence Manual link you provided helps us find the Reference Manual for iMXDL. Thanks a bunch! Will let you know whether we figure it out after we go over the manual.