Friday, February 19, 2010

Here's rx1950 nand flash layout:

0x0000 - 0x1000 - First stage bootloader
0x1000 - 0x4000 - Some data, i.e. wifi mac is here
0x4000 - 0x44000 - Second stage bootloader. This block starts with 0x1000 byte header,
0x44000 - 0x-------- - WinCE image. This block starts with 0x400-byte partition table (???) followed by 0x1000 byte header (almost same as bootloader, but different addresses)

Bootloader header looks like this:
0xfe 0x03 0x00 0xea ; some magic bytes?
0x00 * 0x3c ; 0x3c zeros
0x45 0x43 0x45 0x43 ; "ECEC" - more magic bytes?
0x8c0b5dcc ; stored in little endian format, virtual address in ram where image ends
0x00035dcc ; stored in little endian format, image size
0x00 * 0xfb4 ; 0xfb4 zeros

So, bootloader will be loaded at 0x8c0b5dcc - 0x00035dcc = 0x8c080000 (virtual address)

WinCE header looks almost the same, except address is 0x8014e388 and size is 0x0014e388, so WinCE image will be loaded at 0x80000000 (virtual)

WinCE partition table is not looking interesting to me, we're not going to use WinCE-compatible FS :)

So, rx1950 will use following mtd partition table:
0x00000000-0x00004000 : "Boot0"
0x00004000-0x00044000 : "Boot1"
0x00044000-0x00344000 : "Kernel"
0x00344000-0x04000000 : "Filesystem"

If anyone interested in Boot0/Boot1/Kernel images - I can put it on tuxfamily ftp :)

P.S. I ported basic rx1950 patches to latest git kernel, and I'm going to submit it mainstream again :)

2 comments:

TD said...

Since, the rx3000 series uses pretty much the same hardware specs with the exception of the different (but compatible) S3C2440A, and the older revision of WLAN and sound hardware, would you consider adding support for the rx3000 series, since the port seems to have disappeared. Since the root file systems are compatible (correct me if I am wrong), the only thing that would need to be done, is compile a separate kernel for the rx3000 series.

anarsoul said...

Sorry, but I don't own rx3000, so I doubt that compiled kernel will work (As it doesn't for h1940 - we need some fixes to make mainline kernel work on h1940) and I can't fix it without testing, however Daniel Faulkner worked on rx3000 port about a year ago - you should contact him - daniel d0t faulkner at boltblue d0t com, or you can compile it by yourself - it's easy :)