Čo sa ukrýva v neznámej externej EEPROM?

Zápisník experimentátora

Hierarchy: Externá EEPROM

Z nejakej odpálenej dosky som vyspájkoval 32 Kb EEPROM v SOIC8 púzdre. Plánujem ju použiť na test výdrže prepisovania, ale ešte predtým, ako ju definitívne zničím, zaujímalo ma, čo sa na EEPROM ukrýva. Dajú sa z takejto EEPROM ešte prečítať údaje? A aby som to zbytočne nenaťahoval, tak doska síce odpálená bola, ale EEPROM bola v poriadku a tu je kód, pomocou ktorého sa dajú z tejto konkrétnej EEPROM prečítať údaje.

Použité súčiastky

Na tento experiment stačí iba pár súčiastok:

  • Arduino Pro Mini (link) - Použil som ho preto, lebo sa zmestí aj na najmenšie skúšobné pole.
  • Breadboard 400 Holes (link) - Na ňom máme dosť miesta na dva mikrospínače.
  • Prevodník CP2102 USB to Serial (link) - Prevodník slúži na naprogramovanie Arduina.
  • EEPROM 24C32WP
  • SOIC8 to DIP8 adaptér (link) - Pretože EEPROM je v púzdre SOIC8, je potrebný adaptér, aby sme si ju mohli zapojiť na breadboard.

Arduino je upravené tak, že má na I2C (nachádza sa netradične na extra pinoch uprostred Arduina) prispájkovanú pin lištu s otvormi, aby sa pomocou dvoch prepojovacích vodičov dalo ľahko prepojiť s EEPROM.

Dve tlačidlá sa používajú na spustenie konkrétnych testov a sú pripojené na piny 6 a 8 na Arduine. EEPROM je pripojená na napájanie a adresové piny A0, A1 a A2 sú nezapojené. To platí ale iba pre tento konkrétny typ EEPROM. Ostatné musia obvykle pripojiť tieto piny na GND alebo na VCC, čím si nastavia I2C adresu. Treba si vždy skontrolovať datasheet ku konkrétnemu typu a nastaviť to podľa neho.

Ako začať

Pri pripojení neznámej EEPROM je vždy dobré vyskúšať, či komunikuje. Na to je vhodný I2C scanner, ktorý vám ukáže všetky I2C adresy. Ak sa nejaká adresa v zozname objaví, malo by to znamenať, že máte funkčný integrovaný obvod.

Program

Pokiaľ sledujete seriál o externých EEPROM, nebude pre vás nič cudzie. Program som osekal na nutné minimum, čo znamená, že sa iba pripojím ku EEPROM a na sériový port pošlem celý jej obsah. Výpis som mierne upravil, aby bolo vidno aj znaky a nielen hexadecimálne hodnoty.

#include <extEEPROM.h>

//One 24C32WP EEPROMs on the bus
const uint32_t totalKBytes = 4; // for read and write test functions
extEEPROM eep(kbits_32, 1, 16);

void setup(void)
{
  Serial.begin(115200);
  uint8_t eepStatus = eep.begin(twiClock400kHz);      //go fast!
  if (eepStatus) {
    Serial.print(F("extEEPROM.begin() failed, status = "));
    Serial.println(eepStatus);
    while (1);
  }

  // dump current EEPROM memory
  dumpEEPROM(0, totalKBytes * 1024);
}

void loop(void)
{
}

// dump eeprom contents, 16 bytes at a time.
// always dumps a multiple of 16 bytes.
void dumpEEPROM(uint32_t startAddr, uint32_t nBytes)
{
  Serial.print(F("EEPROM DUMP 0x"));
  Serial.print(startAddr, HEX);
  Serial.print(F(" 0x"));
  Serial.print(nBytes, HEX);
  Serial.print(F(" "));
  Serial.print(startAddr);
  Serial.print(F(" "));
  Serial.println(nBytes);
  uint32_t nRows = (nBytes + 15) >> 4;

  uint8_t d[16];
  char    asciiDump[17];
 
  for (uint32_t r = 0; r < nRows; r++) {
    uint32_t a = startAddr + 16 * r;
    eep.read(a, d, 16);

    Serial.print(F("0x"));
    if ( a < 16 * 16 * 16 ) Serial.print(F("0"));
    if ( a < 16 * 16 ) Serial.print(F("0"));
    if ( a < 16 ) Serial.print(F("0"));
    Serial.print(a, HEX); Serial.print(F(" "));

    for (int c = 0; c < 16; c++) {
      if (d[c] < 16)
        Serial.print(F("0"));
      Serial.print(d[c], HEX);
      Serial.print(c == 7 ? "  " : " ");
      if ((d[c] >= 0x20) && (d[c] < 0x7f))
        asciiDump[c] = d[c];
      else
        asciiDump[c] = '.';
    }
    Serial.print(F(" "));
    asciiDump[16] = 0;
    Serial.println(asciiDump);
  }
}

Čo sa ukrývalo na EEPROM?

Tu je výpis zo sériového portu. Iba tej časti, kde boli nejaké informácie.

EEPROM DUMP 0x0 0x1000 0 4096
0x0000 1B 00 8C 16 00 02 01 00  00 00 01 50 00 00 08 11  ...........P....
0x0010 B6 19 0A 1C 00 01 00 00  C2 01 02 00 06 C6 01 00  ................
0x0020 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x0030 00 00 00 00 00 00 00 00  00 00 4B 15 39 42 0C 00  ..........K.9B..
0x0040 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x0050 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x0060 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x0070 00 00 00 00 00 00 00 00  00 00 A5 5A 00 00 00 00  ...........Z....
0x0080 13 03 43 49 53 20 04 71  02 12 00 04 06 03 01 00  ..CIS .q........
0x0090 00 00 00 05 0E 41 B1 39  B5 1E 2D 4E 56 30 FF FF  .....A.9..-NV0..
0x00A0 02 E9 00 07 06 01 00 00  00 01 00 15 52 07 01 41  ............R..A
0x00B0 74 68 65 72 6F 73 20 43  6F 6D 6D 75 6E 69 63 61  theros Communica
0x00C0 74 69 6F 6E 73 2C 20 49  6E 63 2E 00 41 52 35 30  tions, Inc..AR50
0x00D0 30 31 2D 30 30 30 30 2D  30 30 30 30 00 57 69 72  01-0000-0000.Wir
0x00E0 65 6C 65 73 73 20 4C 41  4E 20 52 65 66 65 72 65  eless LAN Refere
0x00F0 6E 63 65 20 43 61 72 64  00 30 30 00 FF 00 00 21  nce Card.00....!
0x0100 02 06 01 22 05 02 80 8D  5B 00 22 05 02 40 54 89  ..."....[."..@T.
0x0110 00 22 05 02 00 1B B7 00  22 05 02 80 A8 12 01 22  ."......"......"
0x0120 05 02 00 36 6E 01 22 05  02 00 51 25 02 22 05 02  ...6n."...Q%."..
0x0130 00 6C DC 02 22 05 02 80  F9 37 03 22 05 02 00 A2  .l.."....7."....
0x0140 4A 04 22 02 03 08 22 08  04 06 00 0C 42 39 15 4B  J."...".....B9.K
0x0150 22 02 05 01 FF 00 00 00  00 00 00 00 00 00 00 00  "...............
0x0160 FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF  ................
0x0170 FF FF FF FF FF FF FF FF  FF FF FF FF FF FF 00 00  ................
0x0180 05 C8 03 50 E7 1A 01 04  37 82 BD 01 FF 02 FF 30  ...P....7......0
0x0190 A3 15 00 00 00 04 00 00  00 00 00 00 00 00 00 00  ................
0x01A0 00 00 00 00 00 00 00 00  3C 2D 66 00 61 98 96 82  ........<-f.a...
0x01B0 45 51 B6 E0 6D DB 0F 02  0E 00 CA B0 B5 01 2E 00  EQ..m...........
0x01C0 F8 08 8B F6 59 C0 61 15  00 00 00 00 00 00 00 00  ....Y.a.........
0x01D0 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x01E0 00 00 00 00 84 28 66 00  61 98 96 82 45 51 55 DA  .....(f.a...EQU.
0x01F0 1C 02 07 00 FF B0 B5 01  2D 00 00 00 70 FF FF 0A  ........-...p...
0x0200 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x0210 00 00 00 00 00 00 00 00  00 00 84 28 66 00 61 98  ...........(f.a.
0x0220 96 82 45 51 55 DA 1C 02  0E 00 FF B0 B5 21 2D 00  ..EQU........!-.
0x0230 28 28 70 FF 2E 17 FF 0A  80 00 01 A8 50 01 87 05  ((p.........P...
0x0240 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x0250 13 10 12 11 40 14 42 41  31 30 34 32 00 00 00 00  ....@.BA1042....
0x0260 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x0270 00 80 00 00 00 00 00 00  00 00 68 06 B0 04 00 80  ..........h.....
0x0280 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x0290 00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................
0x02A0 31 4D 54 7F 93 3C 05 12  31 19 2D 49 50 7F 93 3C  1MT..<..1.-IP..<
0x02B0 01 0E 2D 19 4A 56 64 78  8C AA B9 C1 CD 00 E0 90  ..-.JVdx........
0x02C0 43 4A 49 AA 44 2E E7 9C  56 1A 00 80 43 5E 79 2A  CJI.D...V...C^y*
0x02D0 04 2E E7 5C 66 21 00 80  43 4A B9 AA 04 2A F7 A0  ...\f!..CJ...*..
0x02E0 57 18 00 90 4D 32 19 AA  44 36 F7 5C 47 17 00 90  W...M2..D6.\G...
0x02F0 4B 2E 69 AA 04 1E 49 59  66 24 00 90 4F 5A 89 29  K.i...IYf$..OZ.)
0x0300 06 2E 17 21 58 28 00 80  51 66 09 AA 06 3A 58 9D  ...!X(..Qf...:X.
0x0310 49 20 E0 90 45 7A E9 2A  07 3E 38 A1 49 22 80 90  I ..Ez.*.>8.I"..
0x0320 4A 7E 09 2B 08 36 57 E1  39 19 70 AC B8 00 A0 81  J~.+.6W.9.p.....
0x0330 4E 7A 89 AB 08 42 99 DD  78 35 A0 81 4D 86 D9 2B  Nz...B..x5..M..+
0x0340 09 46 88 61 7A 35 C0 91  4F 86 B9 2B 09 3A A8 5D  .F.az5..O..+.:.]
0x0350 78 34 70 AC B8 00 80 81  49 7E 19 2B 08 3A 89 5D  x4p.....I~.+.:.]
0x0360 69 2C 00 82 48 56 59 2B  08 3E 78 61 59 30 E0 91  i,..HVY+.>xaY0..
0x0370 50 3E 88 AB 08 36 48 9D  68 32 BA 14 A2 A9 BA 4C  P>...6H.h2.....L
0x0380 A2 A9 BA 58 A2 A9 BA 68  A2 A9 BA 8C A2 A9 BA B4  ...X...h........
0x0390 A2 A9 BA BD A2 A9 BA CD  A2 A9 BA 70 AE EB BA B8  ...........p....
0x03A0 AE EB BA 70 A8 CA BA AC  A8 CA 00 00 00 00 50 4C  ...p..........PL
0x03B0 68 5C 90 8C BD B4 64 24  24 64 6E 2E 6E 2E 60 50  h\....d$$dn.n.`P
0x03C0 94 62 AC 9C C9 C0 6E 62  6E 2E 2E 6E 2E 6E 89 70  .b....nbn..n.n.p
0x03D0 00 8E 00 00 00 00 2E 6E  00 6E 00 00 00 00 75 70  .......n.n....up
0x03E0 A2 9D 00 00 00 00 6E 2E  2E 6E 00 00 00 00 89 89  ......n..n......
0x03F0 00 00 00 00 00 00 2E 2E  00 00 00 00 00 00 56 4A  ..............VJ
0x0400 00 00 00 00 00 00 2E 2E  00 00 00 00 00 00 75 70  ..............up
0x0410 AC A2 00 B8 00 00 6E 2E  2E 6E 00 2E 00 00 75 70  ......n..n....up
0x0420 AC A2 00 00 00 00 6E 2E  2E 6E 00 00 00 00 68 4C  ......n..n....hL
0x0430 B4 8C C1 BD 00 CD 2E 2E  2E 2E 6E 2E 00 2E 75 70  ..........n...up
0x0440 00 AC 00 00 00 00 68 28  00 28 00 00 00 00 75 70  ......h(.(....up
0x0450 00 AC 00 00 00 00 68 28  00 28 00 00 00 00 89 89  ......h(.(......
0x0460 00 00 00 00 00 00 28 28  00 00 00 00 00 00 00 00  ......((........
0x0470 FF FF FF FF FF FF FF FF  FF FF FF FF FF FF FF FF  ................

Bolo tam niečo zaujímavé?

Našlo sa tam pár textov, ktoré niečo naznačujú, že sa jednalo o akési komunikačné zariadenie.

  • Atheros Communications, Inc.
  • AR5001-0000-0000
  • Wireless LAN Reference Card
  • EQ
  • EQU
  • BA1042

Zdrojový kód

Zdrojový kód sa nachádza na serveri GitHub.


16.04.2017


Menu