Firmware spi flash via lpt-poort. Hoe een tv te laten knipperen als deze niet wordt ingeschakeld?

Het spi-flashgeheugen opnieuw flashen als de firmware is gecrasht

Een van de meest voorkomende storingen van moderne lcd-tv's is de "rally" van de firmware.

In dit geval gaat de tv niet van de stand-bymodus naar het werk. Reageert niet op knopdrukken en commando's van de afstandsbediening. In de meeste gevallen kan een dergelijke storing worden verholpen door de SPI-Flash-geheugenchip te laten knipperen.

Ik zal de belangrijkste tekenen van de "rally" van de firmware opsommen:

    De tv gaat niet aan, hoewel er een stand-by-indicatie is. De indicator licht op. Merk op dat TV gaat helemaal niet meer aan. Als het van tijd tot tijd op commando's reageert en wordt ingeschakeld, is de storing hoogstwaarschijnlijk gerelateerd aan de voeding;

    De lcd-tv komt niet in de bedrijfsmodus door een commando vanaf het toetsenbord of door een commando vanaf de afstandsbediening. In sommige gevallen is er een reactie op het indrukken van de "Power" -knop - de indicator verandert van kleur, maar de tv gaat niet aan.

Wat is er nodig om een ​​geheugenchip te flashen?

USB programmer voor SPI-Flash 25 serie chips.

Als programmeur voor het flashen van geheugenchips gebruik ik al heel lang de Postal 3 USB-programmer, het is ook Postal AVR. Heb een setje gekocht voor zelf montage. Samen met los poeder, dat niet in de kit zit, kostte de programmeur me ongeveer 500 roebel. Ik heb het speciaal gekocht voor het flitsen van SPI-Flash-chips van lcd-tv's.

Nu kost de kit 550 roebel, maar alle SMD-kleinigheden zijn op het bord gesoldeerd. Link naar de site waar je Postal 3 (USB) kunt bestellen. Daar vindt u ook instructies voor het installeren en configureren van de software.

Zo ziet de programmeur er geassembleerd uit.

Natuurlijk zijn er nu andere programmeurs te koop (bijvoorbeeld CH341A).

U moet zich richten op onderhoudbaarheid, betaalbaarheid, de nodige functionaliteit en community-ondersteuning (het product moet populair zijn in de amateurradio-omgeving, toegankelijke documentatie en software hebben).

Als de handen gestrekt zijn en er tijd is, dan kun je de programmer zelf in elkaar zetten.

Om met de Postal 3 USB-programmer te werken, wordt een programma met dezelfde naam (Postal 2/3) gebruikt.

Actuele informatie over de Postal 3 programmer (signetpatroon, firmware voor de microcontroller, software, vragen/antwoorden, etc.) is te vinden in de gespecialiseerde onderwerpen op de monitor en reparatie van huishoudelijke apparaten en elektronica forums.

U kunt ook downloaden gedetailleerde handleiding voor knipperende geheugenchips verschillende series van Fedor (fsem) via de link (PDF-formaat).

Wat is firmware en waar kan ik het krijgen?

De firmware is een bestand in het formaat .bin, die soms ook een geheugendump of gewoon een dump wordt genoemd. Het is de firmware die de werking van de lcd-tv regelt.

Waar kan ik werkende firmware krijgen?

De eenvoudigste manier om een ​​geschikte firmware te vinden, is door een zin als: "uw apparaatmodel firmware (download)" in de Google-zoekbalk te plaatsen. Bijvoorbeeld "mystery mtv-3223lt2 firmware" of "mystery mtv-3223lt2 download firmware". Maar deze methode helpt niet altijd.

Werkende firmware is op internet te vinden op gespecialiseerde forums en sites waar radiomonteurs en servicemonteurs ze uitwisselen. De meest populaire internetbronnen van dit type zijn:

Hoe je kunt vinden wat je nodig hebt in de enorme oceaan van informatie is een aparte kwestie. Maar om je zoektocht succesvol te maken, geef ik nog een paar tips.

Vinden gewenste firmware kan op nummer moederbord(hoofdbord "a of lane). Het is ook het chassisnummer. We rijden het in de zoekopdracht en het woord firmware. Soms is het voldoende om alleen het chassisnummer aan te geven en de eerste pagina van de zoekmachine te bestuderen.

Het chassisnummer staat meestal op de printplaat. Op de onderstaande foto is het moederbord te zien. Rolsen TV RL-28D1307. Zoals u kunt zien, staat het chassisnummer erop - TP.VST59S.P89.

Firmware voor het apparaat gaat meestal vergezeld van een lijst, die de hoofdsamenstelling van de elektronische vulling aangeeft.

Dit is een lijst met de markering van de belangrijkste microschakelingen of blokken: processor (ook bekend als scaler), flashgeheugen, LCD-paneel (LCD-paneel), T-CON-bord, tunermodule, enz. Met behulp van deze lijst kunt u nauwkeurig bepalen dat de firmware is geschikt voor uw apparaat. Dit kan nodig zijn wanneer hetzelfde tv-model is voorzien van: verschillende versies, waarin andere componenten en blokken kunnen worden geïnstalleerd.

Besteed speciale aandacht aan het nummer van het LCD-paneel. Meestal wordt het op zijn lichaam aangegeven. Als alles in de lijst overeenkomt, maar het nummer van het LCD-paneel is anders, werkt uw tv mogelijk niet correct met deze firmware.

In vrij zeldzame gevallen is het niet mogelijk om de firmware voor het gewenste apparaat te vinden. Ik kon bijvoorbeeld geen firmware vinden voor de Hyundai H-LED19V15 lcd-tv. Maar toen ik het op chassisnummer (moederbord) begon te zoeken, ontdekte ik dat precies hetzelfde hoofd was geïnstalleerd in de Liberton LED 1910 ABHDR TV. Ik heb de firmware van hem overgenomen.

Het bleek dat deze twee tv-modellen complete klonen zijn. Het enige verschil is het merk. Het was grappig toen er bij het aanzetten van de Hyundai H-LED19V15 een splashscreen met het opschrift Liberton op het scherm verscheen.

Selectie van spi-flashgeheugen voor vervanging.

Flash-geheugen (SPI-Flash-geheugen) wordt gebruikt in moderne lcd-tv's, auto-mp3-ontvangers, DVR's van alle soorten, moederborden persoonlijke computers, settopboxen en zelfs in pratend speelgoed en fotolijsten.

In de regel gebruiken ze 25-serie SPI-Flash-geheugenchips (MX25L1633E, MX25L1605A, MX25Q32B-104HIP, W25Q32FVSSIG, G25Q16-15G, GD25Q32, HG25Q32BVSIG, enz.). De voeding voor deze serie microschakelingen is 3 volt (2,7 ... 3,6 V), in tegenstelling tot de 24e serie, die Nominale spanning de voeding is 5 volt en het type geheugen is anders.

Vaak wordt een onvolledige markering aangegeven op de behuizing van de microschakeling, zoiets als 25Q64BSIG, maar er is altijd een inscriptie 25Qxx, 25Lxx of iets dergelijks. In plaats van xx - codemarkering van de hoeveelheid geheugen van de microschakeling.

De microschakelingen hebben een SOIC-8-pakket voor vlakke montage.

Andere pakkettypes zoals SOIC-16 (300 mil) kunnen ook worden gebruikt.

Het is mogelijk dat je in de praktijk niet alleen spi-flash-microschakelingen met pinnen (pin), maar ook in koffers voor BGA-montage (op ballen) of met pinnen in de vorm van een contact (pad), bijvoorbeeld WSON- 8 (DFN-8 ). Gelukkig zijn dergelijke lcd-tv's vrij zeldzaam. Maar dit is voor nu...

In plaats van een native geheugenchip is het beter om een ​​nieuwe of een bekende goede te gebruiken. Native kan defect of defect zijn. Zelfs als we het met succes oversteken werkende firmware, dan is het geen feit dat de microschakeling in de toekomst correct zal werken.

Het is beter om de native SPI-Flash-chip niet weg te gooien of de native chip te lezen en op te slaan, fabrieksfirmware. Dit is een verzekering voor het geval dat nieuwe firmware zal niet passen.

Het gebeurt dat na het opnieuw flashen van de native geheugenchip met zijn eigen fabrieksdump, de tv begint te werken. Maar, zoals al gezegd, het is beter om de chip te vervangen door een nieuwe.

Naar mijn mening zijn de meeste firmware-crashes te wijten aan defecte geheugenchips, slecht geschreven software (firmware), of na stroomproblemen die leiden tot een onjuiste werking van de chip. Soms moet je de geheugenchips in tv's die voor reparatie zijn binnengekomen opnieuw flashen vanwege het uitvallen van de voedingselementen (door onweer of stroompieken).

Meestal vindt u in lcd-tv's 25Q32-chips van 32 Mbit (4 MB of 4194304 bytes) en 25Q64 van 64 Mbit (8 MB of 8388608 bytes).

Waarom 8388608 bytes en niet 8000000? Wie deze verwarring met kilobytes en megabytes niet begrijpt, en waarom het niet met 1000, maar met 1024 moet worden vermenigvuldigd, raad ik je aan om "Kibibyte" te googlen. Misschien verdrijf je voor jezelf een andere mythe, zoals het feit dat de stroom niet van plus "+" naar min "-" stroomt, maar omgekeerd.

Dus, met de theorie min of meer uitgedacht, laten we nu in de praktijk gaan.

Laat me je nogmaals aan iets belangrijks herinneren. Bij het repareren van een lcd-tv is de eerste stap om ervoor te zorgen dat de oorzaak ervan onjuist werk ligt precies in de "gevlogen" firmware. Evenzo komen storingen van de stroomvoorziening (in dienst of hoofd) tot uiting.

We zullen het geheugen opnieuw flashen aan de hand van de Mystery MTV-3223LT2 lcd-tv als voorbeeld. Op de foto werkt het al naar behoren.

De fout manifesteerde zich als volgt. De tv ging niet aan, maar wanneer u op de "Power" -knop op de afstandsbediening of het toetsenbord drukt, verandert de LED-indicator van kleur.

Open de achterklep van de tv. Tegelijkertijd is het beter om het op een bank of bed te plaatsen om schade aan de LCD-matrix te voorkomen.

We draaien de bouten rond de omtrek los achteromslag. Wees niet verbaasd als de LED-achtergrondverlichting aan is. Ik nam de foto op een werkende tv.

Bijna alle elektronische vulling gericht op één PCB.

Hier is een voeding en een DC / DC-omvormer om de LED-achtergrondverlichting van stroom te voorzien, en een scaler ( CPU), evenals de tunereenheid en versterker. Alles op één bord.

Op de sticker (V320BJ7-PE1) staat trouwens het LCD-paneelnummer van onze TV Mystery MTV-3223LT2 (V4N09) vermeld.

Na het bekijken van de printplaat en het meten van de hoofdspanningen, werd het duidelijk dat het "ijzer" werkte en dat de storing hoogstwaarschijnlijk te maken had met software onderdeel apparaat.

We verwijderen het bord om de geheugenchip los te solderen. Als u er niet zeker van bent dat u later, tijdens de montage, alle draden en kabels correct kunt aansluiten, dan doen wij dat! hoge kwaliteit foto of we schrijven / markeren wat en waar het op aansluit.

Nu moeten we een vervanging voor onze chip vinden. Zoals je ziet gebruikt deze tv 25Q64BSIG met een geheugencapaciteit van 8 MB (64 Mbit). In plaats daarvan zal ik een nieuwe W25Q64FVSIG-chip van Winbond installeren.

Soldeer vervolgens de chip. Voorheen lukte het me met een gewone soldeerbout en koperdraad, soms soldeerde ik met een heteluchtdroger soldeerstation. Maar nu gebruik ik Rosé legering. Je raakt er niets mee oververhit en de sporen op de printplaat laten niet los.

We solderen de chip en verwijderen de soldeerresten van de sporen met een koperen vlecht.

We wassen de fluxresten met isopropylalcohol. De plaats voor het installeren van het flitsende geheugen is klaar.

Nu is het tijd om het nieuwe flashgeheugen te flashen.

Het firmwarebestand voor de LCD TV Mystery MTV-3223LT2 (V4N09) kan worden gedownload via de link.

Omdat de microschakeling in een vlakke verpakking is gemaakt, is het wenselijk om een ​​adapter voor de firmware te hebben.

In het begin heb ik de draden eenvoudig aan de poten van de microschakeling gesoldeerd en in het programmeerpaneel gestoken. De bezetting is vervelend en het risico bestaat nog steeds dat de conclusies van de microschakeling worden afgebroken.

Moe hiervan kocht ik een adapteradapter van SOIC-8 / SOP-8 naar DIP-8 (200 - 208 mil). Hier is de link als iemand er een nodig heeft. en ik heb de details over Ali al verteld.

Naast adapters zijn er ook speciale clips om geheugen te flashen zonder te solderen, maar die heb ik nog niet gebruikt.

Let goed op onder welk stopcontact de adapter gaat. Er zijn er meerdere verschillende soorten behuizingen (150 mil, 170 mil) of TSSOP-8-behuizingen. Voor die mikruhs die in lcd-tv's zitten, heb je 200 209 mil nodig.

Sinds de conclusies van de adapter PLS-type:, dan kunt u het niet in het spantangpaneel op de programmer installeren. Ik heb een gewone DIP-8-aansluiting met schopcontacten die aan de programmeur zijn gesoldeerd. Daarom kan de adapter er gemakkelijk in worden gestoken.

We installeren het geheugen in de adapter en vergeten niet om de jumper op 3,3V op het programmeerbord te zetten. Laat me je eraan herinneren dat SPI-Flash-microschakelingen worden aangedreven door een spanning van 2,7 ... 3,6 V.

Wanneer u op de bovenplaat van de grendel drukt, lopen de paneelcontacten uiteen. We plaatsen de microschakeling op de contacten, observeren de pinout en laten de vergrendeling los. Laat me u eraan herinneren dat het uitgangsnummer van de microschakeling tegen de klok in wordt geteld, te beginnen bij de sleutel op de behuizing van de microschakeling. Intoetsen deze zaak is een ronde inkeping of stip op het lichaam.

Ik flash het geheugen met mijn oude laptop Acer Aspire 5510, die ook onder WinXP draait. We sluiten de programmer aan op de USB-poort van de computer.

Het kan ook geen kwaad om een ​​"daw" in het selectievakje te zetten " Auto"in het blok" auteur". Een kenmerk van SPI-Flash-chips is dat ze vereisen: volledig wissen voordat u gaat opnemen. Met de optie "Auto" wist het programma automatisch het geheugen van de microschakeling voordat het wordt opgenomen en voert het ook een controlevergelijking uit ( verifiëren) na het lezen of schrijven van de dump.

De proceslogboeken worden weergegeven in het venster aan de linkerkant. Van hen kunt u begrijpen wat het programma doet. Om de invoer in het logvenster te wissen, kunt u op de knop " Duidelijk".

De belangrijkste programma-instellingen worden ingesteld op het tabblad "Instellingen", dat kan worden geopend door te klikken op " Instellingen".

Zoals je kunt zien aan deze screenshot, als voorbeeld genomen, heeft het programma vastgesteld dat de chip het label GD25Q32 heeft en dat de geheugengrootte 4194304 bytes (4M-byte) is.

Op het tabblad Instellingen moet u een paar instellingen maken. Eerst moet je specificeren hoeveel geheugen onze chip heeft. Als we het hebben gecontroleerd met de knop "Versie", dan kijken we naar het volume in de logboeken.

Ik kies 8 M-byte voor de W25Q64. Wij drukken op "OK". Het kan ook geen kwaad om te controleren of het EEPROM-selectievakje niet is aangevinkt.

Vervolgens moeten we het dumpbestand specificeren dat we naar het geheugen zullen schrijven. Om dit te doen, drukt u in het hoofdvenster van het programma op de knop " open"tegenover het veld" Bronbestand (om te flashen)". Selecteer in het verkennervenster het firmwarebestand en klik op" Open".

Daarna verschijnt het pad naar het firmwarebestand in het invoerveld "Bronbestand (voor knipperen)".

Als daarvoor de inhoud van de microschakeling werd gelezen (" lezen"), dan kunnen we in plaats van Scan SPI Flash for Erase in de voortgangsbalk de inscriptie zien Wacht op bezet Wissen.

Als de geheugenchip nieuw is, meldt het programma dat de chip leeg is en niet hoeft te worden schoongemaakt (Chip is leeg, wissen niet nodig. Mogelijk DATA-lijn losgekoppeld?).

Als het chipgeheugen eerder met gegevens is geschreven, zal het programma het wissen en rapporteren (Chip is leeg. Alle gegevens = FF. Mag de DATA-lijn losgekoppeld zijn?).

Na voltooiing van de opname vindt verificatie plaats ( SPI Flash verifiëren).

In de meeste gevallen verloopt het opnameproces binnen enkele minuten foutloos.

Als het proces succesvol was, zullen in het logvenster de laatste regels zijn: SPI verifiëren 8388608 OK. usb-apparaat gesloten.

Mocht er iets niet lukken, dan is het antwoord op de vraag te vinden op de forums. Ik heb al links gegeven.

We solderen de microschakeling voor een bedrag de pinhole observeren!

We zijn blij met het werk van de lcd-tv.

En tot slot de disclaimer. Nou, zonder hem!?

Deze handleiding is in de eerste plaats bedoeld voor iedereen die verstand heeft van elektronica, maar ook voor beginnende radiomechanica en elektronica-ingenieurs. Ondanks het feit dat de flitsprocedure zelf niet ingewikkeld is, vereist het toch competentie en basisvaardigheden in het werken met elektronica. Alles wat u doet, doet u op eigen risico en risico!

Tijdens de volgende reiniging werd per ongeluk het verlengsnoer uitgeschakeld, waarop het besturingssysteem en de monitor waren aangesloten. Systeemonderdeel bestaat uit:
  • moederbord - ASRock B75 Pro 3
  • verwerker - Intel Core i5-3570
  • voeding - Corsair CX750M
Na het inschakelen van de systeemeenheid begon deze vijf vervelende piepjes te maken, wat lijkt te corresponderen met een processorstoring. De processor, te oordelen naar Yandex.Market, dit moment kosten vanaf 11.000 roebel. Kopen is vrij duur en goedkoop, maar je wilt niet zwak zijn. Over het algemeen was ik een beetje bang ...

Op internet gesnuffeld, kwam erachter dat de exacte oorzaak van de storing totaal anders kan zijn. Dit gaf me een beetje hoop. Maar je moet op de een of andere manier deze reden vinden.

Allereerst heb ik een andere oude PSU aangesloten - de computer start niet.

Voor verdere controles heb ik een autocomputer mee naar huis genomen. Samenstelling:

Het is goed dat de componenten uitwisselbaar zijn.

Ik heb de processor uit de autocomputer gehaald en in de thuiscomputer gestoken - de computer start niet. Maar er was hoop dat de processor nog steeds intact is en dat het moederbord defect is, wat een beetje goedkoper is (hoewel nieuwe op chipsets niet H61 en H67 schaars zijn).

Programmeren in feite

Het is goed dat de BIOS-chip niet is gesoldeerd, maar op een gewone DIP-8-socket. Ik heb geen programmeur, bestellen in China en een maand wachten is geen optie. Ik besloot een programmeur te maken van de laptop van mijn vrouw en beschikbaar te maken Arduino Nano. Ik snuffelde wat rond op internet ... Overal wordt de firmware meestal geüpload via de COM-poort, maar ik besloot hem vanaf een geheugenkaart te flashen (zo lijkt het veel sneller).

Het aansluitschema geschetst:

Alles verzameld voor broodplankje:

Het type en de grootte van de geheugenkaart, de manier waarop deze is geformatteerd, de bestandsnaam moet voldoen aan de vereisten van de Arduino SD-bibliotheek.

Om te beginnen heb ik een schets geschetst die de inhoud van SPI Flash leest en naar een bestand op een geheugenkaart schrijft, terwijl ik tegelijkertijd de controlesom berekent met behulp van de Checksum-32-methode, d.w.z. eenvoudige sommatie.

ReadFlash_WriteSD.ino

#erbij betrekken #define Flash_CS 9 #define SD_CS 10 #define FILENAME "BIOS.ROM" File myFile; SPIFlash-flits (Flash_CS); void setup() ( Serial.begin(115200); while (!Serial) () // Wacht op seriële poortverbinding // Initialisatie SD-kaart Serial.println("Initialiseren SD-kaart..."); if (!SD. begin(SD_CS)) ( Serial.println ("Initialisatie SD-kaart mislukt!"); return; ) Serial.println ("Initialisatie voltooid."); // Verwijderen oud bestand als er Serial.print(FILENAME); if (SD.exists(FILENAME)) (Serial.println("bestaat, verwijderen..."); SD.remove(FILENAME);) else (Serial.println("bestaat niet.");) // Maak een bestand en open het voor het schrijven van Serial.print("Creating"); Serial.print(FILENAME); Serial.println("..."); myFile = SD.open(FILENAME, FILE_WRITE); // Als creatie geslaagd en open het bestand - we zullen ernaar schrijven als (myFile) ( // Initialiseren van SPI Flash Serial.println ("Initialiseren van SPI Flash..."); flash.begin(); // Lees/schrijf blokken/pagina's van 256 bytes uint8_t data_buffer; // Aantal pagina's uint32_t maxPage = flash.getMaxPage(); // Checksum (32 bit) uint32_t checkSum = 0; for (int pagina = 0; pagina< maxPage; page++) { // Выводим прогресс работы if ((page % 1000) == 0) { Serial.print(page + 1); Serial.print("/"); Serial.println(maxPage); } // Читаем страницу SPI Flash flash.readByteArray(page, 0, &data_buffer, 256); // Записываем блок в файл на карте памяти myFile.write(data_buffer, 256); // Обновляем контрольную сумму for (int i = 0; i < 256; i++) { checkSum += data_buffer[i]; } } // Закрываем файл на карте памяти myFile.close(); // Выводим контрольную сумму Serial.print("Checksum-32: 0x"); Serial.println(checkSum, HEX); Serial.println("Done."); } else { // Если файл не создался, то выводим сообщение об ошибке Serial.println("Error creating "); Serial.println(FILENAME); } } void loop() { // Пустой цикл }


Ik heb de schets uitgevoerd, het resulterende bestand vergeleken met het originele BIOS - het bleek ongeveer 140.000 niet-overeenkomende bytes te zijn.

ReadSD_WriteFlash.ino

/* SPI-Flash-aansluiting: CS - D9 MOSI - D11 MISO - D12 CLK - D13 SD-Card Shield-aansluiting: CS - D10 MOSI - D11 MISO - D12 CLK - D13 */ #include #erbij betrekken #define Flash_CS 9 #define SD_CS 10 #define FILENAME "B75PRO31.90" Bestand mijnBestand; SPIFlash-flits (Flash_CS); void setup() ( Serial.begin(115200); while (!Serial) () // Wacht op seriële poortverbinding // Initialisatie SD-kaart Serial.println("Initialiseren SD-kaart..."); if (!SD. begin(SD_CS)) ( Serial.println("Initialisatie SD-kaart mislukt!"); return; ) Serial.println("Initialisatie voltooid."); if (!SD.exists(FILENAME)) ( Serial.print(FILENAME) ; Serial.println("bestaat niet."); return; ) // Open bestand voor het lezen van Serial.print("Opening"); Serial.print(FILENAME); Serial.println("..."); myFile = SD.open(FILENAME, FILE_READ); // Als het ons is gelukt om het bestand te openen, lezen we ervan if (myFile) (Serial.print("File"); Serial.print(FILENAME); Serial.println (" is open ."); // Initialisatie van SPI Flash Serial.println ("Initialiseren van SPI Flash..."); flash.begin(); // Wis de chip als (flash.eraseChip()) ( Serial.println ("Chip gewist. "); ) else ( Serial.println("Fout bij wissen chip."); return; ) // Lezen/schrijven in blokken/pagina's van 256 bytes uint8_t data_buffer; // Aantal pagina's uint32_t maxPage = flash.getMaxPage(); // Checksum (32 bit) uint32_t checkSum = 0; voor (int pagina = 0; pagina< maxPage; page++) { // Выводим прогресс работы if ((page % 1000) == 0) { Serial.print(page + 1); Serial.print("/"); Serial.println(maxPage); } // Читаем блок с карты памяти myFile.read(data_buffer, 256); // Записываем блок в страницу SPI Flash flash.writeByteArray(page, 0, &data_buffer, 256); // Обновляем контрольную сумму for (int i = 0; i < 256; i++) { checkSum += data_buffer[i]; } } // Закрываем файл на карте памяти myFile.close(); // Выводим контрольную сумму Serial.print("Checksum-32: 0x"); Serial.println(checkSum, HEX); Serial.println("Done."); } else { // Если файл не открылся - выводим сообщение об ошибке Serial.print("Error opening "); Serial.println(FILENAME); } } void loop() { // Пустой цикл }


Gelanceerd, gewacht, de schets vertoonde de controlesom, het viel samen met controlesom origineel bestand. Maar dit is de controlesom van het bestand op de geheugenkaart, maar ik heb de controlesom van de SPI Flash-inhoud nodig.

Het was mogelijk om de eerste schets te gebruiken, maar ik heb een derde geschreven, die alleen de controlesom van de SPI Flash-inhoud berekent met hetzelfde algoritme.

ChecksumFlash.ino

/* SPI-Flash-aansluiting: CS - D9 MOSI - D11 MISO - D12 CLK - D13 */ #inclusief #define Flash_CS 9 SPIFlash-flits (Flash_CS); void setup() ( Serial.begin(115200); while (!Serial) () // Wacht tot de seriële poort verbinding maakt // Deze code is nodig zodat de SD-kaart pinMode (10, OUTPUT) niet verstoort; digitalWrite (10, HIGH); // Initialisatie van SPI Flash Serial.println ("SPI Flash initialiseren..."); flash.begin(); // Pagina's van 256 bytes inlezen uint8_t data_buffer; // Aantal pagina's uint32_t maxPage = flash.getMaxPage(); / / Checksum (32 bit) uint32_t checkSum = 0; for (int pagina = 0; pagina< maxPage; page++) { // Выводим прогресс работы if ((page % 1000) == 0) { Serial.print(page + 1); Serial.print("/"); Serial.println(maxPage); } // Читаем страницу SPI Flash flash.readByteArray(page, 0, &data_buffer, 256); // Обновляем контрольную сумму for (int i = 0; i < 256; i++) { checkSum += data_buffer[i]; } } // Выводим контрольную сумму Serial.print("Checksum-32: 0x"); Serial.println(checkSum, HEX); Serial.println("Done."); } void loop() { // Пустой цикл }


De checksum van de SPI Flash kwam overeen met de checksum van het originele bestand.

Na het plaatsen van de geflitste BIOS-chip in thuis computer- hij heeft met succes verdiend.

In de leefomgeving Arduino IDE u moet de SPIFlash-bibliotheek installeren via bibliotheekbeheer.

De controlesom is berekend met behulp van de HEX-editor HxD.

PS: Aanvankelijk gebruikte ik deze als SD-module:

Maar er waren regelmatig problemen mee, de SD-kaart was niet geïnitialiseerd. De "hot" herverbinding van de SD-kaart zelf hielp met de Arduino aangesloten op de computer.

PPS: In plaats van weerstanden heb ik geprobeerd een bidirectionele signaalomvormer aan te sluiten:

Maar het schema werkte niet bij hem.

Bijna allemaal modern elektronische techniek er zijn geheugenchips van series als: 25LVxxx, WINBOND, enz. Ze waren verenigd gemeenschappelijke naam SPIFLASH. Ik doe veel reparaties en zo'n programmeur is bijna altijd bij de hand.

Ik heb veel programmeurs voor elke processor opnieuw gedaan en kwam tot de conclusie dat het gemakkelijker en sneller is om het flashgeheugen zelf los te solderen en op zijn plaats te solderen dan door de ingewanden van internet te snuffelen en te zoeken hoe het apparaat door de verwerker. Er was zelfs een satellietontvanger waarbij om onbekende reden de serviceconnector niet werkte. Er was maar één uitweg. Soldeer spiflash en flash het met een programmeur. Na het knipperen en het installeren van de microschakeling, kwam het apparaat tot leven.

Rijst. 1. Schema van de Spiflash-programmeur

Het schema is eenvoudig en zal geen problemen veroorzaken. 100 ohm weerstanden kunnen worden gewijzigd in het bereik van 47-100 ohm. Weerstanden van 4,7 kOhm kunnen worden gewijzigd in het bereik van 3,9-6,2 kOhm. Het circuit wordt gevoed door een 3,3 V-bron.

De printplaat biedt bedrading voor eenling. Het kan elk klein formaat zijn, bijvoorbeeld LM117 3.3v. Laat me uitleggen waarom: het circuit wordt aangedreven door: USB poort Welnu, er is een spanning van 5 V en onze flashdrives werken precies vanuit een 3,3 V-bron. We hoeven dus geen verbinding te maken externe bron voeding.

Ik denk dat je er zelf wel achter komt. Het is vergelijkbaar in zijn dringende functies met andere firmwareprogramma's.

De methode voor het installeren van een microschakeling voor firmware: Soldeer de flitser. We verwijderen overtollig soldeer van haar benen. We leggen de microschakeling op tafel en plaatsen er iets van 0,5 mm dik onder, zodat dit substraat de poten van de microschakeling niet hindert. We buigen de benen naar de tafel. Dit wordt gedaan zodat er een opening is tussen de microschakeling en de tafel. We leggen de microschakeling op het programmeerbord, combineren de poten van de microschakeling met de sporen van het programmeerbord en drukken erop met een plastic wasknijper (omdat we eerder een opening hebben gemaakt, wordt de microschakeling stevig aangedrukt met zijn poten om de sporen van het programmeerbord en de behuizing hindert het niet). Ik heb ze eerder gesoldeerd. Deze procedure is saai.


Ook vaak bekeken met dit schema:

De eeprom-flashgeheugenchips uit de 25xxx-serie worden veel gebruikt in de micro-elektronica. In het bijzonder in moderne tv's en moederborden in 25xxx BIOS-firmware is opgeslagen. Knipperen van 25xxx wordt uitgevoerd door SPI-interface, wat het verschil is tussen deze microschakelingen en het flashgeheugen van de 24xxx-familie, die zijn genaaid met i2c (vierkante bus).

Om 25xxx te lezen / wissen / schrijven heb je dus een SPI-programmeur nodig. Een van de goedkoopste programmeeropties voor dit doel is de USBasp, die belachelijk veel geld kost - met slechts ongeveer $ 2 verzendkosten op eBay. Ooit kocht ik er een voor mezelf om microcontrollers te programmeren. Nu moest ik niet een microcontroller, maar een SPI-flitser flashen, en er werd besloten om die te gebruiken.

Vooruitkijkend zal ik zeggen dat de firmware van Tifa werkt, 25xxx-microschakelingen zijn genaaid. Trouwens, naast 25xxx is de aangepaste programmer ontworpen om te werken met 24xxx en Microwire.

1. USBasp knippert

Eerst moet je contacten J2 sluiten:

Persoonlijk heb ik de schakelaar niet alleen gesloten, maar in de contacten gesoldeerd:

Wanneer J2-contacten gesloten zijn (dit is mijn schakelaar in de juiste positie), gaat USBasp in gereedheid om te knipperen.

USBap kan zichzelf niet reflashen, dus er is een andere programmeur nodig. USBasp bevindt zich als het ware in de positie van een chirurg die zijn eigen blindedarm niet kan verwijderen en vraagt ​​een vriend om te helpen. Voor het flashen van USBasp heb ik een zelfgemaakte AVR910 programmer gebruikt, maar voor een keer soldeer je de 5-draads programmer snel in een paar minuten, die uit slechts één LPT-connector en 5 weerstanden bestaat.

We verbinden de programmeur met USBasp:



Nu gaan we naar het forum van alternatieve firmware van Tifa, in de bovenste post vinden en downloaden we het archief met nieuwste firmware en software.

We vinden daar het mega8.hex-bestand, dit is het alternatieve firmware voor USBasp.

Voer CodeVisionAvr uit (ik gebruik versie 2.0.5), stel de programmerinstellingen in: Instellingen-> Programmer.

Stel de opname-instellingen in: Tools->Chip programmer. Wij kiezen voor de Atmega8L chip, dit is precies wat er op de USBasp zit. We leggen geen zekeringen bloot - de benodigde zekeringen zijn al in de chip geflitst. De rest van de instellingen blijven als standaard.

Wissen oud programma USBasp: Programma-> Chip wissen.

Open het firmwarebestand mega8.hex: Bestand-> Flash laden.

Knipperende USBasp: Programma-> Flash.

Als de opname doorging en geen foutmelding gaf, werd de alternatieve firmware met succes in USBasp geflitst. Nu kan USBasp niet alleen AVR-microcontrollers naaien, zoals voorheen, maar ook werken met flash-geheugen. We openen contacten J2 zodat USBasp terugschakelt naar programmeermodus.

Laten we nu eens kijken of Windows 7 x86 deze programmeur ziet. We plaatsen USBasp in USB en ... het systeem schrijft "USBasp kan geen stuurprogramma vinden." Het is duidelijk dat u de driver moet installeren. Maar er zijn geen stuurprogramma's in het gedownloade forum, ze moeten worden gedownload op de USBasp-homesite, de originele stuurprogramma's zijn ook geschikt voor de gewijzigde programmeur. Gedownload, geïnstalleerd, Win7 zag de programmeur, alles is in orde. Ik programmeer echter micro-elektronica op een laptop met WinXP, deze ziet ook de programmeur na het installeren van de stuurprogramma's.

2. Platform voor USB-aansluitingen asp naar 25xxx DIP-chip

Nu moeten we een platform voorbereiden voor het programmeren van 25xxx. Ik deed het op een breadboard als volgt:

3. Knipperende 25xxx-chips via USBasp

Om 25xxx via een aangepaste USBasp te flashen, wordt het programma AsProgrammer gebruikt, dat ook in .

Laten we bijvoorbeeld werken met een Winbond 25x40 chip. We starten AsProgrammer, stellen de SPI-bedrijfsmodus in en selecteren het chiptype: Chip-> SPI-> Winbond-> ...

... en we zien dat W25X40 niet op de lijst staat. Welnu, vul dan de microcircuitparameters handmatig in. We vinden de handleiding voor Winbond 25X40 en daar op pagina 4 zien we de volgende parameters:

We voeren deze parameters hier in:

We verbinden USBasp met de computer en de Winbond 25x40 chip:

Met behulp van de knoppen "lezen", "schrijven", "wissen", controleren we de werking van de programmeur:

U hoeft er alleen rekening mee te houden dat voordat u iets naar de microschakeling schrijft, u eerst moet instellen: Instellingen-> Schrijfcontrole, zodat na het schrijven van de firmware naar de microschakeling wordt gecontroleerd op overeenstemming met wat is geschreven naar wat werd uiteindelijk opgeschreven. Dit is belangrijk, want als de firmware niet op een schoongemaakte chip is gemaakt, wordt de duivel erin geschreven. Daarom moet u eerst de chip wissen en vervolgens alleen schrijven.

Dankzij de firmware van Tifa kan een goedkope Chinese USBasp-programmeur nu werken met eeprom 25xxx flash-geheugenchips. Theoretisch kan het nog steeds werken met 24xxx en Microwire, maar ik heb het alleen getest met 25xxx.

UPD1:
Het blijkt dat dezelfde firmware naar de AVR910-programmeur kan worden geschreven. Dan werkt het ook met 25xxx flashgeheugen:

BIOS-chipprogrammeur voor moederborden, laptops, dvd's, videokaarten, enz. 24 EEPROM en 25 SPI FLASH op CH341A via USB

USB mini-programmeur CH341A wordt gebruikt om BIOS-chips te programmeren voor computermoederborden, laptops, grafische kaarten, multimediaspelers, tv-geheugen, LCD's, routers, spelcomputers, satellietontvangers, T2-ontvangers, 24 EEPROM, 25 SPI FLASH, enz. De programmer is iets groter dan een flashstation en is gemonteerd op USB-chip bus converteren chip CH341A.

De P/S-jumper dient als modusschakelaar voor de CH341A-chip als USB-converter > Parallelle poort(parallel) of USB > Seriële poort(Serie). Gebruikt met programmeur software waarvoor de CH341A nodig is om te werken als een USB > Parallel-converter, dus de jumper moet worden ingesteld en de contacten moeten worden gesloten.

CH341A-programmeur heeft stuurprogramma's en software voor bediening Windows-systemen 98, Windows ME, Windows 2000, Windows XP, Windows Vista en Windows7.

Installatie van stuurprogramma. Om de programmer te gaan gebruiken, moet je hem eerst aansluiten op de USB-poort van de computer, ook zonder dat er een chip in het blok is geïnstalleerd. Als de programmeur werkt en met USB-connector computer alles in orde is, dan moet de LED op de behuizing van de programmer gaan branden, wat aangeeft dat er stroom is, en uw computer zal een geluid maken om u te informeren dat er een nieuw USB-apparaat is geplaatst. Daarna besturingssysteem zou moeten beginnen met zoeken naar stuurprogramma's en als gevolg daarvan zullen ze hoogstwaarschijnlijk NIET worden gevonden. Daar is niets mis mee. Het installeren van het programmeerstuurprogramma is hetzelfde als voor elk USB-apparaat. We gaan alles zelf doen, zoals ze "handmatig" zeggen. We drukken op de combinatie Win sleutels+ Pauzeer, of open gewoon Apparaatbeheer. In de lijst met apparaten voor onbekend apparaat specificeer het pad naar het stuurprogramma (pak ze van tevoren uit uit het archief, dat hieronder op de pagina kan worden gedownload), dit moet een bestand zijn ch341wdm.inf. De tweede manier om het stuurprogramma te installeren, is door het bestand uit te voeren ch341par.exe met beheerdersrechten en de driver zal zichzelf installeren. Als het stuurprogramma correct is geïnstalleerd, kunt u doorgaan met het programmeren van de chips.

De chip in de programmer installeren. Nodig! Haal de programmeur eruit USB-connector computer. Als u een chip programmeert op het ZIF-programmeerpaneel, moet u de vergrendelingsknop optillen om de sleuven te openen voor het installeren van de chip. Het is noodzakelijk om de chip die u gaat programmeren los te koppelen van het eindapparaat (verwijder hem van het moederbord, verwijder hem uit de laptop, enz.), en installeer de chip volgens de sleutel in de sleuven van de programmeur (de locatie van de sleutel moet overeenkomen met de markering in de buurt van de socket op de programmer, waar 25xx is geschreven of 24xx). Vervolgens moet u de vergrendelingshendel laten zakken om de chip in het blok te fixeren. Als u microschakelingen uit de 25-serie in het SOP8- of SOP16-pakket moet programmeren, dan heeft het programmeerbord één pad voor dit soort pakketten. U kunt de microschakeling op het contactvlak aansluiten door te solderen of door de pootjes van de microschakeling voorzichtig mechanisch vast te zetten (druk erop met een plastic krokodil of wasknijper). Als de chip is geïnstalleerd, verbinden we de programmer met de chip aan boord weer met de computer in de USB-poort en voeren we het programma uit CH341A.exe. Verbindingsgeluid horen USB-apparaten en verheug je op de succesvolle eerste stap.

Hoe chips te programmeren. Dit is waar het plezier begint. Ik zal niet beschrijven hoe met het programma te werken, maar ik raad aan om verschillende video-instructies te bekijken voor het werken met deze programmeurs. Video-instructies kunnen hieronder op deze pagina worden bekeken.

Notitie 1: De programmeur flitst de chips vrij snel, maar sommige soorten microschakelingen zijn een beetje traag. Het hangt allemaal af van de grootte van de chip en het type ervan.

Programmeur circuit:

Hier zijn bijvoorbeeld slechts enkele soorten ondersteunde chips:

  • ATMEL
    AT25DF041A AT25DF321 AT25F004 AT25F512A AT25F2048 AT25F4096 AT25F1024A AT25FS010 AT25FS040 AT26DF081A AT26DF161A AT26DF321 AT26F004
  • eon
    EN25B05 EN25P05 EN25B10 EN25P10 EN25BF20 EN25P20 EN25F20 EN25B40 EN25P40 EN25F40 EN25B80 EN25P80 EN25F80 EN25T80 EN25B16 EN25P16 EN25B32 EN25P32
  • Excel Semiconductor Inc.
    ES25P10, ES25P20, ES25P40, ES25P80, ES25P16, ES25P32
  • ST
    M25P05A M25P10A M25P20 M25P40 M25P80 M25P16 M25P32 M25P64 M25PE10 M25PE20 M25PE40 M25PE80 M25PE16 M25PE32 M45PE10 M45PE20 M45PE43 M45PE16
  • MXIC
    MX25L512, MX25L1005, MX25L2005, MX25L4005, MX25L8005, MX25L1605, MX25L3205, MX25L6405, MX25L6445, MX25L6405(SOP16)
  • NexFlash
    NX25P80, NX25P16, NX25P32
  • Chingis Technology Corporation
    Pm25LV512, Pm25LV010, Pm25LV020, Pm25LV040, Pm25LV080, Pm25LV016, Pm25LV032, Pm25LV064
  • Saifun Halfgeleiders
    SA25F005, SA25F010, SA25F020, SA25F040, SA25F080, SA25F160, SA25F320
  • WINBOND
    W25P10 W25X10 W25Q10 W25P20 W25X20 W25Q20 W25P40 W25X40 W25Q40 W25P80 W25X80 W25Q80 W25P16 W25X16 W25Q16 W25P32 W25X32

En anderen. Meer volle lijst kijk naar deze foto.

Opmerking 2: Uit persoonlijke praktijk, zelfs als de chip die u nodig heeft niet in de lijst met flitsbare staat, of het programma het type van uw chip niet automatisch correct kan bepalen, kunt u handmatig een vergelijkbare chip selecteren met dezelfde hoeveelheid geheugen en proberen deze te flashen . Meestal lukt het 99% van de tijd.

Notitie 3: een van de meest frequente storingen programmeur, is er meestal een "vertrek" van de stabilisator voor 3,3V-voeding (meestal een kleine microschakeling van de 1117-serie). Tegelijkertijd stopt de programmeur met het detecteren van microschakelingen die in de socket zijn geplaatst, en het schrijf- / leesproces duurt bijna een eeuwigheid. De stabilisator brandt door bij foutieve installatie van microschakelingen in het stopcontact zonder de polariteit in acht te nemen, evenals bij installatie van defecte microschakelingen. Om de functionaliteit van de programmeur te herstellen, is het noodzakelijk om de microschakeling van de vermogensstabilisator te vervangen.

Om met vlakke (SMD) microschakelingen te werken, hebt u mogelijk adapters (adapters) nodig TSU-D08/SO08-150 voor 24xx en 93xx chips of DIP08/SO08-208 voor 25xx-chips:

Adapter-wasknijper voor flitsende chips ZONDER SOLDEREN. Met deze programmer is het erg handig om een ​​wasknijperadapter te gebruiken voor het flashen van BIOS-chips ZONDER SOLDEREN. Het is erg handig om een ​​adapter te gebruiken als er geen manier is om de microschakeling voorzichtig los te solderen zonder aangrenzende onderdelen en connectoren op het bord te beschadigen. In sommige gevallen interfereren de voedingscircuits van de microschakeling, gescheiden op het bord van uw apparatuur, en kan de programmeur de microschakelingen niet voeden. In dit geval is het firmwareproces zonder de microschakeling te solderen onmogelijk.

U kunt de programmer in onze winkel bestellen met levering in Oekraïne. Levertijd naar uw stad 2-3 dagen. Verzending op de dag van betaling. De kosten van de programmeur en de complete set staan ​​vermeld in de tabel. Betaling met PrivatBank-kaart of WebMoney (WMZ). Zoals u kunt zien aan het einde van deze pagina.

Prijslijst voor programmeurs:

Naam, foto

Apparatuur

Prijslijst accessoires:

Naam, foto

Apparatuur

Je kunt ook video-instructies bekijken voor programmeurs van deze serie:

Programmeersoftware:
  • Programmeur bestuurder: CH341PAR_drivers.rar
  • Stuurprogramma RS232-poort: