NSLU2-Linux
view · edit · print · history

The last erase block in the internal flash memory has a number of dedicated uses:

  • It holds the RedBoot FIS directory, which is read by the kernel to define the MTD partitions.
  • It holds the 16 byte SercommFlashTrailer which is checked by the Redboot boot script commands.

Because it has to be there anyway, we have decided to use it for a couple of other things too:

  • Storage for the proprietary Intel NPE microcode, which is provided to the open source IXP NPE driver.

SlugImage has been upgraded to support the payload already - other additions will come as they are prototyped and proven to work.

Start mem addrLengthDescription
0x507E00000x00F00 (4K - 256B)RedBoot FIS directory (flash partition map)
0x507E0F000x00002 (2B)Flash partition map terminator ('0xFF','0xFF')
0x507E0F020x000FE (254B)Unused (part of the flash partition map terminator)
0x507E10000x1B000 (108K)Unused
0x507FC0000x03FE0 (12K)Proprietary microcode storage area
0x507FFFF00x00010 (16B)SercommFlashTrailer

The existence of the RedBoot FIS directory is determined by looking of the null-terminated string "RedBoot" at locations 0x507E0000, 0x507E0100, or 0x507E0200. This enables the RedBoot MTD map parser to identify a valid RedBoot FIS directory. SlugImage restricts the size of the FIS directory to a maximum of 15 entries (plus the terminator entry).

Historical Info:

We were also intending to use this area for storage of the memory size (for FatSlug support), and kernel command line arguments. Unfortunately, it is not possible to read from the flash memory before the kernel initialises the memory subsystem and parses the kernel command line arguments. So these plans have had to be dropped.

view · edit · print · history · Last edited by rwhitby.
Based on work by rwhitby and ka6sox.
Originally by rwhitby.
Page last modified on May 10, 2008, at 03:01 PM