SDB (Self Describing Bus) is designed withing the fpga-config-space OHWR
project. See http://www.ohwr.org/projects/fpga-config-space/wiki

The "sdbfs" implementation of SDB is a storage layout that lays out
data in a device using the same data structures we deviced for memory
spaces.

The tools/sdbfs directory includes the template to generate an sdbfs
to be written in the device's eeprom. It includes 4 files, which
have their "device-id" in SDB, using the first 4 characters of the name:
seen as devices from an sdn 

         file name           sdb device name
         -----------------------------------
         mac-ddress             mac-
         wr-init                wr-i
         sfp-database           sfp-
         calibration            cali

All the files are empty at this point, but ./tools/sdbfs/--SDB-CONFIG--
assigns a size to each of them.  The code in wrpc-sw can read and write
the files.

All related tools (gensdbfs and so on) and their documentation live in
the fpga-config-space packages, sdbfs subdirectory.


To create the filesystem image: "gensdbfs tools/sdbfs /tmp/sdb-wrpc.bin"
(please note that empty files have no data to be stored, so no space is
wasted on disk for them and the output file is short).

To check: "sdb-read -l /tmp/sdb-wrpc.bin":

   46696c6544617461:2e202020 @ 00000000-0000037f .
   46696c6544617461:77722d69 @ 00000140-0000023f wr-init
   46696c6544617461:6d61632d @ 00000240-00000245 mac-address
   46696c6544617461:7366702d @ 00000280-000002ff sfp-database
   46696c6544617461:63616c69 @ 00000300-0000037f calibration

This states where the various files are.

To write to w1-eeprom:  "tools/wrpc-w1-write 0 320 < /tmp/sdb-wrpc.bin"
(this assumes that the size is 320 bytes.

The next boot of lm32 will show it found the files:

   sdbfs: found at 0 in W1
   file 0x2e202020 @    0, name .
   file 0x77722d69 @  320, name wr-init
   file 0x6d61632d @  576, name mac-address
   file 0x7366702d @  640, name sfp-database
   file 0x63616c69 @  768, name calibration