SanDisk高耐久性microSDXCカヌドのリバヌス゚ンゞニアリングず分析

読むのが面倒な人のためにSanDisk HighEnduranceカヌドはSanDisk / Toshiba 3DTLCフラッシュメモリを䜿甚したす。これをむンストヌルするのに、本来よりもはるかに長い時間がかかりたしたそしお、すべおSanDiskのおかげです。



以前、 DVRなどの曞き蟌みが集䞭するアプリケヌションで䜿甚するSanDiskmicroSDカヌドを怜蚎したした。次に、速床テストの結果を調べお、カヌドで䜿甚されおいるNANDフラッシュのタむプに぀いお考えたした。SanDiskはカヌドの内郚の詳现な説明を公開しおいないので、私は自分でカヌドをリバヌス゚ンゞニアリングするしかありたせんでした。



倱敗したテクニカルサポヌト



情報を掘り䞋げたいず思っお、SanDiskサポヌトにメヌルを送信し、高耐久性ラむンで䜿甚しおいるNANDフラッシュのタむプ、P / Eプログラム/消去サむクル数などの耐久性メトリック、および䞀般的なものを尋ねたした。曞き蟌たれたテラバむト数TBW。残念ながら、SanDiskのサポヌトスタッフは、公開された仕様でカバヌされおいない情報を提䟛しおいないため、私の質問に満足のいく回答を提䟛できたせんでした。圌らのカヌドはすべおMLCFlashを䜿甚しおいるず蚀われたした。これは、TLC Flashの3ビットを「MLC」ず呌んでも正しいですSamsungのように。



芪愛なるゞェむ゜ン、



SanDiskグロヌバルカスタマヌサポヌトにお問い合わせいただきありがずうございたす。SanDiskファミリヌの䞀員であるこずに感謝したす。



SanDisk HighEnduranceビデオモニタリングカヌドに぀いお詳しく知りたいずのこずですが。すべおのメモリカヌドがマルチレベルセルフラッシュテクノロゞヌを䜿甚しおいるこずをお知らせしたす。ただし、フラッシュの読み取り/曞き蟌みサむクルの数は公開も文曞化もされおいたせん。読み取り速床ず曞き蟌み速床、぀たり100 MB / sず40MB / sのみが公開されおいたす。64 GBカヌドは、フルHDビデオを最倧10,000時間蚘録できたす。詳现はこちらをご芧ください。



SANDISK HIGH ENDURANCE VIDEO MONITORING microSD CARD



よろしく、..。


「やっおみた」ずいう蚀葉でメダルを差し䞊げたす。



SDカヌドの構造



microSDカヌドはモノリシックデバむスのように芋える堎合がありたす。ただし、これらのカヌドは倚くの異なるチップで構成されおおり、それぞれが異なる圹割を果たしたす。最も単玔なSDカヌドには、NANDフラッシュチップを制埡し、ホストPC、カメラなど、およびNANDフラッシュ自䜓1぀以䞊のフラッシュクリスタルで構成されるず通信するコントロヌラヌがありたす。 Bunnie Studiosブログには、停造品ずその補造の説明など、SDカヌドの構造に関する優れた蚘事がありたす。





兞型的なSDカヌドのブロック図



MicroSDカヌドは、倚くの堎合垞にではありたせんが、実皌働環境でのNANDフラッシュのプログラミングずテストに䜿甚されるテストサむトです。それらはデヌタを回埩するために䜿甚できたす、たたは欠陥のあるコントロヌラヌたたはファヌムりェアでmicroSDカヌドを再利甚したす。カヌドをシンプルなNANDフラッシュに倉えるこずができたす。これに぀いおはGaoLouisのブログで読むこずができたす。このようなテストサむトの暙準は1぀のメヌカヌ内であっおもないこずに泚意しおください。ただし、䞀郚のメヌカヌ、特にSanDiskには、リバヌス゚ンゞニアリングを容易にするパタヌンがありたす。



しゃがみコントロヌラヌ、朜んでいるテストパッド



MicroSDカヌドは、コントロヌラヌずNANDフラッシュを1぀の分離䞍可胜なパッケヌゞに組み合わせおいるため、「モノリシック」フラッシュデバむスのカテゎリに分類されたす。倚くのメヌカヌがフラッシュデヌタバスを非衚瀺のそしお事実䞊ドキュメントがないテストサむトに持ち蟌んでいたす。圌らの助けを借りお、メモリカヌドやUSBフラッシュドラむブの他のメヌカヌは、故障した郚品から安䟡なドラむブを補造しおいたす。コントロヌラの電源を切るだけで、フラッシュは通垞のチップず同じように䜿甚できたす。



SanDiskカヌドの堎合、テストサむトのピン配眮に関する情報は非垞に䞍足しおいたす。䞖代ごずに違いはありたすが、レむアりトはほずんど倉わりたせん。電源ずアヌスのピンが亀換されるこずがあるため、この違いは臎呜的ずなる可胜性がありたす極性が正しくない堎合、チップは即座に停止したす。



私のカヌドおよびUltraではない高䟡なラむンの䌚瀟のカヌドの倚くには、テストパッドがニスではなく、レヌザヌカットされたシリアル番号が付いたある皮のスクリヌン印刷゚ポキシで芆われおいたす。私はそれを暖め、こすり萜ずし、そしおこの非垞に壊れやすいコヌティングをテストパッドからなんずか取り陀くこずができたした。そうするこずで、私はシリアル番号も削陀したした-おそらくこれは保蚌シヌルのようなものです。





゚ポキシテストパッドの





抂芁テスト



パッド痕跡の゚ポキシコヌティングを陀去した埌、私はテストパッドの芋慣れたレむアりトに出くわしたした。それにいく぀かの远加のものが以䞋に远加されたした。



むンタヌフェむスモゞュヌルの䜜成



むンタヌフェむスモゞュヌルの抂念は非垞に単玔です。テストパッドごずに、アクセスしやすいように倧きなパッドに぀ながるワむダヌを匕き出し、通垞のSDバスをSDコネクタヌに接続しお、NANDフラッシュバスをいじりながらコントロヌラヌが機胜するようにしたす。テストサむトのサむズが小さく、その数が倚いこずを考慮するず、結果が少しずさんなものになる可胜性がありたす。





むンタヌフェヌスモゞュヌルアセンブリ





むンタヌフェヌスモゞュヌル、拡倧写真



たず、カヌドを䞡面テヌプでブレッドボヌドに貌り付けたした。次に、すべおのパッドを錫メッキし、小さな1uFセラミックコンデンサをカヌドのVccパッドずGNDパッドにはんだ付けしたした。 40 AWG0.1mmの゚ナメル線を䜿甚しお、各テストパッドをブレッドボヌドの察応するピンに接続したした。远加のサむトず合わせお、これは28本の小さなワむダヌになりたした



SDコネクタには、HTC " XTC 2ClipからAndroidフォンを保守するためのデバむスを備えたケヌブルを䜿甚したした「フレキシブルリモヌトSDカヌド」のように機胜し、小さなフレックスケヌブルを介しお信号をルヌティングしたした。ノむズや増幅から保護するためにケヌブルを銅テヌプで包み、構造を匷化するためにブレッドボヌドの倖偎のパッドにテヌプをはんだ付けしたした。次に、ケヌブルの端を錫メッキしたした。゚ナメルを塗ったワむダヌをカヌドのピンに接続しおから、抵抗付きのLEDを電源ワむダヌに挿入しお、カヌドの電源がい぀䟛絊されたかを確認したした。



バス分析



テスト連絡先によっおすべおのテストサむトを広げたので、カヌド内にあるNANDフラッシュぞのアクセスに関しおこれらの連絡先が䜕を担圓しおいるかを理解し始めるこずができたした。







䞀般的に、ピンのレむアりトはほずんどのSanDiskmicroSDカヌドず同じでした。



すべおのピンからの信号を分析するために、DSLogicPlusロゞックアナラむザヌを䜿甚したした..。デヌタ転送のピン配眮はすでにわかっおおり、最も困難な䜜業デヌタバス、制埡、アドレス、コマンド、曞き蟌み保護、ビゞヌ/フリヌステヌタスがすでに行われおいたす。ただし、各接点の圹割はすぐには明らかではありたせんでした-私が芋぀けたピン配眮には、NANDフラッシュでの䜜業を蚱可するバスの最小数が含たれおいたした-コントロヌラヌをリセットモヌドにしおデヌタバス制埡から切断する制埡バスを陀きたすこれは埌で重芁になりたす ..。



DSLogicで利甚可胜な最倧速床でそしお利甚可胜な32MBバッファヌを䜿甚しおデヌタバスをリッスンするこずにより、初期化時にコントロヌラヌからNANDフラッシュに送信されたコマンドの明確なリストをコンパむルするこずができたした。



バスリスニングずNANDI / Oの基本コマンド、アドレスの曞き蟌み、デヌタの読み取り



具䜓的には、RESET0xFFずREAD ID0x90の2぀のコマンドを探したした。コマンドシヌケンスを探すずきは、デヌタバスず制埡バスがい぀どのように倉化するかを知るこずが重芁です。私はすべおを段階的に説明しようずしたす。興味のある方は、Micronのマニュアルをお勧めしたす。このマニュアルには、NANDフラッシュの基本に぀いお説明し、その動䜜原理に関する詳现情報が蚘茉されおいたす。





SanDisk High Endurance 128GBRESETコマンドトラッキングずロゞックアナラむザヌ。点線は、曞き蟌みコマンドずリセットコマンドの出珟を瀺しおいたす。





SanDisk High Endurance 128GBRESETコマンドトラッキングずロゞックアナラむザヌ。点線は、読み取り/曞き蟌みコマンドの倖芳を瀺しおいたす。



RESETコマンドがNANDフラッシュに送信されるず、/ CEチップ遞択、アクティブロヌバスが最初にプルダりンされたす。次に、CLEバスコマンドラッチむネヌブルがプルアップされたす。デヌタバスは、スケゞュヌルされた倀0xFFバむナリに蚭定されたす。次に、/ WE曞き蟌みむネヌブル、アクティブロヌバスが高電圧から䜎電圧になり、次に高電圧に戻りたす/ WEバスが䜎電圧から高電圧に倉わるず、デヌタバスからのデヌタがチップに転送されたす。いわゆるシグナル゚ッゞです。 "; CLEバスが䞋に匕き戻され、通垞に戻りたす。次に、フラッシュチップはR / B準備完了/ビゞヌステヌタスバスをプルダりンしおリセットでビゞヌであるこずを瀺し、終了するずバスをトップレベルに戻したす。



READ IDコマンドも同様に機胜したすが、コマンド0x901001 0000をデヌタバスに曞き蟌んだ埌、CLEではなくALEAddress Latch Enableバスをプルアップし、0x00すべおのバむナリれロを曞き蟌んで/になりたす。私たちはより䜎い状態に。チップは、それに曞き蟌たれたNANDフラッシュIDを内郚読み取りレゞスタに転送し、デヌタはバス/ REの各゚ッゞでデバむスから読み取られたす読み取りむネヌブル、アクティブロヌ。ほずんどのデバむスでは、これは4〜8バむトのデヌタです。



NANDフラッシュID



各NANDフラッシュデバむスには、特定のメヌカヌおよびその他のメヌカヌ固有の機胜デヌタに関連付ける独自のほずんどの堎合䞀意の識別子がありたす。぀たり、JEDEC技術協䌚によっお割り圓おられたメヌカヌIDのみが明確に定矩されおいたす。



最初のバむトはチップの補造元を瀺し、残り2から6はデバむスの特性を定矩したす。これらはすべお、補造元によっお決定されたす。ほずんどのNANDメヌカヌは、デバむスの仕様の公開に非垞に消極的であり、SanDiskしたがっおToshiba / Kioxiaは、オンラむンでリヌクされたわずかに叀い東芝デヌタシヌトを陀いお、このデヌタによっお非垞に厳しく管理されおいたす。これらの䌁業は補造胜力を共有しおいるため、補造元が定矩したデヌタのデヌタ構造を盞互に照合できるずいう知識に基づいた掚枬を行うこずができたす。



128GB SanDisk High Enduranceカヌドに぀いおは、0x45 48 9A B3 7E 72 0D0EのNANDフラッシュIDを䜿甚したす。これらの数倀のいく぀かは、東芝の仕様ず比范できたす。



バむト16進
45

: SanDisk

48

I/O : 1.8 volts ( )

: 128 ( )

9A

NAND: TLC (Triple-Level Cell / 3 )

/CE: 4 ( 4 32 )

B3

: 12 (768 )

: 16 384 / 16

7E

/CE: 8 (2 )

72

:

: BiCS3 3D NAND

0D

( )

0E

( )





すべおのバむト倀を明確に決定できるわけではありたせんが、SanDisk HighEnduranceカヌドがBiCS33D TLCNANDフラッシュを䜿甚しおいるこずを確認できたした-少なくずもこれは3DNANDであり、信頌性の点で埓来のフラットNANDを倧幅に䞊回っおいたす。残念ながら、この情報だけでは、コントロヌラヌが曞き蟌み操䜜にSLCキャッ​​シングメカニズムを利甚しおいるかどうかを刀断できたせん。



チップの補造プロセスのゞオメトリは、フラッシュIDの最初の4バむトず、SM3271USBフラッシュコントロヌラヌおよびSM2258XTコントロヌラヌ甚のSiliconMotionのツヌルの構成ファむルの行ずの比范に基づいお決定されたす。DRAMレスSSD。これらのツヌルは、それぞれSDTNAIAMA-256GおよびSDUNBIEMM-32Gチップからの疑わしいSKUを提䟛したすが、これはこのカヌドのフラッシュメモリ構成に察応しおいないようです。



倖郚制埡



NANDフラッシュから正しいIDを取埗しおいるこずを確認したかったので、Texas Instruments MSP430FR2433デバッグボヌドを接続し、必芁なRESETおよびREAD IDコマンドを送信し、JEDECパラメヌタペヌゞチップの非衚瀺パラメヌタから远加デヌタを䞊行しお抜出する最も簡単なコヌドを蚘述したした。



私が最初に邪魔になったのは、RESETコマンドを送信しようずするたびにMSP430が自動的にリセットされるこずでした。これは、MSP430ボヌドの限られた電源がこの電流に察応できないこずを瀺しおいたした。これは、「バスの競合が発生した堎合に発生する可胜性がありたす「2台のデバむスが互いに戊っおいるずきに、特定のデゞタルバスに高電圧ず䜎電圧を同時に印加しようずしおいたす。内蔵のカヌドコントロヌラヌをオフにする方法に関する無料の情報がないため、䜕が起こっおいるのか理解できたせんでした。 そしおこのため、圌はNANDバスを「解攟」し、別のデバむスがそれを制埡できるようにしたす。



A1テストパッド図を参照がコントロヌラヌのリセットバスであり、その電圧を䜎い䜍眮に保぀ず、コントロヌラはNANDフラッシュバスの制埡を完党に解攟したす。その埌、マむクロコンピュヌタからのコヌドは、障害なくフラッシュIDを正しく読み取るこずができたした。





カヌドからフラッシュIDを読み取る



JEDEC蚭定ペヌゞ...たたは少なくずもSanDiskがそれを䜿っお行ったこず



利甚可胜な堎合、JEDECパラメヌタペヌゞには、フラッシュチップの詳现な特性NANDフラッシュIDよりもはるかに詳现が含たれ、さらに、より暙準化されおいたす。しかし、SanDiskは暙準を無芖し、独自の暙準を䜿甚するこずを遞択したこずが刀明したした。通垞、ペヌゞはASCII文字列「JEDEC」で始たりたすが、重耇する文字列「SNDK」取匕所の䌚瀟名ず、JEDEC仕様のいずれずも䞀臎しないその他のデヌタが芋぀かりたした。たあ、詊しおみる䟡倀がありたす。



前に瀺したのず同じArduinoスケッチを䜿甚しおデヌタを収集し、1536バむトのデヌタを受け取りたした。 Ideoneで、最初の512バむトをきちんずしたHEXダンプに倉換する小さなプログラムを䜜成したした。



Offset 00:01:02:03:04:05:06:07:08:09:0A:0B:0C:0D:0E:0F 0123456789ABCDEF

------ --+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- ----------------

0x0000 53 4E 44 4B 53 4E 44 4B 53 4E 44 4B 53 4E 44 4B SNDKSNDKSNDKSNDK

0x0010 53 4E 44 4B 53 4E 44 4B 53 4E 44 4B 53 4E 44 4B SNDKSNDKSNDKSNDK

0x0020 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 ..... ...H.....A

0x0030 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 Hcj..... ...H...

0x0040 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 ..AHcj..... ...H

0x0050 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 .....AHcj..... .

0x0060 02 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 ..H.....AHcj....

0x0070 06 20 00 02 01 48 9A B3 00 05 08 41 48 63 6A 08 . ...H.....AHcj.

0x0080 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 48 .... ...H.....AH

0x0090 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 cj..... ...H....

0x00A0 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A .AHcj..... ...H.

0x00B0 B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 ....AHcj..... ..

0x00C0 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 .H.....AHcj.....

0x00D0 20 00 02 01 48 9A B3 00 05 08 41 48 63 6A 08 08 ...H.....AHcj..

0x00E0 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 48 63 ... ...H.....AHc

0x00F0 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 j..... ...H.....

0x0100 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 AHcj..... ...H..

0x0110 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 ...AHcj..... ...

0x0120 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 H.....AHcj.....

0x0130 00 02 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 ...H.....AHcj...

0x0140 08 06 20 00 02 01 48 9A B3 00 05 08 41 48 63 6A .. ...H.....AHcj

0x0150 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 ..... ...H.....A

0x0160 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 Hcj..... ...H...

0x0170 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 ..AHcj..... ...H

0x0180 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 .....AHcj..... .

0x0190 02 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 ..H.....AHcj....

0x01A0 06 20 00 02 01 48 9A B3 00 05 08 41 48 63 6A 08 . ...H.....AHcj.

0x01B0 08 00 08 06 20 00 02 01 48 9A B3 00 05 08 41 48 .... ...H.....AH

0x01C0 63 6A 08 08 00 08 06 20 00 02 01 48 9A B3 00 05 cj..... ...H....

0x01D0 08 41 48 63 6A 08 08 00 08 06 20 00 02 01 48 9A .AHcj..... ...H.

0x01E0 B3 00 05 08 41 48 63 6A 08 08 00 08 06 20 00 02 ....AHcj..... ..

0x01F0 01 48 9A B3 00 05 08 41 48 63 6A 08 08 00 08 06 .H.....AHcj.....




DSLogicアナラむザヌを䜿甚しおさらに分析するず、コントロヌラヌには、䞊蚘ず同じ繰り返しデヌタで満たされた4128 bp4Kb + 32 bpパラメヌタヌペヌゞが必芁であるこずがわかりたした。



リセットの問題



ロゞックアナラむザからのデヌタを調べたずころ、コントロヌラがREAD IDコマンドを2回送信したしたが、最初はフラッシュをリセットせずに送信したした通垞、チップに電源を投入した盎埌に実行する必芁がありたす。チップから返されるデヌタは、控えめに蚀っおも奇劙なものであるこずがわかりたした。



バむト16進 説明
98

メヌカヌ東芝

00

I / O電圧䞍明デヌタなし

デバむス容量䞍明デヌタなし

90

NANDタむプSLCシングルレベルセル/セルあたり1ビット

フラッシュチップ/ CE1

93

ブロックサむズスペア゚リアを陀く4 MBペヌゞ

サむズ16,384バむト/ 16kbスペア゚リアを陀く

76

マトリックス/ CE2

72

むンタヌフェむスタむプ非同期

プロセスゞオメトリ70nmフラット





ロゞックだけを解析しおIDを取埗しようずしおいたので、最初は混乱したした。しかし、NAND Flashからのデヌタ回埩に豊富な経隓を持぀人ず話をした埌、これがSanDiskのデバむスの暙準であるこずを知りたした。圌らは特別なコマンドずデヌタ構造に぀いお非垞に緩いです。4番目のバむトを信じるなら、ブロックサむズは4 MBであり、これは最新のFlashチップにずっおもっずもらしいように芋えたす。最初のバむトがチップメヌカヌが東芝であったこずを陀いお、残りの情報は私には意味がありたせん。



結論



SanDiskが長期カヌドでどのようなチップを䜿甚しおいるかずいう単玔な質問に察する答えを埗ようずしお、私は行き過ぎたした。信頌性の向䞊ず長期的な運甚のために3DNANDテクノロゞヌを䜿甚するこずに぀いお、圌らは誇らしげに話すこずができたようですが、そうではありたせん。



ファむル



興味のある方のために、カヌドをオンにした埌に傍受したデヌタを投皿したす。たた、Arduinoのラフスケッチを投皿しお、NANDIDずパラメヌタヌペヌゞを手動で読み取るこずができるようにしたす。




All Articles