MX25U12873F – programowanie CH347 V1, usuwanie blokady zapisu 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 musisz zapewnić napięcie 1,8 V, podciągnąć piny /WP i /HOLD do VCC oraz wyzerować bity ochrony (BP3…BP0, SRP) w rejestrach statusu poprzez sekwencję WREN (0x06) → WRSR (0x01 00 00).
  • W AsProgrammer wybierz układ, wykonaj „Unprotect” lub ręcznie wyślij powyższą sekwencję, a komunikat o blokadzie zapisu zniknie.

Kluczowe punkty
• 1,8 V logika/zasilanie – bez adaptera uszkodzisz układ.
• /WP i /HOLD = VCC → inaczej rejestr statusu pozostaje sprzętowo zablokowany.
• Sekwencja WREN + WRSR wyzerowuje ochronę; zawsze poprzedzaj zapisy komendą WREN.

Szczegółowa analiza problemu

1. Charakterystyka MX25U12873F

128 Mbit (16 MB) SPI-NOR Flash, VCC = 1,65–2,0 V. Mechanizmy ochrony:
• Rejestry statusu: SR1 (BP3…BP0, SRWD/SRP0, WEL) i SR2/SR3 (SRP1, QE itd.).
• Piny sprzętowe: /WP# (Write Protect) i /HOLD# (wstrzymanie magistrali).

2. Wymagania sprzętowe

  1. Programator CH347 V1 + adapter 1,8 V lub płytka CH347 z jumperem 1V8.
  2. Stabilne 1,8 V (≥300 mA) – najlepiej osobny LDO; 3,3 V trwale uszkadza układ.
  3. Krótkie przewody (<10 cm) i wspólna masa.
  4. Podciągnięcie /WP# i /HOLD# do VCC rezystorami 4k7–10k (logika wysoka).

Przykładowe połączenie (SOP-8):
CS#→CS0, SO→MISO, SI→MOSI, SCLK→CLK, VCC→1,8 V, GND→GND, /WP#→1,8 V, /HOLD#→1,8 V.

3. Konfiguracja oprogramowania

  1. Zainstaluj sterowniki CH347 i najnowszy AsProgrammer (>= 2.1.0) lub NeoProgrammer 2.2.x.
  2. W opcjach wybierz „CH347”, interfejs „SPI-FLASH”, prędkość 2–6 MHz, tryb 0.
  3. Wybierz chip „MX25U12873F” lub „MX25U12835F (1 V8)”.

4. Usuwanie ochrony przed zapisem

a) Automatycznie (GUI)
• AsProgrammer → IC → Protection → Disable All / Unprotect.
b) Ręcznie (okno „SPI-Console” lub „Send CMD”)
1) WREN : 06h
2) WRSR : 01h 00h 00h  (0x01 + dwa bajty 0x00; pierwszy czyści BPx/SRP0, drugi SRP1)
3) Odczytaj SR1 (05h) i SR2 (35h) – powinny być 0x00.
4) Jeśli SRWD/SRP1 wracają na „1”, sprawdź ponownie /WP# oraz wersję oprogramowania.

Typowe pułapki:
• /WP# w stanie niskim → SR1 zablokowany niezależnie od WRSR.
• Starsze buildy AsProgrammer wysyłają tylko jeden bajt WRSR – dla MX25U12873F trzeba wysłać dwa.
• Brak Write-Enable-Latch (WEL) → komunikat „Write Enable error”; zawsze powtarzaj 0x06 przed 0x01.

5. Typowa sekwencja programowania

1) Detect → Read ID (C2 25 38 XX).
2) Read → zapisz kopię BIN.
3) Unprotect (jak wyżej).
4) Chip-Erase (60h lub C7h).
5) Program (Write) pliku BIN.
6) Verify.
7) (opc.) Protect → ustaw BPx jeśli chcesz zabezpieczyć firmware w produkcie.

6. Diagnostyka

• Nieczytelny ID → brak 1,8 V lub zamienione MOSI/MISO.
• Erase OK, Write FAIL → nadal ustawione BPx; odczytaj SR1.
• AsProgrammer hang → użyj NeoProgrammer lub Flashrom („flashrom ‑p ch347_spi:voltage=1.8 ‑w plik.bin ‑o”).

Aktualne informacje i trendy

• Nowe rewizje płytek CH347-mini mają zworkę 1V8 i automatyczny detektor napięcia – nie wymagają zewnętrznego adaptera.
• NeoProgrammer 2.2.2 (lipiec 2023) ma poprawkę „Dual-byte WRSR for Macronix” – usuwa problem blokady.
• Flashrom 1.3 wprowadził natywną obsługę CH347 z prędkościami do 24 MHz i parametrem voltage.

Wspierające wyjaśnienia i detale

Rejestr SR1 (bit-mapa):
7 SRWD | 6-2 BP3…BP0 | 1 WEL |0 WIP
Rejestr SR2:
7 QE | 6 RES | 5 LB3 | 4 LB2 | 3 LB1 | 2 CMP | 1 SUS | 0 SRP1

Wyzerowanie BPx = pełne odblokowanie, ustawienie SRWD=1 + /WP#=0 = sprzętowe „zapieczętowanie”.

Aspekty etyczne i prawne

• Kasowanie lub modyfikacja firmware’u urządzeń chronionych może naruszać licencję producenta.
• Zachowaj dane użytkownika (RODO) – wykonuj pełny backup przed operacją.
• Przestrzegaj norm ESD – wyładowania mogą uszkodzić pamięć.

Praktyczne wskazówki

• Jeśli płytka z CH347 nie ma 1,8 V, użyj konwertera np. „SO8-1.8V adapter” (~5 USD).
• Przed lutowaniem upewnij się, że nowe firmware ma poprawny numer JEDEC w headerze – częsty błąd przy BIOS-ach.
• Po programowaniu zmierz prąd standby (typ. 25 µA) – wyższy oznacza zwarcie pinów.

Ewentualne zastrzeżenia lub uwagi dodatkowe

• Niektóre egzemplarze MX25U12873F (rev. A) wymagają komendy „Global Block Unlock” (98h) po resecie – Flashrom wspiera ją od wersji 1.3.
• Starsze płyty główne mogą trzymać linię /HOLD nisko przez rezystor pull-down – wylutowanie układu lub usunięcie rezystora bywa konieczne.

Sugestie dalszych badań

• Przetestuj tryb Quad-SPI (QE=1) z CH347 – pozwala skrócić czas programowania ~4×.
• Sprawdź nowe biblioteki libusb-1.0 + pyCH347 do automatyzacji produkcyjnej.
• Analizuj logi oscyloskopem logicznym – ułatwia diagnozę WREN/WRSR.

Krótkie podsumowanie

Do poprawnego zaprogramowania MX25U12873F: zapewnij 1,8 V, podnieś /WP oraz /HOLD, wyzeruj bity ochrony sekwencją 06h→01h 00 00, a następnie skasuj, zapisz i zweryfikuj pamięć. Nowsze wersje NeoProgrammer i Flashrom ułatwiają procedurę, lecz kluczowe pozostaje właściwe napięcie i prawidłowe połączenia SPI.

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.