Re: booting linux on arm problem



On Oct 12, 9:23 pm, karthikbalaguru <karthikbalagur...@xxxxxxxxx>
wrote:
On Oct 9, 1:57 pm, Wei Wang <camww...@xxxxxxxxx> wrote:



On Oct 9, 1:51 am, Janaka <jana...@xxxxxxxxxxxx> wrote:

On Oct 9, 6:03 am, Wei Wang <camww...@xxxxxxxxx> wrote:

On Oct 8, 8:37 pm, Juergen Beisert <jbeis...@xxxxxxxxxxxx> wrote:

Wei Wang wrote:
My boot code is located at addr 0x0 and kernel at 0x8000. The boot
code initialize uart and print out OK on a terminal correctly, but
when it jumps to 0x8000 to start the kernel, the PC was set to
0xEA00009A, which is nowhere in my memory map and caused read abort.
The boot code and kernel is supposed to run in the first 64MB DRAM
space. I checked the kernel code and found that the kernel died at the
vprintk subroutine, but I couldn't pin down the actual problem, I
suppose the kernel code should be all right, the only problems should
remain with my boot code. The only printout in terminal after OK was
<<5> which seemed right compared with successful boots. Just wondering
what could be causing this probelm I am seeing, many thanks!

-Wei

What is your memory map? Means to what address ranges are your flash and RAM
mapped?

Juergen

Flash mapped from address 0x0 when booting to 0x4000_0000 after
booting (16MB).
SRAM at 0x4800_0000(32MB).
SDRAM mapped from 0x7000_0000 when booting to 0x0000_0000 after
booting (64MB), and both the boot code and kernel reside here at
address 0x0000_0000.

What does your boot code do in summary ? Is it passing any arguments
to the kernel ?

The boot code does pretty much the same thing as described here
(http://www.arm.linux.org.uk/developer/booting.php). It's legacy code
from somebody else, what I don't quite understand is the tagged list
in the boot code. which looks like this

ALIGN 256 ; gets us to 0x100 - where
Linux expects
tags ; to find its boot tags
; 0x100
DCD 0x00000005 ; Size = 5 words, what does
this mean?
DCD 0x54410001 ; ATAG_CORE, how to determine
the value here? I'm not quite sure.
DCD 0x00000000 ; Flags
DCD 0x00000000 ; PageSize
DCD 0x00000000 ; RootDev

DCB 0x00

ALIGN 256
ASSERT . - tags == 256
; 0x200
DCD 0x00000000 ; Size = 0 words
DCD 0x00000000 ; ATAG_NONE - end of list
; 0x208
ALIGN 4
; 0x208

Just wondering whether there are any resources that I can refer to, in
order to understand the boot code better.

Is the number of arguments you specify match with> whats on the stack ?

I'm not entirely sure, how can I find this out?

Is your flash on chip or on the local/IO bus ?
I suppose the latter - on the local IO bus, it's connected through
static memory controller.

And, what I am still wondering what could have caused the PC change to
0XEA00_009A? there isn't such an address in the entire kernel code.- Hide quoted text -

- Show quoted text -

Do not mistake me.
If you clearly understand the problem.
Then, that itself will give you a 98% percent answer to your problem.

Karthik Balaguru

Indeed, although I do not want to believe there can even be problems
with the processor, but thought it looked very like a processor
problem, as a function call saved a certain reg values but popped out
different values afterwards, albeit the reg values on stack remained
unchanged.

.



Relevant Pages

  • booting linux on arm problem
    ... My boot code is located at addr 0x0 and kernel at 0x8000. ... The boot code and kernel is supposed to run in the first 64MB DRAM ...
    (comp.os.linux.embedded)
  • Re: Genapic cleanup & NUMAQ/es7000 removal
    ... The runtime callbacks arent really a maintenance ... most of them are in boot code so it's not a runtime overhead issue. ... The testing exposure of the upstream kernel is ... i stated our maintenance position about x86 compatibility clearly ...
    (Linux-Kernel)
  • Re: booting linux on arm problem
    ... when it jumps to 0x8000 to start the kernel, ... The boot code and kernel is supposed to run in the first 64MB DRAM ... Flash mapped from address 0x0 when booting to 0x4000_0000 after ...
    (comp.os.linux.embedded)
  • Re: booting linux on arm problem
    ... which is nowhere in my memory map and caused read abort. ... The boot code and kernel is supposed to run in the first 64MB DRAM ... Flash mapped from address 0x0 when booting to 0x4000_0000 after ...
    (comp.os.linux.embedded)
  • Re: booting linux on arm problem
    ... The boot code and kernel is supposed to run in the first 64MB DRAM ... SDRAM mapped from 0x7000_0000 when booting to 0x0000_0000 after ... Is your flash on chip or on the local/IO bus? ...
    (comp.os.linux.embedded)