Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 4484

MicroPython • Reading OTP on the RP235X

$
0
0
Might be useful to anyone interested in exploring OTP on the RP235X.

Code:

from machine import mem32def OTP(row) : return mem32[0x40134000 + row * 4]def ECC(row) : return OTP(row) >> 16def ROW(row) : return OTP(row) & 0xFFFFdef ShowOtp():  for row in range(0, 4096):    if row % 64 == 0:      page = row // 64      if   page == 0        : print("Chip Info")      elif page in [1, 2]   : print("Boot Config and Boot Key Fingerprints")      elif page == 61       : print("Access Keys")      elif page in [62, 63] : print("Lock Words")    if row % 4 == 0:      s = "Page {:>2}, Row {:>2}, {:>4} 0x{:04X} :".format(          row // 64, row % 64, row, row)    if ECC(row) > 0xFF : s += "  <ERROR>"    else               : s += "  {:02X}:{:04X}".format(ECC(row), ROW(row))    if row %  4 ==  3 : print(s)    if row % 64 == 63 : print()ShowOtp()print("Serial Number  : {:04X}{:04X}{:04X}{:04X}".format(      ROW(0x003),      ROW(0x002),      ROW(0x001),      ROW(0x000)))print("Number of GPIO : {}".format(ROW(0x018)))

Code:

Chip InfoPage  0, Row  0,    0 0x0000 :  18:9A95  19:1582  31:D24F  02:C35DPage  0, Row  4,    4 0x0004 :  1A:4548  3E:754D  28:2811  36:D59DPage  0, Row  8,    8 0x0008 :  14:FD3E  02:C6C2  2D:0201  1A:AF9EPage  0, Row 12,   12 0x000C :  00:0000  00:0000  00:0000  00:0000Page  0, Row 16,   16 0x0010 :  28:2AF7  3A:68DA  00:0000  00:0000...Page 63, Row 56, 4088 0x0FF8 :  00:0000  00:0000  00:0000  00:0000Page 63, Row 60, 4092 0x0FFC :  00:0000  04:0404  00:0000  14:1414Serial Number  : C35DD24F15829A95Number of GPIO : 48

Statistics: Posted by hippy — Mon Nov 11, 2024 9:53 pm — Replies 0 — Views 45



Viewing all articles
Browse latest Browse all 4484

Trending Articles