When executing eeprom-init on E320 (which was originally written for N310), it would use defaults from N310, potentially causing issues. These issues would have arisen if we letter-revved the E320 one more time (because at rev 5, N310 had a compatibility cutover). Summary of changes: - eeprom-init will now read values *not* given on the command line from the existing content of the EEPROM, if it contains valid data. This means that DT, MCU, and rev compat values will no longer get auto-derived if the EEPROM already contained "good" values. - If the EEPROM is empty or corrupted, eeprom-init will no longer run if the pid value is not provided. This is to avoid N310 defaults being written to E320 EEPROMs. - A README is added to explain which devices use which utilities. - PID checks are more strict now. It is unlikely we'll build new devices using the old EEPROM format (prior to TLV), so we can check specifically for E320, N3x0. - The hard-coded list of PIDs for the EEPROM tools are moved to a central location (eeprom-pids.h). - The code to derive values for DT/MCU/rev compat from the rev is now pid-specific and no longer device-agnostic. |
||
|---|---|---|
| .. | ||
| tlv_eeprom | ||
| check-filesystem | ||
| CMakeLists.txt | ||
| db-dump.c | ||
| db-id.c | ||
| db-init.c | ||
| eeprom-blank.c | ||
| eeprom-dump.c | ||
| eeprom-id.c | ||
| eeprom-init.c | ||
| eeprom-pids.h | ||
| eeprom-set-flags.c | ||
| eeprom.c | ||
| eeprom.h | ||
| fan-limits.c | ||
| mpm_debug.py | ||
| mpm_shell.py | ||
| program_x4xx_clkaux_lmk05318.py | ||
| README.md | ||
| x4xx_clkaux_lmk05318_regs_revB.txt | ||
EEPROM Utilities for embedded USRP devices
N3x0 and E320
The USRP N3x0 and E320 series share the same EEPROM formats. They are initialized, configured, and queried using the utilities in this folder (mainly, eeprom-dump and eeprom-id to read the EEPROM, eeprom-init to configure it, eeprom-blank to erase it, and eeprom-set-flags to configure the MCU flags).
The N3x0 series, which has additional EEPROMs on the daughterboard, has additional tools for those (db-dump, db-id, db-init).
The structure of the data is fixed. A good overview of how data is stored can
be looked up either in usrp_mpm/eeprom.py or the structs in eeprom.h in this
directory.
X410
The USRP X410 uses a different EEPROM data format (tag/length/value, TLV). It is
more flexible than the format used on the previous devices. The tools to operate
on the EEPROMs for those devices are stored under tlv_eeprom.
E31x
The USRP E31x series is not supported by these tools.