Vogue Magazineからのメディアプレヌダヌファヌムりェアの保存ず埩元

Vogueマガゞンのプレむダヌを䜿った実隓は非垞に良いですが、すべおのバックアップを䜜成するずいう叀き良き管理者の習慣に悩たされおいたす。 他の人のファヌムりェアを詊しおみるずおもちゃを台無しにするのは非垞に簡単ですが、元の状態に戻す方法は明確ではありたせん。 そのような景品を台無しにするのは残念です。



そのため、このデバむスに察する3日間の脳攻撃の埌、ネむティブファヌムりェアを保存しお戻すプロセスを詳现に敎理したした。 オリゞナルのusb_bootプログラムを倉曎し、ファヌムりェアをファむルに読み蟌む機胜を远加し、いく぀かの有甚なデヌタシヌトをそこに投入しおくれたtronix286に感謝したす。



フラッシュしおプレヌダヌを元の状態に戻すために必芁なものはすべおここにありたす 。

実際には、アヌカむブ、ログ+ファヌムりェアファむル甚のusb-bootの機胜するカスタマむズされたバヌゞョン。



せっかちな人のために、回埩プロセスに぀いおすぐに説明したす。

-プレヌダヌからバッテリヌを倖すか、ペヌゞを開く連絡先の䞋に玙を挿入したす。

-プレヌダヌのボタンを抌しおボタンを抌し、USBケヌブルを挿入しおボタンを攟したす。

-コンピュヌタヌは新しいデバむスを決定し、アヌカむブからそのデバむスのドラむバヌをむンストヌルしたす。デバむスアむコンは質問の圢のたたですが、怖がらないでください。必芁です。

-usb_boot.exeを実行したす。

-そこにコマンド「run restore.sh」を入力するず、回埩プロセスが開始されたす。



リカバリプロセス䞭に゚ラヌが発生した堎合は、短いUSBケヌブルを䜿甚するか、コンピュヌタヌの背面のコネクタに接続する必芁がありたす。 ケヌブルの問題を修正しお、もう䞀床やり盎したす。



実際にその埌、再び動䜜するデバむスを取埗したす。 入院患者ず知らない人は読曞を終了できたす=



次に、プレヌダヌのファヌムりェアずそのコンポヌネントを保存/埩元するプロセスに぀いお詳しく説明したす



真剣に取り組む前に、私たちが䜕を扱っおいるかを理解する必芁がありたす。

プレヌダヌのファヌムりェアずナヌザヌコンテンツは、Samsung NANDフラッシュメモリチップK9G8G08U0Aに保存されたす。

NANDフラッシュメモリチップは䞀般的に非垞に特殊なものであり、メモリスペヌスの組織ずセクタ/ブロックのサむズがありたすが、これらは最初は普通のコンピュヌタ科孊者には銎染みがありたせん。 それを理解しおみたしょう。



このタむプのメモリの最小アドレス可胜ナニットはペヌゞハヌドディスクのセクタ/ブロックの特定の類䌌物です。 ペヌゞ自䜓は、䞀芋するず、モデルに応じお528/1056/2112/4224/8448 ...バむトの奇劙なサむズになりたす。 しかし、これは意図的に行われたす。 NANDフラッシュメモリの曞き蟌みサむクル数は非垞に限られおいるため、時間の経過ずずもに個々のビットが故障し始めたす。 これらの倱敗を刀断し、䞍良ビットのあるペヌゞの情報を埩元するために、そのような「゚キゟチックな」サむ​​ズが遞択されたした。 ペヌゞは基本的に2぀の郚分に分かれおいたす。 最初の郚分は512/1024/2048/4096/8192 ...バむトは512バむトの倍数でナヌザヌ情報を保存し、残りの郚分は16/32/64/128/256 ...ペヌゞの最初の郚分のECCチェックサムずその他の郚分が保存されたすサヌビス情報。 各ペヌゞを読み取るず、そのECCがその埌蚈算され、以前に蚘録されたものず調敎されたす。䞀臎しない堎合、ペヌゞは倱敗ずしお認識され、その倀は読み取られたECCから埩元されたす

次に、ペヌゞはブロックに結合されたす。 これはハヌドりェアレベルで実行され、1぀のコマンドでブロックのすべおのペヌゞの情報を消去するプロセスを高速化したす。 次に、ブロックは物理的に1぀のシリコン結晶に結合されたす。 このようなクリスタルは、1、2、たたは4の堎合があり、CSチップセレクトの出力を䜿甚しお遞択されたす。



ここで、被隓者K9G8G08U0Aに戻りたす。 メモリ構成は次のずおりです。1ペヌゞあたり2048 + 64バむト、1ブロックあたり128ペヌゞ、1チップあたり4096ブロック。



䞊蚘の理解を簡単にするために、このチップの公匏デヌタシヌトから写真を提䟛したす。



画像



超小型回路のメモリの構成を把握した埌、ファヌムりェアのコンポヌネントずハヌドりェアOSの起動プロセスを怜蚎したす。



ファヌムりェアは、次の郚分で構成されおいたすフラッシャヌのあるフォルダヌ内の* .binファむルを参照。

1splセカンダリプログラムロヌダヌ-初期ブヌトロヌダヌ、アヌカむブ内のnand.binファむル

2ロヌダヌ-メむンロヌダヌ自䜓。OSカヌネルをメモリにロヌドし、それに制埡を転送したす、loader.binファむル

3ロヌダヌ構成-ブヌトロヌダヌ蚭定。NANDチップ内のOSカヌネルずリ゜ヌスの堎所、およびすべおのロヌドが曞き蟌たれるRAM内のアドレス、def_boot.binファむル

4ブヌトむメヌゞ-OSの起動時に衚瀺されるむメヌゞdadaは同じ黄色です、img_boot.binファむル

5MINIOSオペレヌティングシステムカヌネル、minios.binファむル

6さたざたなリ゜ヌスを備えたOSの内郚ファむルシステム、res.binファむル。



実際に同じ順序でOSの起動がありたす。

たず、IPLが開始されたすロヌダヌは補造元によっおプロセッサ自䜓に配線されたす。 プロセッサのレッグの状態をチェックし、ロヌド順ずボタンが抌されたかどうかを蚭定したす。 ボタンが抌された堎合、USBダりンロヌドが期埅されたす。そうでない堎合、メモリからロヌドされたす。 IPLは、ブヌトロヌダヌのSPLコヌドがNANDフラッシュメモリチップから内郚SRAMメモリに配眮されおいる最初の8キロバむト0〜3ペヌゞを読み取りたす。 ECCおよび他のいく぀かの兆候によっおそれらの正確性をチェックし、すべおが正垞であれば、制埡をそれに転送したす。 問題が発生した堎合、次の8キロバむトのNANDフラッシュメモリ4〜7ペヌゞで同様のアクションが実行されたす。

開始埌、SPLはプロセッサのレゞスタず呚蟺機噚を初期化し、SDRAMコントロヌラヌを蚭定し、OSダむレクトロヌダヌコヌドloader.binをRAMの61ペヌゞず62ペヌゞの先頭に瀺されたアドレスにロヌドしたす。

次に、メむンロヌダヌはオペレヌティングシステムのカヌネルをRAMにロヌドし、制埡をカヌネルに転送したす。

質問が発生したす。なぜ倚くのロヌダヌがフェンスを䜿甚するのですか それに぀いおは䜕もするこずはありたせん、鉄の限界です。 IPLは8キロバむトを超えるコヌドをロヌドできないため、2階建おのブヌトロヌダヌを䜜成する必芁がありたす。



理論的基瀎から始めたしょう

それがどのように機胜するか芋おみたしょう、このひどい密造酒 ...うヌん、ナヌティリティがUSBずそのファヌムりェアを介しおプレヌダヌをダりンロヌドするように蚭蚈されおいるずいう意味で。

-fw.binおよびusb_boot.binファむルは、他の方法ではなく、SPLおよびロヌダヌによっお特別に曞き蟌たれたす。

-USB_Boot.exe -programs-オリゞナルの管理ナヌティリティの仕様。 usb_boot.binロヌダヌ、Test_jz4740_usb.exe-tronix286バヌゞョンを修正し、NANDフラッシュメモリの内容をファむルに読み取る機胜を远加。

-他のすべおのファむル* .bin-プレヌダヌファヌムりェアコンポヌネント。

-ファむルUsb_Boot_Driver.infおよびUsb_Boot_Driver.sys-usb読み蟌みモヌドのプレヌダヌのドラむバヌ。

-files * .cfg-さたざたなメモリチップNANDずSDRAMの䞡方ずその動䜜モヌドのブヌトロヌダヌ構成ファむル。

-file restore.sh-ファヌムりェアをプレヌダヌにアップロヌドするためのスクリプト。



Test_jz4740_usb.exeナヌティリティは、プレヌダヌのメモリからファヌムりェアを読み取るための2぀のコマンドndumpおよびnreadtofileが存圚する点でUSB_Boot.exeず異なりたす。

必芁なコマンド

-boot-USBBoot.cfgファむルのデフォルト蚭定を䜿甚しお、usbブヌトロヌダヌをプレヌダヌにロヌドしたす

-nerase-NANDフラッシュメモリチップからの情報のブロック消去。

-nprog-ファむルからの情報をNANDフラッシュメモリチップのペヌゞに曞き蟌みたす。

-ndump-メモリの内容をNANDフラッシュからファむルに読み取りたす。

-fconfig-構成を切り替えたす。

各コマンドのパラメヌタヌは、パラメヌタヌなしで実行するこずで芋぀けるこずができたす。



元のファヌムりェアを保存する方法を芋぀けたす

ブレヌンストヌミングセッション䞭に、䞀矀の槍が壊れ、数十本の剣が鈍くなったずいう1぀の倧きなニュアンスに぀いお説明したす。 USBBoot_nand.cfg構成を䜿甚しおSPLをダりンロヌドし、USBBoot_norm.cfg構成を䜿甚しおその他すべおをダりンロヌドしたす。 2぀の構成の䜿甚は、spl-bootloaderおよび他のすべおの蚘録がサヌビス゚リアの異なるフォヌマットusb-bootの芳点ではOOBず呌ばれるずペヌゞのチェックサムで発生するためです。 SPLロヌダヌの堎合、䜿甚される圢匏はプロセッサヌ内に配線され、その他のすべおの堎合、ブヌトロヌダヌずOSのアセンブリおよびコンパむル䞭にプログラマヌが遞択した圢匏です。



ネむティブファヌムりェアの保存を開始する前に、フォルダヌからファヌムりェアを含むファむルを削陀するこずを忘れないでください。 ファヌムりェアをマヌゞするには、次の手順を実行したす。

-プレヌダヌからバッテリヌを倖すか、ペヌゞを開く連絡先の䞋に玙を挿入したす。

-プレヌダヌのボタンを抌しおボタンを抌し、USBケヌブルを挿入しおボタンを攟したす。

-コンピュヌタヌが新しいデバむスを決定し、アヌカむブからドラむバヌをむンストヌルしたす。

-Test_jz4740_usb.exeを実行したす。

-コマンド「 boot 0 」を入力しお、実行結果を確認したす。 次のようなものが衚瀺されたす。



Checking state of No.0 device: Unboot

Now booting No.0 device: START_ADDR 2000000 81c00000



Download stage one program and execute at 0x80002000: Pass

Download stage two program and execute at 0x81c00000: Pass

Boot success!

Now configure No.0 device:

Now checking whether all configure args valid:

Current device information: CPU is Jz4750

Crystal work at 12MHz, the CCLK up to 336MHz and PMH_CLK up to 112MHz

Total SDRAM size is 32 MB, work in 4 bank and 16 bit mode

Nand page size 2048, ECC offset 3, bad block ID 0, use 1 plane mode

Configure success!








-「 fconfig USBBoot_nand.cfg 0 」コマンドを䜿甚しおSPLを読み取るための「正しい」構成に切り替えたす。すべおが正垞である堎合、「 Configure success!



」ずいう碑文があるはずです。

-コマンド " ndump 0 64 0 0 nand.bin "を䜿甚しお、nand.binファむル内のSPLずその構成ペヌゞを読み取りたす。

-「正しい」構成に切り替えお、コマンド「 fconfig USBBoot_norm.cfg 0 」で残りのファヌムりェアを読み取りたす。すべおが正垞である堎合、「 Configure success!



」ずいう碑文があるはずです。

-「 ndump 128 66 0 0 loader.bin 」コマンドを䜿甚しおロヌダヌをloader.binファむルに読み蟌みたす

-「 ndump 256 1 0 0 def_boot.bin 」コマンドでdef_boot.binファむルの蚭定を読み取りたす

-コマンド「 ndump 512 3061 0 0 img_boot.bin 」を䜿甚しお、ブヌトむメヌゞをファむルimg_boot.binに読み蟌みたす。

-コマンド「 ndump 8192 8192 0 0 minios.bin 」でOSカヌネルをminios.binファむルに読み蟌みたす

-「 ndump 32768 32768 0 0 res.bin 」コマンドを䜿甚しお、res.binファむル内のカヌネルリ゜ヌスで内郚FSを読み取りたす。



必芁に応じお、これらすべおのコマンドを順番にファむルに曞き蟌んで、充填プロセスず同じ方法でrunコマンドで開始できたす。 UPD。 これを実行しおsave.shファむルに保存したした。

結果のファむルは、ネむティブファヌムりェアのバックアップです。 これでプレヌダヌのファヌムりェアで䜕でもできるようになり、䜿い物にならない鉄を手に入れるこずを恐れなくなりたした。



蚘録甚のすべおのアドレスは、起動時および実隓的にプレヌダヌの内郚uartコン゜ヌルに出力される情報から取埗されたした。



その結果、以䞋が埗られたす。

1SPLは0〜3ペヌゞです。

261、62、63ペヌゞには、その埌の読み蟌みにSPLが必芁です。

3メむンブヌトロヌダヌは128ペヌゞで開始したす。

4その構成は256ペヌゞです。

5ブヌトむメヌゞは512ペヌゞから始たりたす。

6MINIOSコアは8192ペヌゞから始たりたす。

7内郚FSは32768ペヌゞを開始したす。

8コンテンツを含むナヌザヌファむルシステムが続きたす。



ファヌムりェアをプレヌダヌにアップロヌドするプロセスは、コメントする必芁はないず思いたす。保存に䌌おいたす。 メモ垳たたは他のテキスト゚ディタヌでファむルrestore.shを開くず、すべおのプロセスコマンドを自分の目で芋るこずができたす。 必芁に応じお、プレヌダヌを完党にフラッシュするこずはできたせんが、個々のパヌツのみを倉曎できたす。



ファヌムりェアのバックアップがあり、それをどのように入力するかがわかったら、他のファヌムりェアをプレヌダヌに流しおみおください。 珟時点では、Linuxを起動するためにu-bootロヌダヌをコンパむルしお䜜成しようずしおいたす。



UPD !!! Test_jz4740_usb.exeナヌティリティで迷惑な゚ラヌが芋぀かりたした 投皿の冒頭にあるリンクたたはここにあるナヌティリティ自䜓を䜿甚しお、ナヌティリティの最新バヌゞョンでアヌカむブを再床ダりンロヌドしおください 。

グリッチの拡散を避けるために、叀いアヌカむブはすべお削陀されたした。



All Articles