Comments
Description
Transcript
Linuxブート可能 NANDフラッシュ書込み手法
Linuxブート可能 NANDフラッシュ書込み手法 株式会社東陽テクニカ 汎用計測営業部 May 21, 2011 – June 29,2011 MK ver1.1 NANDからのLinuxブート手順 ① カスタムHWサポートによる、ブートローダーを 起動するためのNAND/DRAMドライバを含む HWブートプログラム ② HWブートプログラムにてU‐BootのDRAMへの ロードと起動 ③ U‐bootによるシステム初期化、Linuxカーネルの ロード、カーネルの起動 ④ カーネルは、ファイルシステム(YAFFS等)の起動 を行い、アプリケーションや必要なファイルを ロード後、タスクを起動 ①HWブート NAND イメージ システムメモリイメージ NAND image Sector 0: HWブート P0: HWブート Sector 1‐L: U‐boot Processor reset HWブートプログラ ム起動のためのカ スタムHWサポート。 Bad Block Sector L‐M: Linux Kernel, ドライバ Bad Block ファイルシステム Bad Block Sector M‐N: ファイルシステム ‐> アプリケーショ ン, データファイル HW reset Bad Block Sector End: バッド ブロックテーブル ② U‐Bootのロード、実行 NAND イメージ システムメモリイメージ NAND image P0: HWブート Sector 0: HWブート L1: U‐boot Sector 1‐L: U‐boot HWブートによりU‐ Bootをロードし起動 Bad Block Sector L‐M: Linux Kernel, ドライバ Bad Block ファイルシステム * ロード中、バッドブロックのス キップが必要。オプションでバッ ドブロックテーブル管理を行う。 Bad Block Sector M‐N: ファイルシステム ‐> アプリケーショ ン, データファイル Bad Block Sector End: バッド ブロックテーブル ③ カーネルのロードと起動 NAND イメージ システムメモリイメージ NAND image P0: HWブート Sector 0: HWブート L1: U‐boot Sector 1‐L: U‐boot Bad Block L2: Linux Kernel U‐bootがLinux Kernelのロードを 行った後カーネル に実行を移す Sector L‐M: Linux Kernel, ドライバ Bad Block ファイルシステム Bad Block Sector M‐N: * ロード中、バッドブロックのス キップが必要。オプションでバッ ドブロックテーブル管理を行う。 ファイルシステム ‐> アプリケーショ ン, データファイル Bad Block Sector End: バッド ブロックテーブル ④ アプリケーションとデータのロード NAND イメージ システムメモリイメージ NAND image P0: HWブート Sector 0: HWブート L1: U‐boot Sector 1‐L: U‐boot L2: Linux Kernel * ロード中、バッドブロックのス キップが必要。オプションでバッ ドブロックテーブル管理を行う。 Bad Block Sector L‐M: Linux Kernel, ドライバ Bad Block ファイルシステム L3: アプリケーション、 データ、FATミラー用 ヒープ カーネルは、YAFFS等の ファイルシステムをマウ ントし、その後、カーネル は、動的ドライバ、アプリ ケーション、データファイ ルを読み込み、実行 Bad Block Sector M‐N: ファイルシステム ‐> アプリケーショ ン, データファイル Bad Block 空き FATテーブルは、DRAM にミラー化される Sector End: バッド ブロックテーブル NANDイメージのビルド ‐ 1 • HWブート: – リセットアドレスで実行するHWブートイメージをビ ルド – 次にU‐BootがロードできるためのNANDドライバ、 DRAMドライバなどをサポート NANDイメージのビルド ‐ 2 • U‐boot: – LinuxのブートローダであるU‐bootイメージをビル ド – HWブートは、U‐BootをDRAMにロードし、制御を U‐Bootに移す NANDイメージのビルド ‐ 3 • Linux Kernel: – Linux kernelイメージのビルド – U‐Bootは、Linux Kernelをロードし、制御をカーネルに 移す NANDイメージのビルド ‐ 4 • アプリケーション, 動的ドライバ, データファイ ル: – 各ファイルをファイルシステムの管理バウンダリ に合わせて重ならないアドレスに配置、管理テー ブルデータと結合し一つのバイナリファイルを生 成する How to build NAND image ‐ 5 書込みファイルイメージ 個別ファイルイメージ NAND イメージ NAND image Sector 0: HWブート p0: HWブート Adr p0: HWブート Adr p1‐pL: U‐boot Adr p1‐pL: Kernel Adr pL‐pM: Linux Kernel, static driver Adr pM‐pN: Apps., dynamic driver, Data files Data Mapper Software Bad Block Sector L‐M: Linux Kernel, ドライバ Adr pL‐pM: Linux Kernel, static driver Adr pM‐pN: Apps., dynamic driver, Data files Adr pM: file#1 Adr pM+1: file#2 Adr pN: file#N Adr pEnd: バッドブ ロックテーブル初期値 Sector 1‐L: U‐boot Adr pEnd: BBT 書き込み用に一つのバイナリイメージファイルを ビルドします。個々の物理アドレスは、重ならない 領域にとる必要があります。 Bad Block ファイルシステム Bad Block Sector M‐N: ファイルシステム ‐> アプリケーショ ン, データファイル Bad Block Sector End: バッド ブロックテーブル