
Thanks for replying Simon. Comments inline
On 9/18/13, Simon Glass sjg@chromium.org wrote:
Hi MJ,
On Wed, Sep 18, 2013 at 12:41 AM, MJ embd mj.embd@gmail.com wrote:
Hi Simon/All,
Any comments
On 9/17/13, Simon Glass sjg@chromium.org wrote:
Hi,
You could try to cc whoever wrote the code. You can use git blame to find out.
But it sounds like you are on the right track. I may be able to help, will email tomorrow if so.
Regards, Simon On Sep 16, 2013 8:26 PM, "MJ embd" mj.embd@gmail.com wrote:
Reminder, Please can anyone respond
On 9/16/13, MJ embd mj.embd@gmail.com wrote:
Hi,
I was trying to understand the booting (till linux) on samsung exynos 5250. As this is my first on ARM Cortex. I have a few questions, so following is a step by step understanding and [Q] mentions the question I am asking
[1] At POR (Power on Reset) the Internal Boot rom code executes, and checks the boot location and if it finds sd card, it copies 14k from the sd card (which is u-boot-spl.bin) into iRAM. [2] the internal boot rom branches pc to the entry point of spl at __start (0x2023400) [3] First instruction at __start is b reset. [4] this takes the route reset | cpu_init_crit | low_level_init |
first_cpu
[Q 1] At this point what is the state of secondary core, is it held in
reset
? As per document, ""
I think the secondary core is powered down or in reset.
"the secondary CPUs (CPU1, CPU2, and CPU3) execute a WFI instruction, which is actually a loop that checks the value of SYS_FLAGS register."
Which document are you referring to here?
[MJ] http://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&...
I couldnt find the SYS_FLAGS register in Cortex A15 manual, can some one point.
This is probably a flag in the IRAM, rather than an A15 register.
[Q 2] The secondary core until the point the boot core calls smp_kick_secondary is just waiting in WFI.
I don't see smp_kick_secondary() in U-Boot. Where is that?
[MJ] I am referring to the patch https://git.linaro.org/gitweb?p=people/ronynandy/u-boot-arndale.git;a=commit...
[5] the smp_kick_secondary does the following (a) at the address SYSFLAGS_ADDR (0x2020000) which is not in spl but above it, it write the b reset instruction and (b) Issues a SGI to the secondary core
[Q 3] Does this mean that secondary core is listening at address 0x2020000, I couldnt find that in any document?
That's your answer on SYS_FLAGS I guess.
That is the start of IRAM so it is quite likely that the secondary core is sitting in a loop waiting for the value to change.
[6] Supposedly it does and it starts executing the reset function, secondary core would end up in enter_smp_pen. [Q 4] I dont understand what is trying to achieve here, Can some one explain.
I am planning to pen down the complete boot sequence, all help
appreciated.
I'm missing the code you are referring to perhaps, but I think the idea is something like this:
- Boot primary core
- Primary code sets up a 'pen' for the secondary cores in IRAM,
starts them up to run in that pen 3. Secondary cores watch a value in IRAM which tells them when to leave their pen and where to jump to
[MJ] what is actually a SMP "pen"
[Q5] There is one more doubt on the .word irq handler in uboot spl. As per the code here
"https://git.linaro.org/gitweb?p=people/ronynandy/u-boot-arndale.git;a=blob;f..."
If my secondary core gets an interrupt in WFE state or before that It would IMO would get multiple prefetch aborts. This thing is adding to my confusion (in the absence of any document, which i am not able to find as of now)
Regards, Simon