Flash memory

From Embedded Xinu
Revision as of 01:29, 29 July 2009 by Michael (talk | contribs) (Created page for flash memory)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
File:Flash memory.png
Quick reference guide to Flash memory on XINU.

Unlike other devices on the system Flash memory is fully mapped, meaning it is possible to access every location of the four megabyte range by simply dereferencing a pointer between 0xBC00 0000 and 0xBC3F FFFF. Within Flash memory there are a number of notable addresses:

  • 0xBC00 1000: Generic backup NVRAM variables (if proper variables become corrupt, these are the values that will replace them).
  • 0xBC00 1E00: "True" MAC address of device, this is the mac address CFE will use during the boot process. Once the system is booted, the MAC address is not necessarily the same as the value stored here. The value is stored in ASCII as 6 colon separated octets for a total of 17 bytes.
  • 0xBC00 1F00: CFE Boot Version variable ("v3.7")
  • 0xBC00 2000: CFE code begins
  • 0xBC03 F400: Unique device ID, this is loaded into NVRAM variables as eou_device_id
  • 0xBC03 F408: Private key for device, also loaded into NVRAM variables as eou_private_key
  • 0xBC03 F508: Public key for device, also loaded into NVRAM variables as eou_public_key
  • 0xBC04 0000: XINU code, gzipped raw binary prefixed with a TRX header containing the length and a checksum among other data.
  • 0xBC06 0000: Beginning of XINU file system
  • 0xBC3F 8000: NVRAM variables are stored here, prefix with a padded length and checksum among other data for a 20 byte header. Each variable is stored as a name=value pair (as ASCII data) and separated by a single null character.