A9 not loading kernel if started after M4 when Uboot is in QSPI

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

A9 not loading kernel if started after M4 when Uboot is in QSPI

1,171 Views
ozu
Contributor III

Board: imx6 solox sdb

 

1) In QSPI2 I have, U-boot at an offset 0x1000, Header at an offset 0x400 and mqx hello world example application (image.bin) at an offset 0x1000000

2) My switch settings are to boot the board from QSPI2.

 

Questions:

1) Without inserting an sd card i can boot from QSPI2 and with the command: sf probe 1:0 bootaux 0x79000000 on the uboot prompt, I can see M4 running on the other uart console. This is the expected behavior.

Question is: when i try, sf probe 1:0 bootaux 0x78000000, it still gives the same result. My M4 image is not at the flash head. In fact there is nothing at that address for the first 512 bytes but still I can run the image from the flash head, which is located somewhere else in the flash. How is that possible? Is that address hard coded somewhere? If yes, where?

 

2) I inserted SD card, to start A9 and M4 both. My Uboot and M4 image are in QSPI2 and Linux kernel is on SD card. I stop U-boot and run m4 first with the above command. I can see the output on the other M4 console and then I give command: run bootcmd to start A9 with linux image from SD. It doesnt work. Console messages are attached. I am posting some noteworthy messages here,

 

fsl-quadspi 21e4000.qspi: n25q256a (32768 Kbytes)

fsl-quadspi 21e4000.qspi: unrecognized JEDEC id ffffff

fsl-quadspi 21e4000.qspi: Freescale QuadSPI probe failed

 

Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b

 

Note: Starting loading A9 kernel after M4 works well, if Uboot is in SD card.

Original Attachment has been moved to: A9-not-booting-after-M4_Uboot-in-QSPI.txt.zip

Labels (3)
0 Kudos
3 Replies

609 Views
igorpadykov
NXP Employee
NXP Employee

Hi ozu

1. size of this flash is 32MB so seems behaviour with

0x78000000 or 0x79000000 is the same

2. when running Uboot from QSPI, code runs from M4 core and

executing bootcmd it tries to run Linux from M4, this is normal Uboot flow.

Linux is not supported to run from M4 core in BSP, supported only MQX.

Probably one can modify Uboot code, so M4 could run A9 with Linux.

Please refer to attached Linux Guide for available options.

Best regards

igor

-----------------------------------------------------------------------------------------------------------------------

Note: If this post answers your question, please click the Correct Answer button. Thank you!

-----------------------------------------------------------------------------------------------------------------------

0 Kudos

609 Views
ozu
Contributor III

Hi Igor,

Thanks for the reply but it is still not clear to me.

1) I know that the flash is of 32 MB and the solox reference manual (page 183) states that the memory map range for QSPI2 is from 0x70000000 to 0x7FFFFFFF (256MB). In Linux user's guide (page 22), the starting address for QuadSPI2 Port B CS0 is given as 0x78000000. Thus I assume the 32MB memory is mapped from 0x78000000 to 0x7A00000. Did you mean that we can run the M4 image, by giving any address from this range, to bootaux command? But that does not work. I tried giving different address from this range to bootaux command, but M4 image is run only when I either give 0x78000000 (starting address of flash) or 0x79000000 (where I have copied image). Giving the actual image address is understandable, uboot directly jumps to the image and runs it. But when we give starting address of the flash, how is the image found, which is kept at a user defined location and we are not mentioning the offset anywhere.

2) If the code was running on M4, I should have been able to see Uboot running on the OTHER console (M4). But I see Uboot on A9 console. when I give bootaux, only then I see output on other console, which is correct. But again giving bootcmd on A9 console should run A9 with Linux, since Uboot basically is running on A9.

Please correct me!

0 Kudos

609 Views
igorpadykov
NXP Employee
NXP Employee

Hi ozu

1. I am afraid that default address mode is three bytes, this leads to 16MB

(though 4-byte address mode, to access memory beyond 128Mb, can be enabled

with ENTER 4-BYTE ADDRESS MODE command or through the nonvolatile configuration register)

I think you can look at bootaux sources and debug behaviour, if that possible

I.MX6SX start M4 from U-Boot with QSPI flash

2.  short answer is that Linux Guide gives working options.

All other - experimenting with addresses like bootaux 0x79000000

may lead to unpredictable results. Seems giving bootcmd on A9

after loading M4 is not supported. In any case, I think you can debug it,

starting with printing Uboot environment, printenv)

~igor

0 Kudos