Récupération: exploration d'une sonde coloscopique médicale (partie 2)

Nous poursuivons l'exploration de la sonde d'endoscopie... cette fois, nous allons commencer par brancher un microcontrôleur (un Raspberry-Pi Pico) pour lire le contenu de l'EEPROM à l'aide de MicroPython

Brancher le Pico sur la sonde

Le Pico est un système 3.3V , il peut donc être branché directement sur les signaux de la caméra qui est elle aussi en 3.3V.

L'EEPROM de la carte est, elle, exploitée en 5V. Il faudra donc un Level Shifter (convertisseur de niveau logique) pour convertir les signaux 3.3V du Pico en 5V pour la carte.

Brancher un Raspberry-Pi Pico sur les bus I2C de la sonde

Lecture de l'EEPROM

Grâce à MicroPython, il est très facile de lire le contenu de l'EEPROM (qui fait 1 Kio = 1024 octets) et en stocker le contenu dans un fichier.
Je ne me suis pas compliqué la vie, j'ai utilisé la sessions REPL pour faire ces quelques opérations.
L'EEPROM 24LC08B utilise une unique addresse qui est 0x80 (pas de bit adresse).
Nous pouvons donc lire le contenu de l'EEPROM depuis son addresse 0x00 et remplir un buffer de 1024 octets.

>>> from machine import I2C
>>> i2c = I2C(0)
>>> buf = bytearray( 1024 )
>>> i2c.readfrom_mem_into( 0x50, 0x00, buf )
>>> buf
bytearray(b'\x01\x04\x05\x00\x10\xff\xff\xff\x00;\xa0\x05M\x19A\xff\n\xcc\xe9R?2\xff\xff\xff
...
...
xff\xff\xff\xff')

>>> # Save to binary file
>>> f = open( 'eeprom.dat', 'wb' )
>>> f.write( buf )
1024
>>> f.close()

Une fois le fichier récupéré (ou en utilisant mini-shell depuis MicroPython), il est possible d'inspecter le contenu fichier eeprom.dat.

HexDump content of eeprom.dat

hexdump for eeprom.dat

Offset | Data(h)                                          | String
--------------------------------------------------------------------------------
000000 | 01 04 05 00 10 FF FF FF 00 3B A0 05 4D 19 41 FF  | .........;..M.A.
000010 | 0A CC E9 52 3F 32 FF FF FF FF FF FF FF 00 04 73  | ...R?2.........s
000020 | 0A CC E9 52 01 02 20 20 10 04 0A 31 42 7B 01 02  | ...R..  ...1B{..
000030 | 20 20 23 59 0B 5C 53 5F 26 05 20 20 06 41 0B 5C  |   #Y.\S_&.  .A.\
000040 | 53 5F 26 05 20 20 07 25 FF FF FF FF FF FF FF FF  | S_&.  .%........
000050 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
000060 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
000070 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
000080 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
000090 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
0000A0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
0000B0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
0000C0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
0000D0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
0000E0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
0000F0 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
000100 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................
000110 | FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF  | ................

Le restant du fichier ne contient que des valeurs 0xFF (octets non initialisé).

En l'état, cette EEProm ne nous apprend rien (rien d'écident en tout cas) :-/

Aucun commentaire