Document the Flash layout, and how RedBoot invokes the kernel bootloader.

This commit is contained in:
scw 2006-03-04 13:17:18 +00:00
parent 3be7ae7547
commit 5f212af961
1 changed files with 24 additions and 3 deletions

View File

@ -1,4 +1,4 @@
$NetBSD: README,v 1.2 2006/03/04 11:28:36 scw Exp $
$NetBSD: README,v 1.3 2006/03/04 13:17:18 scw Exp $
NetBSD for the Linksys NSLU2 (a.k.a. "Slug")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -63,8 +63,29 @@ disk activity/status LEDs.
Non-hardware items on the TODO list include:
- gzboot support.
This needs to emulate a "vmlinuz" compressed Linux kernel image so that
RedBoot will invoke the kernel from Flash at power-up.
The Slug's 8MB of Flash is split into 5 segments:
1 0x50000000-0x5003ffff: RedBoot (with some additional bits at the end).
2 0x50040000-0x5005ffff: Sysconf (used by the Linksys firmware).
3 0x50060000-0x5015ffff: Self-extracting compressed kernel image.
4 0x50160000-0x507dffff: Compressed ramdisk image.
5 0x507e0000-0x507fffff: SerComm Flash trailer.
Segments 1, 2, and 5 should be considered immutable. Segments 3 and 4
have a 16-byte header, the first 4 bytes of which describe the length
of the image contained in that segment (not including the header).
On power-up, RedBoot copies the image in segment 3 into SDRAM at 0x01d00000,
and the image in segment 4 into SDRAM at 0x01000000. RedBoot then jumps to
0x01d00000. This is just a regular ARM Linux compressed kernel bootloader.
So, we need to create a version of gzboot linked not at Flash address
0x50060000, but at 0x01d00000 instead. The only downside is that it looks
like the combined size of gzboot plus compressed kernel cannot exceed 1MB.
To support an md(4) root filesystem, we will need to modify gzboot to
decompress the ramdisk image from segment 4 and copy it to the correct
place in the decompressed kernel image.
- Move the kernel link address closer to the start of SDRAM. We waste a
little under 2MB with the current setup.