MX25U12873F + CH347 V1: usuwanie blokady zapisu w ASProgrammer, programowanie 1,8V

Pytanie

jak zaprogramować MX25U12873F programatorem CH347 V1. W jaki sposób usunąć ochronę przed zapisem, któ©ą zgłasza asprogrammer?

Odpowiedź Sztucznej Inteligencji


Bezpośrednia odpowiedź na pytanie

  • Aby zaprogramować pamięć MX25U12873F programatorem CH347 V1:
    1. Zapewnij rzeczywiste 1 ,8 V na VCC i podciągnij piny WP# oraz HOLD# do VCC.
    2. W ASProgrammer (≥ v1.4.1) wybierz układ „MX25U12873F”, kliknij „Detect” i odczytaj rejestry SR1/SR2.
    3. Jeśli bity BPx lub SRP ≠ 0, wyślij sekwencję:
      • WREN (06h) → WRSR (01h) + 00 (SR1) + 00 (SR2) → power-cycle.
    4. Sprawdź, czy SR1/SR2 = 00 00; następnie kasuj („Erase”) i programuj („Program”).

Szczegółowa analiza problemu

1. Sprzęt

  1. Napięcie – MX25U12873F to układ 1 ,65–2 V. CH347 V1 ma wbudowany stabilizator 1 ,8 V (jumper „1V8”) lub wymaga adaptera LDO-1 ,8 V.
  2. Połączenia SPI:
    CS#↔CS, CLK↔SCLK, MOSI↔SI/IO0, MISO↔SO/IO1, GND↔GND, VCC↔1 ,8 V.
  3. Wyłączenie blokad pinowych:
    • WP# (pin 3 / IO2) → VCC przez 4k7–10kΩ.
    • HOLD# (pin 7 / IO3) → VCC.
    • Jeśli programujesz „w układzie”, upewnij się, że PCH/LPC nie trzyma WP# nisko – odłącz rezystor lub odlutuj pin.

2. Logika ochrony Macronix

SR1 (05h): BP0–BP4, TB, SRP0
SR2 (35h): SRP1, QE, CMP
Stany odblokowania:

  • BPx=0, TB=0, CMP=0, SRP1=SRP0=0, WP#=1 → pamięć globalnie zapisywalna.
    Jeżeli SRP1=1 (PSLD) lub SRP0=1 przy WP#=0 – rejestr statusu jest zablokowany; wymagane jest podniesienie WP# lub cykl zasilania.

3. Sekwencja odblokowania (ASProgrammer lub CLI flashrom)

  1. Read SR → zapisz wartości (log diagnostyczny).
  2. WREN 06h.
  3. WRSR 01h 00 00 (zeruje SR1 i SR2).
  4. Odczytaj SR ponownie – wszystkie BP/SRP muszą być 0.
  5. Erase / Program / Verify.

4. Typowe pułapki

  • USB 2.0 low-power: CH347 może podawać <1 ,8 V pod obciążeniem – użyj zasilanego huba lub portu USB-A 3.x.
  • Zbyt szyboki SCK: zacznij od 1 MHz.
  • Błędny model w bazie ASProgrammer: wybierz ręcznie „MX25U12873F_1V8” lub „MX25U12835F” (identyczna mapa).
  • Permanentne OTP SRP (SRP1=SRP0=1): układ jest nieodwracalnie zablokowany – wymagana wymiana kości.

5. Alternatywne narzędzia

  • CH347SPI.exe (narzędzie producenta) – ma zakładkę „StatusReg” i przycisk „Unlock All”.
  • NeoProgrammer 2.2.0.10 – lepsza obsługa chipsów 1 ,8 V.
  • flashrom (≥ 1.3 + patche ch347_spi) pod Linux/Windows:
    flashrom -p ch347_spi:voltage=1.8,spispeed=1M -c MX25U12873F --wp-disable

Aktualne informacje i trendy

  • Najnowsze rewizje CH347 (2023-) dodają tryb Quad-SPI 60 MHz i sprzętowe podbijanie WP#, co ułatwia programowanie BIOS-ów laptopów.
  • flashrom rozwija natywny backend „ch347_spi” (stan: upstream 05.2024).
  • Powstają open-source adaptery level-shifter 1 ,8 V z automatycznym wykrywaniem ID i WP#-override.

Wspierające wyjaśnienia i detale

  • Komenda WRSR zapisywana jest jako dwa bajty, gdy S9=0 (QE); jeśli używasz Quad IO w finalnym sprzęcie, zapisz 0x02 do SR2 (zostawia QE=1).
  • BP[4:0] mapują się na segmenty 64 kB-8 MB; przy standardowym BIOS-ie wystarczy BP[2:0].
  • Odczyt ID dla MX25U12873F: C2 25 38 (Manufacturer=0xC2 Macronix, Device=0x25 0x38).

Aspekty etyczne i prawne

  • Modyfikacja firmware’u urządzeń może naruszać warunki gwarancji.
  • W środowisku produkcyjnym obowiązuje IPC-7711/7721 (re-work) oraz normy ESD IEC 61340-5-1.

Praktyczne wskazówki

  • Przed kasowaniem zawsze wykonaj pełny dump (Read → Save) – umożliwi odzyskanie seryjnych numerów/kluczy.
  • Jeśli kość jest wlutowana blisko CPU, skróć przewody <10 cm lub użyj klipsa SOP8 z ekranowanym taśmociągiem.
  • Ustaw VPP_EN=0 w CH347; ten pin jest nieużywany dla SPI, a jego aktywacja potrafi spowodować 12 V na VCC.

Ewentualne zastrzeżenia lub uwagi dodatkowe

  • Niektóre płyty ASUS/Gigabyte podają sygnał PCH-PROT# blokujący WP# dopiero po włączeniu zasilania płyty. Rozwiązanie: programuj po wylutowaniu lub odetnij ścieżkę WP#.
  • CH347 V1 ma tylko jedną linię zasilania 1 ,8 V; w trybie Quad wymagana jest taka sama amplituda na IO2/IO3 – sprawdź, czy używany adapter level-shifter nie ogranicza prędkości.

Sugestie dalszych badań

  • Testy długookresowe integralności danych po wielokrotnych cyklach erase/write przy zasilaniu z portu USB-C 5 V vs 5 V-aux.
  • Implementacja automatycznej sekwencji unlock-erase-write w skryptach Python (biblioteka pyCH347).
  • Porównanie stabilności CH347 vs FTDI FT2232H w aplikacjach in-circuit 1 ,8 V.

Krótkie podsumowanie

Kluczem do usunięcia ochrony przed zapisem w MX25U12873F jest: prawidłowe 1 ,8 V, pin WP# na VCC, odczyt i wyzerowanie bitów BPx/SRP w SR1/SR2 po komendzie WREN. Po wyczyszczeniu rejestrów pamięć przyjmuje operacje kasowania i zapisu bez błędów ASProgrammer. Jeśli odblokowanie nie powiedzie się, sprawdź napięcie, integrację WP# na płycie i rozważ alternatywne oprogramowanie flashrom/NeoProgrammer.

Oceń odpowiedź:
Zastrzeżenie: Odpowiedzi udzielone przez sztuczną inteligencję (model językowy) mogą być niedokładne i wprowadzające w błąd. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi powinny być zweryfikowane przez użytkownika.