Colibri EEPROM Layout

From Stm32World Wiki
Jump to navigation Jump to search

All the Colibri I/O modules come with a 1Mbit EEPROM on board, that serves to store a few different things;

  • Vendor, Model and Revision of 'this' board.
  • Calibration parameters needed to compensate for hardware tolerances.
  • Test report (if any) from factory.
  • The driver(s) (i.e. code) of the board, to be executed in the MCU module on behalf of the board.
  • Any additional parameters, configuration that should survive over time.
  • Any storage space an on-module co-MCU needs.

Memory Layout

The canonical memory layout is found in Colibri SDK GitHub repo.

"Reserved future use" means that the Colibri Runtime firmware may introduce features in the future that needs additional EEPROM space, and these regions MUST NOT be used by vendors. "Vendor area" is guaranteed that the Colibri Runtime firmware will NOT use in the future, and vendors may use it any way they want.

 typedef struct __attribute__((packed))
 {
   uint32_t fingerprint;           // 0x0000
   uint32_t serial_number;         // 0x0004
   uint8_t reserved1[8];           // 0x0008
   uint32_t vendor_id;             // 0x0010
   uint32_t vendor_model_id;       // 0x0014
   uint32_t vendor_revision;       // 0x0018
   uint8_t reserved2[4];           // 0x001C
   uint32_t vendor_name_ptr;       // 0x0020
   uint32_t vendor_name_len;       // 0x0024
   uint32_t vendor_model_ptr;      // 0x0028
   uint32_t vendor_model_len;      // 0x002C
   uint32_t product_link_ptr;      // 0x0030
   uint32_t product_link_len;      // 0x0034
   uint32_t doc_link_ptr;          // 0x0038
   uint32_t doc_link_len;          // 0x003C
   uint32_t code_pic_len;          // 0x0040
   char reserved3[60];             // 0x0044
   uint8_t calibration_data[128];  // 0x0080
   uint8_t test_reports[256];      // 0x0100
   char text_area[2048];           // 0x0200
   uint8_t reserved4[1536];        // 0x0A00
   uint8_t vendor_area[12288];     // 0x1000
   uint8_t pic_arm[8192];          // 0x4000
 } eeprom_layout_t;
Address Length Description
0x0000 4 Contains the value 0xfacedead to indicate that it has been initialized.
0x0004 4 Serial Number
0x0008 8 Reserved for future use.
0x0010 4 Vendor ID, according to table below.
0x0014 4 Vendor Model identifier. This is specific to each vendor. Vendors are encouraged to add their tables on this page.
0x0018 4 Vendor Hardware Revision, where revision 'A' is written as 0x00000041 and revision 'AC' is 0x00004341
0x001c 4 Reserved for future use.
0x0020 4 Pointer to Vendor name, in ASCII.
0x0024 4 Length of Vendor name
0x0028 4 Pointer to Model name, in ASCII.
0x002c 4 Length of Model name.
0x0030 4 Pointer to Product Link
0x0034 4 Length of Product Link
0x0038 4 Pointer to Documentation Link
0x003c 4 Length of Documentation Link
0x0040 4 Size of ARM PIC (Position Independent Code).
0x0044 60 Reserved for future use.
0x0080 128 Calibration data, see each I/O module for details
0x0100 256 Test Reports, see each I/O module for details
0x0200 2048 Text area. Links points to here, i.e. Vendor name, model name, documentation link and product link.
0x0A00 1536 Reserved for future use.
0x1000 12288 Vendor area
0x4000 8192 Driver software/code. ARM PIC
0x6000 4096 Reserved future use
0x8000 32768 Vendor area
0x10000 65536 Vendor Area, intended for co-MCU usage.

Vendor ID

Contact us at info@currentmakers.com if you have products you want added.

Vendor ID Company Name Webpage Models
0 Unknown/Not defined
1 CurrentMakers https://currentmakers.com/products/colibri/
Model ID Model Name Webpage
0 Experiment
1 Colibri AIV https://currentmakers.com/products/colibri/colibri-aiv/
2 Colibri AIC https://currentmakers.com/products/colibri/colibri-aic/
3 Colibri AQV https://currentmakers.com/products/colibri/colibri-aqv/
4 Colibri DII https://currentmakers.com/products/colibri/colibri-dii/
5 Colibri DIO1 https://currentmakers.com/products/colibri/colibri-dio1/
6 Colibri DIU https://currentmakers.com/products/colibri/colibri-diu/
7 Colibri DP1 https://currentmakers.com/products/colibri/colibri-dp1/
8 Colibri FET https://currentmakers.com/products/colibri/colibri-fet/
9 Colibri PID1 https://currentmakers.com/products/colibri/colibri-pid1/
10 Colibri Pt1000 https://currentmakers.com/products/colibri/colibri-pt1000/
11 Colibri RS485I https://currentmakers.com/products/colibri/colibri-rs485i/
12 Colibri RS485U https://currentmakers.com/products/colibri/colibri-rs485u/
13 Colibri SSR https://currentmakers.com/products/colibri/colibri-ssr/
14 Colibri TRIAC1 https://currentmakers.com/products/colibri/colibri-triac1/
1024 Colibri 3a https://currentmakers.com/products/colibri/colibri_3a/
1025 Colibri 8 https://currentmakers.com/products/colibri/colibri_8/
1026 Colibri 8e https://currentmakers.com/products/colibri/colibri_8e/