ソフト・マクロのCPUでLinuxを動かす(後編) ──OSの実装とネットワーク対応機器への応用

川岡 圭一,Jeerapong Putthanbut

tag: 組み込み

技術解説 2004年9月15日

●○● Column ●○●
◆ブート動作について◆

 本ボードのブート・ローダは以下の二つのプログラムで構成されています.

  • FPGA内蔵メモリ内のブート・ローダ(最低限の機能を実装)
  • フラッシュ・メモリ上のhermit(高機能ブート・ローダ)

 電源投入時,MicroBlazeは0番地から起動されます.0番地から格納されているのは割り込みベクタ・テーブルで,0番地にはリセット割り込みベクタが書き込まれています.本ボードでは,0番地以降にFPGA内蔵メモリを割り当てており,リセット後に動作するのは,FPGA内蔵メモリに格納されたブート・ローダです.

 FPGA内蔵メモリ内のブート・ローダは,フラッシュ・メモリ上のhermitをSDRAMにコピーし,hermitの先頭アドレスにジャンプして,hermitが起動されます.

 hermitは,フラッシュ・メモリ上にあるLinuxイメージをSDRAMにコピーし,Linuxイメージの先頭にジャンプしてLinuxが起動されます(図A)

 このようにブート動作は2段階に分けられています.ブート・ローダを2段階に分けた理由は二つあります.一つ目の理由は,なんらかの原因でフラッシュ・メモリの内容が書き換えられても,最低限の機能のブート・ローダまでは動作させたかったためです.FPGA内蔵メモリからブートできるようにしておけば,そこからフラッシュ・メモリ書き換えプログラムを動作させて復旧させることができます.二つ目の理由はブート・ローダによって使用される内蔵メモリ容量を最低限に抑えたかったためです.

 2段階のブートを使用しないことも可能です.しかし,圧縮されたプログラム・イメージを展開させたり,CompactFlashやハード・ディスクなどから高度なブートをさせようとすると,ブート・ローダのために多くのメモリが必要となります.FPGA内蔵メモリは貴重なリソースです.起動時にしか実行されないブート・ローダのために多くの容量を消費してしまうのは避けたいところです.

f08_01.gif
図A ブート動作のプログラム・コピー元とコピー先

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日