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:
- Zapewnij rzeczywiste 1 ,8 V na VCC i podciągnij piny WP# oraz HOLD# do VCC.
- W ASProgrammer (≥ v1.4.1) wybierz układ „MX25U12873F”, kliknij „Detect” i odczytaj rejestry SR1/SR2.
- Jeśli bity BPx lub SRP ≠ 0, wyślij sekwencję:
• WREN (06h) → WRSR (01h) + 00 (SR1) + 00 (SR2) → power-cycle.
- Sprawdź, czy SR1/SR2 = 00 00; następnie kasuj („Erase”) i programuj („Program”).
Szczegółowa analiza problemu
1. Sprzęt
- 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.
- Połączenia SPI:
CS#↔CS, CLK↔SCLK, MOSI↔SI/IO0, MISO↔SO/IO1, GND↔GND, VCC↔1 ,8 V.
- 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)
- Read SR → zapisz wartości (log diagnostyczny).
- WREN 06h.
- WRSR 01h 00 00 (zeruje SR1 i SR2).
- Odczytaj SR ponownie – wszystkie BP/SRP muszą być 0.
- 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
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.
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.