MX25U12873F + CH347 V1: programowanie, usuwanie write protect w ASProgrammer

Pytanie

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

Odpowiedź Sztucznej Inteligencji


Bezpośrednia odpowiedź na pytanie

  • Aby zaprogramować MX25U12873F programatorem CH347 V1 należy:

    1. Zasilić układ dokładnie 1,8 V (adapter „1 V8”).
    2. Podciągnąć piny /WP i /HOLD do VCC.
    3. W ASProgrammer wybrać MX25U12873F, wykonać Read ID i kopię zapasową.
    4. Skasować bity ochrony w rejestrach SR1/CR1 (BP3-BP0, SRP1, SRP0 = 0).
    5. Dopiero po odblokowaniu wykonać Erase → Program → Verify.
  • Ochronę zgłaszaną przez ASProgrammer zdejmujesz sekwencją:
    WREN (06h) → WRSR (01h) z bajtami 0x00 0x00 lub w menu „Unprotect / Disable WP”.

Szczegółowa analiza problemu

  1. Charakterystyka układu
    • MX25U12873F – 128 Mbit SPI-NOR, napięcie pracy 1,65–2,0 V, tryb Quad, rejestry:
    ‑ SR1: BP3-BP0 (blokowa ochrona), SRWD/SRP0 (ochrona SR1), QE (Quad-Enable)
    ‑ CR1: SRP1 (współpracuje z SRP0)

  2. Połączenie sprzętowe z CH347 V1
    • CH347 pinout: CS#, CLK, MOSI(DI), MISO(DO), VCC-1 V8, GND.
    • /WP#, /HOLD# (lub /RESET#) → VCC-1 V8 przez 4k7–10k.
    • Częstotliwość startowa 1 MHz, tryb SPI 0.
    • Dodatkowy kondensator 10 µF na VCC układu.

  3. Odczyt i diagnoza ochrony

    Read ID  → C2 28 18  (Macronix 128 Mbit)  
    Read SR1 → np. 0x3C  (BP3-BP0=1111  – cała kość chroniona)  
    Read CR1 → np. 0x20  (SRP1=1         – SR1 chroniony przed zapisem)

    Jeśli SRP1=1 nie pozwala zmienić SR1 – najpierw trzeba wyzerować CR1.

  4. Sekwencja odblokowania (manualna)

    06h                ; WREN – zezwolenie na zapis
    31h 00h            ; WRCR1 – SRP1=0
    06h
    01h 00h 00h        ; WRSR – SR1=0x00, SR2/CR1=0x00  (BPx=0, SRP0=0)

    W ASProgrammer: IC → Status → Write → wpisać odpowiednie wartości lub nacisnąć „Unprotect”.

  5. Kasowanie i programowanie
    • Chip Erase (60h/ C7h) – cała kość.
    • Program (02h/32h/38h zależnie od Single/Dual/Quad).
    • Verify – porównanie z plikiem .bin.

  6. Typowe błędy
    write protect error – /WP# w stanie niskim, SRP1/SRP0=1.
    • „Device busy” – brak WREN przed WRSR lub zbyt szybkie taktowanie.
    • „ID mismatch” – złe napięcie (3,3 V) lub odwrócone MOSI/MISO.

Aktualne informacje i trendy

  • CH347 V1 coraz częściej zastępuje CH341A; najnowszy sterownik (2024-01-15) oraz GUI „CH347SPI-Tool v1.5” dodaje edycję SR/CR bezpośrednio.
  • ASProgrammer 2.2.1 (fork alexxxdev z III 2024) poprawił mapę rejestrów Macronix „U12873”.
  • Pojawiły się gotowe adaptery SOP-8 → CH347 z przetwornicą 1 V8 i automatycznym podciąganiem /WP, co eliminuje większość problemów z ochroną.

Wspierające wyjaśnienia i detale

Tabela znaczenia bitów w SR1/CR1:

Bit Nazwa Znaczenie Odblokowanie
SR1[7] SRWD/SRP0 Ochrona SR1, współdziała z /WP ustawić 0, /WP=1
SR1[5:2] BP3-BP0 Zakres blokady sektorów wszystkie 0
CR1[5] SRP1 Rozszerzona ochrona SR1 ustawić 0
SR1[6] QE Quad Enable pozostawić bez zmian jeśli FW używa Quad

Analogicznie do większości SPI-NOR (Winbond, GD, ISSI) procedura jest identyczna – przydatne przy zamiennikach.

Aspekty etyczne i prawne

  • Pamięć może zawierać firmware objęty prawami autorskimi; kopiowanie i dalsza dystrybucja wymaga zgody właściciela.
  • W wielu urządzeniach firmware jest podpisany – nie wolno wgrywać binariów łamiących licencję lub zabezpieczenia producenta.
  • Bezpieczeństwo: błędne programowanie BIOS/UEFI może uniemożliwić start sprzętu – miej zawsze pełny backup.

Praktyczne wskazówki

  1. Używaj najkrótszych możliwych przewodów (<10 cm).
  2. Obniż SCLK do 1 MHz przy pierwszych próbach, zwiększaj stopniowo.
  3. Po każdej zmianie SR/CR odłącz zasilanie na 5 s (część układów latches registers at power-up).
  4. Jeśli układ jest wlutowany, upewnij się że linie z procesorem są w stanie Hi-Z (wyjmij baterię/odłącz zasilacz).

Ewentualne zastrzeżenia lub uwagi dodatkowe

  • Niektóre serie MX25U12873F mają fuse „Permanent Protection” (bity P-P) – po ustawieniu odblokowanie jest niemożliwe.
  • CH347 V1 sprzedawany na Aliexpress bywa klonem bez stabilnego 1,8 V – pomiar multimetrem przed użyciem jest obowiązkowy.

Sugestie dalszych badań

  • Zapoznaj się z dokumentem Macronix AN033 „In-System Programming for MX25U Series”.
  • Przetestuj open-source’owy flashrom (v1.3 z 2024-02) – ma pełną obsługę CH347 i Macronix U-Series.
  • Rozważ automatyzację w Pythonie przy użyciu biblioteki pyCH347 – ułatwia testy regresyjne i masowe programowanie.

Krótkie podsumowanie

Prawidłowe programowanie MX25U12873F sprowadza się do: właściwego napięcia 1 V8, podciągnięcia /WP & /HOLD, wyzerowania bitów SRP1/SRP0 i BP3-BP0 (funkcja „Unprotect” lub ręczna sekwencja WRSR/WRCR1), a następnie standardowego Erase-Program-Verify. Zaktualizowane wersje CH347-Tool i ASProgrammer znacząco ułatwiają cały proces, a większość problemów wynika z błędów połączeń lub niewłaściwego poziomu logicznego 1,8 V.

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.