Hi Chris,
Wow - thank you for passing along that document, it was very helpful!
I can now boot the RZ/A1L on our board in U-boot and launch my XIP Linux image when it is configured for internal RAM ( Physical address of main memory = 0x20000000 ) .
I'm using these u-boot parameters for that:
/* Boot XIP using internal RAM */
setenv("xa1", "sf probe 0; sf read 20150000 C0000 8000");
setenv("xa2", "fdt addr 20150000 ; fdt memory 0x20000000 0x00300000"); /* 3MB RAM */
setenv("xa3", "qspi single");
setenv("xaargs", "console=ttySC2,115200 console=tty0 loglevel=7 root=/dev/null rootflags=physaddr=0x18E00000 earlyprintk"); // bootargs
setenv("xa_boot", "run xa1 xa2 xa3; set bootargs ${xaargs}; fdt chosen; bootx 18200000 20150000"); // run the commands
I cannot, however use our External SDRAM with Linux ( 32MB 48LC16M16A2 ). We made our board identical to the RSK for the SDRAM interface ( CS2 ), however Linux hangs when I try to boot using the external RAM. I've made sure that Linux was built with the Physical Address of main memory to be 0x08000000 for external RAM.
I've also made sure that U-boot can can read from flash into external RAM and then dump the RAM contents. The dumped external RAM contents match the flash I read in.
My U-boot pin-muxing for the SDRAM is as shown below:
/* SDRAM */
pfc_set_pin_function(7, 8, ALT1, 0, 0); /* P7_8 = CS2 */
for(i=0;i<=15;i++)
pfc_set_pin_function(5, i, ALT1, 0, 1); /* P6_0~15 = D0-D15 (bi dir) */
pfc_set_pin_function(2, 1, ALT1, 0, 0); /* P2_1 = RAS */
pfc_set_pin_function(2, 2, ALT1, 0, 0); /* P2_2 = CAS */
pfc_set_pin_function(2, 3, ALT1, 0, 0); /* P2_3 = CKE */
pfc_set_pin_function(2, 6, ALT1, 0, 0); /* P2_6 = RD/WR */
pfc_set_pin_function(2, 4, ALT1, 0, 0); /* P2_4 = WE0/DQMLL */
pfc_set_pin_function(2, 5, ALT1, 0, 0); /* P2_5 = WE1/DQMLU */
for(i=0;i<=14;i++)
pfc_set_pin_function(3, i, ALT1, 0, 0); /* P3_0~12: A1-A15 */
The U-boot parameters for booting XIP Linux with external RAM is shown below:
setenv("xsa1","sf probe 0; sf read 09800000 C0000 8000");
setenv("xsa2","fdt addr 09800000 ; fdt memory 0x08000000 0x02000000");
setenv("xsa4","qspi single");
setenv("my_bootargs","console=ttySC2,115200 console=tty0 loglevel=7 root=/dev/null rootflags=physaddr=0x18E00000 earlyprintk");
setenv("my_failsafe","run xsa1 xsa2 xsa4; set bootargs ${my_bootargs}; fdt chosen; bootx 18200000 09800000");
This problem feels like a pinmuxing thing but I'm not sure where to look in the Kernel. The same configuration ( u-boot / Linux ) worked with the RSK and external RAM.
I did not see any notes beyond the CS3 note in the Application Note.
Do you have any thoughts / ideas on this? Thanks alot.
Phil