[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] (RNH) Real Novice Here
Hi Wade,
Wade.Maxfield@computalog.com wrote:
> I'm new to this list. I'm working with a "nu horizons" board, and have
> yet to get linux to boot past the "calibrating delay loop." One of our
> hardware gurus built a microblaze into the Spartan II - 400 on this board,
> and made the dynamic ram refresh work.
Welcome!
> I have the toolset on RedHat 8 under VMWARE 4.5, and have compiled the
> kernel. As I said before, image.bin runs until the calibrating delay loop.
> I download using the latest for EDK release 6.2 using mbconnect mdm.
Sounds like you've got a reasonable build environment. that's a good start.
> If anyone has a working mbvanilla to nu-horizons port of hardware, I
> would appreciate it very, very much.
I'm not aware of one. Looking at your MHS file though, I think you're
almost there, see below.
> Here is the linux sign on. I did a cvs update today so that I'd be sure
> to have the latest. It did have a multiple page allocation issue in the
> past, but not now:
>
> Linux version 2.4.26-uc0 (root@cfwghost) (gcc version 2.95.3-4 Xilinx EDK
> 6.2.1
> Build EDK_Gm.12.3) #1 Mon Aug 2 11:33:23 CDT 2004
> On node 0 totalpages: 8192
> zone(0): 8192 pages.
> zone(1): 0 pages.
> zone(2): 0 pages.
> CPU: MICROBLAZE
> Console: xmbserial on UARTLite
> Kernel command line:
> Calibrating delay loop...
>
>
> Any help would be _much_ appreciated. I'll add the mhs file, so you can
> see if we left something obvious out of our current almost working
> nu-horizons port.
Two things stand out. Firstly, the kernel still thinks you have 32MB of
physical memory (8192 pages). However, in your MHS file, the address
range of your SDRAM is only 8MB (0x80000000 - 0x807fffff). So, assuming
you are modifying the mbvanilla platform in the uClinux sources, you
should edit linux-2.4.x/include/asm-microblaze/mbvanilla.h and change
the ERAM_SIZE #define accordingly.
You should also get your hardware guys to tweak the system.mhs settings
on icache and dcache. There is some inconsistency that should be
corrected (differing # of tag bits for icache vs dcache, stuff like
that). Unfortunately EDK/platgen doesn't yet do a sanity check on cache
settings (or at least not last time I looked).
Secondly (and most critically), in your MHS file your declaration of the
interrupt controller:
PORT Intr = timer_interrupt & console_uart_interrupt & debug_uart_interrupt
This is the reverse of the order expected by the mbvanilla uClinux
target. In your setup, timer is IRQ2, console_uart is IRQ1, debug_uart
is IRQ0. You want it the other way around. This is almost certainly
what is causing your delay loop calibration hang.
BTW You can start xmd and mb-gdb after the board has booted and hung.
Just launch xmd, do your mbconnect, then follow the mb-gdb kernel
debugging instructions on the website. Once it connects, it will
magically trap the microblaze where in the kernel source it is currently
hung, great for doing retrospective "what went wrong?" analysis.
Commands like "info stack" will show you the stack unwind, how you got
into the current predicament! "frame nn" where is is the stack frame
number allow you to inspect local variables and parameters in the
various stack frames etc.
Anyway hope this helps to get you moving again.
Cheers,
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/