Fråga:
Hur dumpar jag flashminne med SPI?
samuirai
2013-06-26 16:30:07 UTC
view on stackexchange narkive permalink

Ofta ansluts flashminne via SPI (Serial Peripheral Interface Bus) till en processorenhet som en ARM-kärna eller en mikrokontroll.

  • Hur kan man dumpa minnet?
  • Kan det finnas skyddsmekanismer?
  • Finns det fallgropar att undvika?
Denna fråga är för allmän. Att använda en SPI-blixt är praktiskt taget trivialt. Och om du vill ha mer detaljer bör du hänvisa till databladet för din enhet snarare än stackexchange. Om du hade en fråga om en viss enhet .... kan det vara lättare att svara på det.
Det kan vara trivialt för dig, men det kan inte vara trivialt för andra. För vissa människor är det första gången de gör detta och de söker vägledning. Varför inte ha några allmänna tips på denna RE Q & A-webbplats? Dumpning av flashminne är en vanlig uppgift för att reversera hårdvara. Så ew coukd-punkt vid BusPirate- eller Arduino-koden för att göra det. Min fråga är ett försök att få 'hårdvara' mer exponering.
Sedan borde de fråga på EE-stackexchange. Det finns ingen anledning att ställa en fråga om något som sannolikt är tydligt dokumenterat på RE. Om någon ställer en fråga om en viss enhet kommer de att vara välkomna att göra det annars blir quesiton i princip en lista över datablad!
EE-människor har ofta laboratorier med speciell hårdvara och vet exakt vilka marker de har att göra med. Kort sagt fungerar de inte nödvändigtvis under liknande förhållanden. Ett svar från RE-synvinkel kommer att vara användbart.
Jag tycker att det här är en relativt bra fråga - det finns ett antal punkter som kan tas upp som läsning på plats eller tas bort, läsa upp hela innehållet vs sniffa i användning.
Jag använde en programmerare för att läsa och skriva blixt innan jag hade löst upp den från tavlan.
När du försöker dumpa minnet medan du håller enheten i kretslopp. det kan vara till hjälp att tvinga processorn att återställa (fortsätt att trycka på återställningsknappen eller ställa in återställningsstiftet till GND) så att värdprocessorn frigör chipvalstift och ett annat verktyg kan kommunicera med det.
Ett svar:
ixje
2013-09-12 22:01:43 UTC
view on stackexchange narkive permalink

Även om jag tycker att frågorna är för breda och jag håller med @ cb88 att databladet ska ge dig allt du behöver veta, ska jag försöka svara på några.

Hur man dumpar minnet

  1. Avlödning

    Det första alternativet är avlödning av chipet från kortet. Efter att ha gjort det har du två alternativ

    • Läs ut chipet med en chipprogrammerare som t.ex. Dataman som stöder ditt chip ($$$ dyr lösning).
    • Eller använd en billig mikrokontrollbaserad lösning som en Bus Pirate, en Ardunio eller kod din egen dumper (som i allmänhet inte är för svår).
  2. I krets

    När du kan 't eller vill inte ta bort chipet har du igen två alternativ.

    • Först använder man igen en professionell programmerare eller de billiga mikrokontrollbaserade som nämns ovan. Det finns definitivt några fallgropar med den här metoden som jag kommer att beskriva när du svarar på din tredje fråga
    • Alternativt kan du övervaka SPI-linjerna och använda en Logic Analyzer eller mikrokontroller för att avkoda signalerna. Nackdelen är att du inte kontrollerar adresserna som läses och att du på något sätt måste generera aktivitet till SPI Flash och sedan rekonstruera flash-bilden baserat på adresserna som nås.

Du kan också använda ett klipp som är utformat för att fästa analysatorn till chipet i systemet.

I allmänhet skulle jag rekommenderar verkligen att avlasta chipet. De är nästan, om inte alltid kantförpackade (t.ex. med tydligt synliga stift på utsidan av paketet) och inte Ball Grid Array (BGA) -paket. Detta gör dem lätta att ta bort och även lätta att sätta tillbaka. Det kommer att spara huvudvärk du kan stöta på som jag beskrev i avsnittet om fallgropar nedan.

Skyddsmekanismer

  • OTP-minne Några av dessa marker kan innehålla OTP-minne (One-Time Programmable) där de lagrar skyddsbitar. Jag har bara sett att detta används för att låsa området mot skrivning, inte mot läsning. Annars, vad är poängen med att ha flashminnet?

  • Kryptering Jag har aldrig sett eller kunde snabbt hitta några SPI-flashchips som erbjuder kryptering. Detta implementeras vanligtvis i en minneskontrollant på System on a Chip (SoC) -sidan som gör det i farten och håller det snyggt och transparent för värd-CPU: n.

Fallgropar för att undvika

Några saker att tänka på;

  • Jag har nästan inga bra erfarenheter när jag försöker dumpa minnet medan jag håller enheten i kretsloppet. Det finns många anledningar till att detta kan gå fel.
    1. Värdprocessorerna håller SPI-flashen upptagen medan den kör sitt eget program
    2. En vakthund på värdsidan återställer brädet eftersom det är perifert blev otillgängligt för länge på grund av att du har tillgång till det
    3. När du väljer att tillhandahålla strömmen till chipet själv kan din programmerare / läsare kanske inte leverera tillräckligt med ström om det finns flera komponenter på samma power rail
  • Om du skriver din egen sniffer, se till att den kan sampla signalerna tillräckligt snabbt. Till exempel kommer busspiraten att misslyckas i alla fall eftersom den bara kan sampla vid max ~ 32MHz där många SPI-blixtar börjar vid 40 + MHz. Så du måste åtminstone dubbla målhastigheten ( Samplingsteor)

    Blixtapparaterna kan fungera i olika hastigheter upp till 100 + MHz som relaterar till de olika lägena (normalt läsa, snabbläsa, dubbelläsa, fyrläsa etc) de är i. Ett sådant läge ändrar inte bara hastigheten utan också hur data överförs. Till exempel i Quad Read-läge klockar blixten ut fyra bitar åt gången med SI / SO / WP / Hold-signaler istället för "klassiskt" läge där du läser ut 1 bit per klockcykel från SO (Serial Out).

  • När du agerar som värd, se bara till att du ger tillräckligt med ström och att signalerna är höga / låga vid rätt tidpunkter. All denna information finns i databladet för flashchips.

Jag skulle först se om jag inte bara kunde hålla processorn i återställning och sedan bara skanna ut spi-porten. Ingen mening med att lösa upp ett helt chip när du kan tvinga det till high-z. Den andra anteckningen skulle vara att se om det finns noll ohm / 100ohm inline-motstånd på clk / SDI / SDO-stiften och ta bort dem om så är fallet och byt ut med din sond. Men bra kommentarer ... bara några ytterligare saker att tänka på.


Denna fråga och svar översattes automatiskt från det engelska språket.Det ursprungliga innehållet finns tillgängligt på stackexchange, vilket vi tackar för cc by-sa 3.0-licensen som det distribueras under.
Loading...