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

  • Do MX25U12873F bezwzględnie użyj adaptera 1,8 V (CH347 V1 domyślnie ma 3,3 V). Podciągnij piny WP# (pin 3) i HOLD# (pin 7) do VCC=1,8 V.
  • W ASProgrammer wybierz MX25U12873F (ew. zbliżony profil: MX25U12872F / MX25U12835F / MX25L12873F), wykonaj sekwencję: Unprotect → Erase → Program → Verify.
  • Jeśli „Write protection” nie znika: ręcznie wyczyść bity ochrony w rejestrach statusu (SR1/SR2): WREN (06h) → WRSR (01h) z danymi 0x00, 0x00 (BPx=0, SRP/SRP1=0) przy WP#=HIGH. Często komunikat ASProgrammer jest ostrzeżeniem i mimo niego zapis/erase przebiega poprawnie.

Kluczowe punkty:

  • Napięcie 1,8 V i poprawne podciągnięcie WP#/HOLD# to warunek konieczny.
  • Odczytaj JEDEC ID i SR1/SR2; skasuj bity BPx, SRP/SRP1/CMP.
  • Zmniejsz prędkość SPI (1–2 MHz) i stabilizuj zasilanie podczas programowania.

Szczegółowa analiza problemu

  • Układ MX25U12873F to 128 Mbit (16 MB) SPI-NOR 1,8 V (seria „U”). Większość problemów z „write-protect” wynika z:
    • Nieprawidłowego napięcia interfejsu (3,3 V zamiast 1,8 V).
    • Sprzętowej blokady przez WP#=LOW przy ustawionych bitach SRP/SRP1.
    • Ustawionych bitów BPx/TB/SEC/CMP w SR1/SR2.
    • Niestabilnych połączeń (klips SOIC8, długie przewody) lub zbyt wysokiej szybkości SPI.

Teoretyczne podstawy:

  • Rejestr statusu 1 (SR1) zawiera m.in.: SRP0/SRP (Status Register Protect), SEC, TB, BP[2:0], WEL, WIP.
  • Rejestr statusu 2 (SR2) zawiera m.in.: SRP1, CMP (Complement Protect), LBx, QE itp.
  • Ochrona zapisu obejmuje:
    • Ochronę blokową (BPx + TB/SEC) – blokuje zakresy adresów.
    • Zabezpieczenie rejestru (SRP1:SRP0) – przy WP#=LOW uniemożliwia zmianę SR.
    • Opcjonalnie bity „Lock” dla rejestrów Security (LBx).

Praktyczne zastosowania:

  • Do zmiany BPx/SRPx musisz:
    1. mieć WP#=HIGH (1,8 V),
    2. wykonać WREN (06h),
    3. zapisać SR1 i SR2 komendą WRSR (01h) – zwykle dwubajtowo: [SR1][SR2].
  • CMP=1 odwraca interpretację BPx (często utrudnia erase) – ustaw CMP=0.

Procedura krok po kroku (sprawdzona w praktyce):

  1. Sprzęt
  • CH347 V1 + prawdziwy adapter 1,8 V (z tłumikiem poziomów, nie tylko stabilizatorem!).
  • WP# i HOLD# do VCC=1,8 V (rezystory podciągające 10 kΩ lub mostki).
  • Krótkie przewody/klips SOIC8; masa wspólna; ESD.
  1. Połączenia (SOIC8/WSON8 z wyprowadzeniami):
  • CS#(1), SO/DO(2), WP#(3), GND(4), SI/DI(5), SCLK(6), HOLD#(7), VCC(8).
  1. Oprogramowanie (ASProgrammer/NeoProgrammer/UsbAsp-flash dregmod)
  • Wybierz CH347, tryb SPI, częstotliwość 1–2 MHz (zwiększysz później).
  • Wybierz układ: MX25U12873F (lub najbliższy z listy).
  1. Diagnostyka
  • Read ID: producent C2h (Macronix), pozostałe bajty zależne od wariantu – ważne, by ID nie było 00/FF.
  • Read Status (SR1/SR2) i zanotuj bity BPx, SRP, CMP, TB, SEC.
  1. Usuwanie ochrony
  • Automatycznie: Unprotect (wiele wersji ASProgrammer robi: WREN → WRSR(00 00)).
  • Ręcznie (gdy automat zawodzi):
    a) 06h (WREN)
    b) 01h (WRSR) + dane: 0x00, 0x00 (BPx=0, SRP/SRP1=0, CMP=0)
    c) Odczytaj SR i potwierdź zmiany.
    Uwaga: jeśli SR się nie zmienia – WP# nie jest na HIGH lub SRP aktywne.
  • Dodatkowo (gdy kość „usypia”): wyślij „Resume from Deep Power-Down” (0xAB) przed operacjami (większość narzędzi robi to sama).
  1. Kasowanie i programowanie
  • Full Erase (Erase Chip) → Blank Check.
  • Program (Write) z pliku .bin/.rom → Verify.
  • Jeżeli weryfikacja losowo się nie zgadza: zmniejsz prędkość SPI, skróć przewody, popraw docisk klipsa, powtórz.

Warianty problematyczne:

  • „Erase failed / Write failed / Verify failed”: najczęściej 1,8 V-adapter „tylko zasilający” (bez level shiftingu) lub WP#=LOW. Czasem komunikat „Possible protection is enabled” można bezpiecznie zignorować – i tak przechodzi erase/program.
  • „SR nie daje się zapisać”: SRP/SRP1 aktywne + WP#=LOW – podciągnij WP# do VCC i powtórz WRSR.
  • „ID nieczytelny (FF/00)”: błędna orientacja klipsa, za duża prędkość, niepewne styki lub brak 1,8 V.

Aktualne informacje i trendy

  • ASProgrammer (różne fork-i, np. dregmod) oraz NeoProgrammer mają gotowe skrypty Unprotect/Erase/Program/Verify dla rodzin MX25U i obsługę CH347.
  • UsbAsp-flash (nowsze wydania) dodaje profile 1,8 V dla MX25U12873F oraz „Resume from Deep Power-Down” przed operacjami – przydatne przy problemach z „uśpioną” kością.
  • W praktyce serwisowej często wybiera się sekwencję z menu: unprotect → erase → program → verify; ostrzeżenie o ochronie w ASProgrammer bywa nieszkodliwe.

Wspierające wyjaśnienia i detale

  • TB/SEC: definiują „od góry” czy „od dołu” chroniony zakres. Gdy BPx>0 i CMP=0 – blokada obejmuje fragment od góry/dół zależnie od TB; przy CMP=1 – odwrócony obszar. Dlatego ustaw: BPx=000, TB=0, SEC=0, CMP=0.
  • SRP/SRP1: gdy (SRP1:SRP0) ≠ 00 i WP#=LOW, zapisu SR nie dokonasz – to najczęstsza pułapka.
  • WRSR w Macronix zwykle wymaga zapisania dwóch bajtów (SR1+SR2) po jednym WRSR.

Aspekty etyczne i prawne

  • Programowanie BIOS/flash powinno dotyczyć własnego sprzętu lub sprzętu powierzonego za zgodą właściciela.
  • Zmiany wsadu mogą naruszać gwarancję; przechowuj oryginalny odczyt (backup).

Praktyczne wskazówki

  • Zawsze wykonaj pełny backup (Read → Save) przed erase.
  • Odłącz zasilanie płyty, baterie (w laptopie także RTC) – unikniesz konfliktu z układem PCH/EC.
  • Jeśli programujesz wlutowaną kość – zapewnij stabilne 1,8 V z adaptera; nie „dokarmiaj” układu przez płytę.
  • Zaczynaj od 1 MHz, dopiero po stabilnej weryfikacji podnoś częstotliwość.
  • Używaj krótkiego, grubego kabla USB i portu o pewnym zasilaniu.

Ewentualne zastrzeżenia lub uwagi dodatkowe

  • „Adapter 1,8 V” musi obniżać poziomy logiczne wszystkich linii SPI, nie tylko VCC. Tanie płytki z samym LDO 1,8 V powodują błędy.
  • Czas pełnego kasowania 16 MB bywa długi; nie przerywaj „bo wisi” – obserwuj WIP.
  • Jeśli kość była choć raz podana 3,3 V – możliwe uszkodzenie bramek I/O (objawy: niestabilna weryfikacja).

Sugestie dalszych badań

  • Sprawdź w dokumentacji MX25U12873F mapę bitów SR1/SR2 i dokładne komendy „Block/Sector Protection”.
  • Przetestuj alternatywne narzędzia: NeoProgrammer, UsbAsp-flash (profil MX25U12873F_1.8V), komendy ręczne przez terminal (jeśli oprogramowanie to umożliwia).
  • Rozważ programatory z natywnym 1,8 V (RT809H, Dediprog) w środowisku serwisowym o dużej powtarzalności.

Krótkie podsumowanie

  • Sedno problemu: napięcie 1,8 V, WP#=HIGH, a następnie wyzerowanie BPx/SRPx w SR1/SR2.
  • W ASProgrammer przejdź przez Unprotect → Erase → Program → Verify; w razie potrzeby ręcznie: 06h → 01h + [00 00].
  • Zadbaj o jakość połączeń i właściwą prędkość SPI; ostrzeżenie „Possible protection…” często nie blokuje realnie zapisu.

Jeśli podasz: (a) odczyt ID, (b) wartości SR1/SR2 przed odblokowaniem, (c) zrzut z błędu ASProgrammer oraz zdjęcie podłączenia – wskażę dokładnie, które bity ustawić i jaką sekwencję wysłać w Twojej konfiguracji.

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.

Zadaj dodatkowe pytanie Sztucznej Inteligencji

Czekaj (2min)...