mirror of
https://github.com/apache/nuttx.git
synced 2026-08-01 20:28:58 +00:00
|
Some checks are pending
Build Documentation / build-html (push) Waiting to run
MemBrowse Memory Report / changes-filter (push) Waiting to run
MemBrowse Memory Report / load-targets (push) Waiting to run
MemBrowse Memory Report / identical (push) Blocked by required conditions
MemBrowse Memory Report / analyze (push) Blocked by required conditions
The rp2350 holds 4096 rows of 24 bit one-time-programmable memory, which the port did not expose at all. This adds a driver on the NuttX efuse interface, registered by the common board bringup as /dev/efuse. The driver uses the ECC interpretation of a row, in which 16 bits carry data and the remaining 8 carry a Hamming code, so the OTP appears as a flat space of 4096 * 16 bits for the efuse field descriptors to index: a descriptor at bit offset N refers to bit N % 16 of row N / 16. That matches the row numbers already listed in hardware/rp23xx_otp_data.h. Reads come from the chip's ECC-translated window and have no side effects. Rows are locked in pages of 64; a page locked against reads would raise a bus fault, so the lock is checked first and reported as an error instead. Programming needs the separate RP23XX_OTP_WRITE option, which defaults to off; without it a write returns EPERM and no programming code is built at all. When enabled, a row is programmed as a whole through the bootrom, since the ECC bits cover the whole row. For the same reason a row that already holds data cannot be modified, and such a write is rejected rather than left to corrupt the row's ECC. Assisted-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Marco Casaroli <marco.casaroli@gmail.com> |
||
|---|---|---|
| .. | ||
| _extensions | ||
| _static | ||
| _templates | ||
| applications | ||
| components | ||
| contributing | ||
| debugging | ||
| faq | ||
| guides | ||
| implementation | ||
| introduction | ||
| logos | ||
| platforms | ||
| quickstart | ||
| reference | ||
| ReleaseNotes | ||
| standards | ||
| testing | ||
| .gitignore | ||
| conf.py | ||
| glossary.rst | ||
| index.rst | ||
| known-warnings.txt | ||
| legacy_README.md | ||
| make.bat | ||
| Makefile | ||
| Pipfile | ||
| Pipfile.lock | ||
| security.rst | ||
| substitutions.rst | ||