[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/