[E3-hacking] Quick update on E2 work

Matt Evans e3-hacking@earth.li
Wed, 13 Apr 2005 15:28:34 +0100

Hi all,

Just thought I'd say what I've been working on currently - had a slow 
fortnight w/o much time to spare for it but...  I am writing a 2ndstage 
boot monitor for the E2 with the aim to drop it into the first block 
(or two ;) of NAND flash via David's pblq program.  I currently haven't 
touched the flash at all, and am using JTAG to download it to RAM - 
that actually works very nicely, about 3K/s too..

Anyway, it provides a basic shell on the serial port with 
peek/poke/dump/go style commands.  It'll also support YMODEM transfers 
(when I get them working) to/from DRAM and from NAND - so it'll provide 
an easy means to prototype bigger programs on top of itself, with quick 
downloads to DRAM.

I've found the NAND support to be interesting.  It's my intention to 
have it be able to scan internal NAND (and SmartMedia) for headers of 
code to load/jump to, much as PBL does.  The raw NAND contains some 
strange stuff;  there is some sort of FTL in force here.  At this point 
I got a bit exasperated trying to work out exactly what 
ECC/badblock-remapping scheme they've used in the NAND flash; however 
I've found the PBL high-level "read offset N" routines (e.g. 0x4d18), 
and can call them (in ROM) from my own code (in RAM) with success.... 
These routines seem to perform ECC/FTL-style remapping.  I haven't 
found out how to get them to read SmartMedia though... (Incidentally 
0xa0002007 bit 0x02 is an active high 'smartmedia inserted' flag, 
0xa0002005 bit 0x01 being the NAND CS for the card.)  Thinking about it 
it would make sense for the ECC/remapping stuff of the internal NAND to 
be the same as the SmartMedia standard, no point duplicating code for a 
different system for internal flash...

Anyway; anyone have any comments/input/help with regard to the PBL 
routines to access SMC or internal flash?  I haven't looked for/found 
the writeBlock routines yet, but they'll be next on the list.  Ideally 
this loader (it's about 8K now since I'm lazy and most is in C) would 
sit at the (logical ;) ) start of NAND, be brought up by PBL and then 
boot from either SMC if inserted or else search internal NAND for 
another image.  Would be a cool development cycle to just blast stuff 
onto SMC card and plug it in rather than waiting for it to download 
over serial.

Hope to get something ready over the weeken that ppl can play with if 
anyone's interested.