Otázka:
Jak vypsat flash paměť pomocí SPI?
samuirai
2013-06-26 16:30:07 UTC
view on stackexchange narkive permalink

Flash paměť je často připojena přes SPI (Serial Peripheral Interface Bus) k procesorové jednotce, jako je jádro ARM nebo mikrořadič.

  • Jak lze vypsat paměť?
  • Mohou existovat ochranné mechanismy?
  • Je třeba se vyhnout nástrahám?
Tato otázka je příliš obecná. Přístup k blesku SPI je prakticky triviální. A pokud chcete další podrobnosti, měli byste spíše odkazovat na datový list vašeho zařízení než na stackexchange. Pokud byste měli otázku ohledně konkrétního zařízení ..., mohlo by být jednodušší odpovědět.
Může to být triviální pro vás, ale nemusí to být triviální pro ostatní. Pro některé lidi je to poprvé, co to dělají, a hledají radu. Proč nemáte nějaké obecné tipy na tomto webu s otázkami a odpověďmi RE? Dumpingová paměť typu flash je běžným úkolem při couvání hardwaru. Takže pokud chcete, ukažte na kód BusPirate nebo Arduino. Moje otázka je pokusem získat více hardwaru.
Pak by se měli zeptat na EE stackexchange. Není důvod klást otázky ohledně něčeho, co je s největší pravděpodobností jasně zdokumentováno na RE. Pokud se někdo zeptá na konkrétní zařízení, pak by to uvítal, jinak se dotaz v zásadě změní na seznam datových listů!
Lidé s EE mají často laboratoře se speciálním hardwarem a přesně vědí, se kterými čipy pracují. Stručně řečeno, nemusí nutně fungovat za podobných podmínek. Užitečná bude odpověď z pohledu RE.
Myslím, že je to relativně dobrá otázka - existuje řada bodů, které lze vznést, jako je čtení in-situ nebo odebrání, čtení celého obsahu vs. použití čichání.
Dříve jsem používal programátor ke čtení a zápisu blesku, poté, co jsem ho odpojil od desky.
Při pokusu o výpis paměti při zachování obvodu zařízení. může být užitečné vynutit resetování procesoru (stisknout resetovací tlačítko nebo nastavit resetovací kolík na GND), čímž uvolní pin pro výběr čipu hostitelského procesoru a může s ním komunikovat jiný nástroj.
Jeden odpovědět:
ixje
2013-09-12 22:01:43 UTC
view on stackexchange narkive permalink

Ačkoli si myslím, že otázky jsou příliš široké a souhlasím s @ cb88, že datový list by vám měl poskytnout vše, co potřebujete vědět, pokusím se na některé odpovědět.

Jak vypsat paměť

  1. Odpájení

    První možností je odpájení čipu z desky. Poté máte dvě možnosti.

    • Přečtěte si čip pomocí programátoru čipů, jako je např. Dataman, který podporuje váš čip ($$$ drahé řešení).
    • Nebo použijte levné řešení založené na mikrořadiči jako Bus Pirate, an Ardunio nebo kódujte svůj vlastní sklápěč (což obvykle není příliš těžké).
  2. V okruhu

    Kdy můžete 'nebo nechcete odstranit čip máte znovu 2 možnosti.

    • První z nich je opět použití profesionálního programátora nebo výše zmíněných levných mikroprocesorů. Tato metoda rozhodně obsahuje několik úskalí, které popíšu při zodpovídání vaší třetí otázky.
    • Alternativně můžete sledovat řádky SPI a dekódovat signály pomocí logického analyzátoru nebo mikrořadiče. Nevýhodou je, že nekontrolujete adresy, které se čtou, a tak musíte nějak vygenerovat aktivitu do SPI Flash a poté rekonstruovat flash obraz na základě adres, ke kterým se přistupuje.

Můžete také použít klip, který je určen k připojení analyzátoru k čipu v systému.

Obecně bych opravdu doporučujeme odpájet čip. Jsou téměř, ne-li vždy, zabaleny na hraně (např. Mají jasně viditelné kolíky na vnější straně obalu) a nejsou balíčky Ball Grid Array (BGA). Díky tomu je lze snadno vyjmout a také snadno vložit zpět. Ušetří vám bolesti hlavy, se kterými se můžete setkat, které jsem popsal v sekci nástrah níže.

Ochranné mechanismy

  • Paměť OTP Některé z těchto čipů mohou obsahovat jednorázovou programovatelnou paměť (OTP), do které ukládají ochranné bity. Viděl jsem, že se to používá pouze k uzamčení oblasti proti psaní, ne proti čtení. Jinak jaký má smysl mít flash paměť?

  • Šifrování Nikdy jsem neviděl ani jsem nemohl rychle najít žádné flash čipy SPI, které nabízejí šifrování. To je obvykle implementováno v řadiči paměti na straně systému na čipu (SoC), který to dělá za běhu a udržuje to pěkné a transparentní pro hostitelský procesor.

úskalí vyhnout se

Některé věci, které je třeba mít na paměti;

  • Nemám téměř žádné dobré zkušenosti při pokusu o výpis paměti a udržení zařízení v obvodu. Existuje mnoho důvodů, proč by se to mohlo pokazit.
    1. Hostitelské procesory udržují SPI Flash zaneprázdněný spuštěním vlastního programu
    2. Watch-dog na straně hostitele resetuje desku, protože je periferní na příliš dlouhou dobu nepřístupný kvůli vašemu přístupu
    3. Pokud se rozhodnete čip napájet sami, nemusí váš programátor / čtečka být schopen dodávat dostatek proudu, pokud je na stejné napájecí liště více komponent
  • V případě, že píšete svůj vlastní sniffer, ujistěte se, že dokáže dostatečně rychle vzorkovat signály. Například pirát sběrnice selže ve všech případech, protože může vzorkovat pouze při max. ~ 32MHz, kde přidělení SPI Flashů začíná na 40 + MHz. Budete tedy potřebovat alespoň dvojnásobnou cílovou rychlost ( Věta o vzorkování)

    Zařízení Flash mohou pracovat při různých rychlostech až 100 + MHz, které se vztahují k různým režimům (normální read, fast read, dual read, quad read atd.), ve kterých jsou. Takový režim nezmění jen rychlost, ale také způsob přenosu dat. Například v režimu Quad Read blesk vypíná 4 bity bitů najednou pomocí signálů SI / SO / WP / Hold namísto „klasického“ režimu, kde odečítáte 1 bit za taktovací cyklus ze SO (Serial Out).

  • Pokud jednáte jako hostitel, ujistěte se, že poskytujete dostatek energie a že signály jsou vysoké / nízké ve správný čas. Všechny tyto informace naleznete v datovém listu flash čipů.

Nejprve bych zjistil, jestli nemohu jen udržet procesor v resetu a pak jen naskenovat spi port. Nemá smysl odpájet celý čip, když ho můžete vynutit na high-z. Druhou poznámkou by bylo zjistit, zda na pinech clk / SDI / SDO jsou nějaké inline rezistory s nulovým ohmem / 100 ohmem a pokud ano, odstraňte je a nahraďte sondou. Ale dobré komentáře ... jen pár dalších věcí k zamyšlení.


Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 3.0, pod kterou je distribuován.
Loading...