Subject: 21285 memory inicialization

From: David Aparicio Campos <[email-masked]>
Date: Thu, 29 Jun 2000 08:26:12 +0200

Hello all:

I'm developing a firmware kernel loader for a SA110 + 21285 system (not
an EBSA285,
but a Chalice CATS). What I try to get is a very small loader & monitor
with these functions:

Inicialization (ARM core, RAM, and minimal coprocessor 15 + 21285
startup)
Flash driver (AMD 29020 class) for on-board programming.
285 UART driver, with dumb terminal and zmodem binary upload protocol.
PCI core driver, for inicialization and resource assignment.
Small system monitor (read, write memory, and so on)
Multipurpose load mode: test modules / "heavy" firmare modules / Linux
kernel.

Idea is to have a multilayer firmware, being this module the very
internal one. I have
based this on NetWinder BIOS and Russell King EBSA285 BIOS code. I have
also seen some BLOB code, but i don't know very much about SA1100, it
seems
to me that there are several diferences..

*** sad story here ***
I have succeed on a first version, with NetWinder based startup, but to
my surprise,
when I rearranged some code, I broke something. I have compared these,
but I
cannot find which code is damaged. Early inicialization is C - based
(and compiler
specific, then), very few assembler code. I tried a more specific
inicialization, then
studied EBSA285 BIOS (no, it seems not to work "out of the box" on this
board),
and changed to an 100% assembler "init.S" module, based on "crt0.S"
Russell code.
My idea was to merge development at some point, when I find what is
going
wrong with the public distribution.
This version succeed in opening serial line, writing some messages, thet
it died.
It seems I have problems with exception management code (I am
learning!!). So I
carefully tried to avoid exceptions (just to have a starting point, of
course I have to
add it later).

What I have got is a very simple monitor that:
* Inicializes core & serial line.
* Gives a prompt (and response :-) for memory reading and writing.

When I try this, I get:

0000.0000-0400.0000: RAM space. OK to read and write (SDRAM init works).

4100.0000-4104.0000: ROM space. OK to read, but see (1).
4200.0000-4210.0000: 285 register space. OK to read and write.
7B00.0000-7C00.0000: PCI CSR space. see (2)
other ranges: same than PCI CSR.

(1): First thing is to read Flash ID, to select proper driver. This is
done by writing
a special sequence on ROM space (thank you Nicolas Pitre and Erik Mou
for
lighting on proper way to do this!!). My monitor hangs on first
writing...

(2): Accesed in order to inicialize PCI cards, my monitor hangs on first
read!!

** end of sad story **

I have read SA-110 Tech Reference manual, ARM7 data sheet, and 285
Reference
manual. My suspects are that It foes some unhandled "fault exception"
from:

Bad MMU inicialization (coprocessor #15). I tried to remove all code on
this,
and let reset values to go. It doesn't fix anything.
Bad 285 inicialization. I'm lost on what I'm doing bad, but there are
several registers
to fiddle with.

Solutions:
- Properly handle exceptions. I don't have such black magic.
- Properly initialize memory model in order to ensure access to
offending zones.
- Others??

Thank you all for reading such a long email!! Can anybody help??

---

From: George France <[email-masked]>
Date: Thu, 29 Jun 2000 15:21:46 -0400

Hello David;

Try the boot loader from http://handhelds.org it has all the functions you
want. Currently this boot load is used on the Compaq Personal Server which
is a SA-110 and a 21285.

I hope this helps,

--George

George France,      [email-masked]
Cambridge Research Laboratory, Compaq Computer Corporation
One Cambridgecenter    MS: CRL
Cambridge, MA 02142 USA

-----Original Message-----
From: David Aparicio Campos [mailto:[email-masked]]
Sent: Thursday, June 29, 2000 2:26 AM
To: [email-masked]
Subject: 21285 memory inicialization

Hello all:

*** sad story here ***

When I try this, I get:

** end of sad story **

Solutions:

unsubscribe: body of `unsubscribe linux-arm-kernel' to [email-masked]