[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] Booting uClinux
Hi John,
John McGrath wrote:
> They are attached.
Hmm, there is at least one inconsistency I see:
From your bootlog:
> Calibrating delay loop... 1.93 BogoMIPS
Yet from your MHS file:
> PARAMETER C_USE_ICACHE = 1
> PARAMETER C_USE_DCACHE = 1
At 50MHz, there's no way you should be getting only 1.9 bogomips with I
and Dcaches enabled.
This suggests to me that your kernel config (as defined by
auto-config.in) and your hardware config (as defined my MHS/MSS) are
still mismatched.
Although looking further, I see this:
PARAMETER C_USE_ICACHE = 1
PARAMETER C_ICACHE_BASEADDR = 0x10000000
PARAMETER C_ICACHE_HIGHADDR = 0x13FFFFFF
PARAMETER C_CACHE_BYTE_SIZE = 16384
PARAMETER C_ADDR_TAG_BITS = 11
PARAMETER C_USE_DCACHE = 1
PARAMETER C_DCACHE_BASEADDR = 0x10000000
PARAMETER C_DCACHE_HIGHADDR = 0x13FFFFFF
PARAMETER C_DCACHE_BYTE_SIZE = 16384
PARAMETER C_DCACHE_ADDR_TAG = 11
Your icache and dcache ranges are totally mismatched from where your
physical memory resides in the address map (0x81800000). I'm not
certain this is actually broken, but it's definitely unusual and
probably not intended. I've never tried a uclinux system where the
cacheable raneg is disjoint from the main memory range, so no guarantees
there. If you don't want caches yet, best to just turn them off.
Are you still using the "uclinux-auto" platform or did you create your
own as per the instructions in my "adding platforms HOWTO" in
linux-2.4.x/Documentation/microblaze? There are a couple of subtle
steps in those instructions that must eb followed to the letter, else
you will get inconsistencies like you are seeing here.
To double check, you should examine the file
linux-2.4.x/include/linux/autoconf.h - this is the resulting header file
produced after the auto-config.in file is parsed by the kernel config
tools. It too should be consistent with your MHS, MSS and
auto-config.in file.
This is the purpose of running the make oldconfig, after auto-config.in
is updated by libgen. My experience is that this (make oldconfig) is
enough to collect the changes, although at least one person on the list
has asserted that you need to do a full "make distclean" then start
again... I'm pretty sure this is not the case, but am ready to be
proven wrong with enough evidence :)
Post your file linux-2.4.x/.config, that should also reflect the
settings for your platform.
> Ive done the steps youve asked.
> I think the real problem is that the romfs seems to want to map to
> memory space 0x00000000-0x000b2000, when my ram is located at
> 0x81800000. perhaps it cannot find any files in my fs , and that is why
> it hangs?
It may be related to the romfs, but the 0-0xb2000 is not the problem.
Those addresses are relative to the MTD partition in which the romfs is
located
> Is there a way to test the romfs readability, some code I can enter into
> the inti sequence perhaps??
In linux-2.4.x/init/main.c, around like 650, is the very tail end of the
kernel boot process, and where it tries to load the "init" application,
which kickstarts the userspace.
You could throw some printk()'s in there to get some visibility, or even
better just use mb-gdb and xmd to debug the kernel like any microblaze
program - there are some notes on how to do this on the website, under
Documentation.
Regards,
John
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@itee.uq.edu.au
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/