I want to use EM1CS2 at CPU2.
So, I configurate GPIO and EMIF1 at CPU1 as follow.
<CPU1>
/*--------------------------------------------------------------------------------------------------------*/
// EM1CS2
// GPIO Mux setup
EALLOW;
// EM1 Addr. & Contorl
// EM1WE(GPIO31)
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 2; // EM1WE
// EM1CS2(GPIO34)
// EM1WAIT(GPIO36)
// EM1OE(GPIO37)
// EM1A0 ~ EM1A3(GPIO38 ~ GPIO41)
// EM1A4 ~ EM1A12(GPIO44 ~ GPIO52)
GpioCtrlRegs.GPBMUX1.all = 0xAA0AAA20; // GPIO32 ~ GPIO47
GpioCtrlRegs.GPBMUX2.all = 0x0000002A; // GPIO48 ~ GPIO63 // EM2와 겹침
// EM1 Data
// EM1D15 ~ EM1D1(GPIO69 ~ GPIO83)
// EM1D0(GPIO85)
// EM1A13 ~ EM1A19(GPIO86 ~ GPIO92)
GpioCtrlRegs.GPCMUX1.all = 0xAAAAA800; // GPIO64 ~ GPIO79
GpioCtrlRegs.GPCMUX2.all = 0xAAAAAAAA; // GPIO64 ~ GPIO79
EDIS;
EALLOW;
// Master Select for EMIF1:
// 00: CPU1 is master but not grabbed. CPU2 can grabbed the master
// ownership by changing this value to "10".
// 01: CPU1 is master.
// 10: CPU2 is master.
// 11: CPU1 is master but not grabbed. CPU2 can grabbed the master
// ownership by changing this value to "10".
Emif1ConfigRegs.EMIF1MSEL.bit.KEY = 0x93A5CE7;
Emif1ConfigRegs.EMIF1MSEL.bit.MSEL_EMIF1 = 2;
Emif1Regs.ASYNC_CS2_CR.bit.SS = 0; // 0 : normal, 1 : strobe
Emif1Regs.ASYNC_CS2_CR.bit.EW = 0; // extend wait mode disable
Emif1Regs.ASYNC_CS2_CR.bit.W_SETUP = 2; // write setup cycles
Emif1Regs.ASYNC_CS2_CR.bit.W_STROBE = 3; // write strobe cycles
Emif1Regs.ASYNC_CS2_CR.bit.W_HOLD = 2; // write hold cycles
Emif1Regs.ASYNC_CS2_CR.bit.R_SETUP = 2; // read setup cycles
Emif1Regs.ASYNC_CS2_CR.bit.R_STROBE = 3; // read strobe cycles
Emif1Regs.ASYNC_CS2_CR.bit.R_HOLD = 2; // read hold cycles
Emif1Regs.ASYNC_CS2_CR.bit.ASIZE = 1; // 16bit data bus
// asynchronous memory size
EDIS;
/*--------------------------------------------------------------------------------------------------------*/
and
CPU2 was coded as follows.
<CPU2>
/*--------------------------------------------------------------------------------------------------------*/
unsigned short *Test_EM1 = (unsigned short *)(0x00100000); //EM1CS2
.....
for(;;)
*Test_EM1 = 0x1234;
/*--------------------------------------------------------------------------------------------------------*/
But, EMIF1 CS2 did not work.
What I did wrong?