AnsweredAssumed Answered

i.MX6SX boot Cortex M4 core from U-Boot

Question asked by LPs on Mar 2, 2015
Latest reply on Mar 4, 2015 by CarlosCasillas

Hi all,

   I'm working on a 6SX SABRE-SBD board. It mounts a i.MX6SX dual core CPU: Cortex A9 and Cortex M4.

I'm using U-Boot 2014.04.

 

I'm trying to boot M4 core from U-Boot and start linux on SD.

 

At the moment, following i.MX_Linux_User's_Guide.pdf  and chapter 53 of i.MX_6_Linux_Reference_Manual.pdf, I wrote the M4 mcc demo on the Cortex M4.

I know that it works beacause of running script m4boot I can see outputs on the Cortex M4 serial console.

 

So far I change the bootcmd U-Boot environment variable to add "run m4boot;" before the existant commands.

 

Actual bootcmd is: run m4boot; mmc dev ${mmcdev};if mmc rescan; then if run loadbootscript; then run bootscript; else if run loadimage; then run mmcboot; else run netboot; fi; fi; else run netboot; fi;

 

What is not working is that with the new bootcmd the M4 core starts correctly, the linux kernel start but it stops with the following error:

 

VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4

Unable to handle kernel NULL pointer dereference at virtual address 00000018

pgd = 80004000

[00000018] *pgd=00000000

Internal error: Oops: 805 [#1] PREEMPT SMP ARM

Modules linked in:

CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.53-1.1.0_ga+g496fbe0 #1

task: a806c000 ti: a806e000 task.ti: a806e000

PC is at imx_amp_power_init+0x8c/0xd8

LR is at __arm_ioremap+0x18/0x1c

pc : [<80c8a4e4>]    lr : [<80019128>]    psr: a0000113

sp : a806fef8  ip : 00000000  fp : 00000000

r10: 80caff6c  r9 : 80c8a458  r8 : 00000014

r7 : 00000001  r6 : 80d18838  r5 : 80d18838  r4 : 00000001

r3 : 00000000  r2 : 80d18838  r1 : 00000000  r0 : a800f180

Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel

Control: 10c53c7d  Table: 8000404a  DAC: 00000015

Process swapper/0 (pid: 1, stack limit = 0xa806e238)

Stack: (0xa806fef8 to 0xa8070000)

fee0:                                                       80cbb1b8 00000007

ff00: 80d178c0 80d178c0 80d178c0 80008704 00000103 80047e94 80caff44 a806e010

ff20: 80b779d4 80c3c5e8 00000007 00000007 80047700 80047758 00000000 80cbb1b8

ff40: 00000007 80d178c0 80d178c0 80c724dc 00000103 80caff6c 80caff64 80c72be0

ff60: 00000007 00000007 80c724dc ce8fffe9 ebdeff7e fd4df71c a806ff9c 00000000

ff80: 80679540 00000000 00000000 00000000 00000000 00000000 00000000 80679548

ffa0: a806e000 00000000 80679540 8000e118 00000000 00000000 00000000 00000000

ffc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

ffe0: 00000000 00000000 00000000 00000000 00000013 00000000 bfdeef2d e9037f49

[<80c8a4e4>] (imx_amp_power_init+0x8c/0xd8) from [<80008704>] (do_one_initcall+0x108/0x158)

[<80008704>] (do_one_initcall+0x108/0x158) from [<80c72be0>] (kernel_init_freeable+0x138/0x1d8)

[<80c72be0>] (kernel_init_freeable+0x138/0x1d8) from [<80679548>] (kernel_init+0x8/0x158)

[<80679548>] (kernel_init+0x8/0x158) from [<8000e118>] (ret_from_fork+0x14/0x3c)

Code: e0233498 e2844001 e0862102 e5920004 (e5c37018)

---[ end trace d49a49147a58376d ]---

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

 

If I restore the original bootcmd It returns to work well.

What I have to change in uboot environment to make the M4 and A9 running at the same time?

Outcomes