カメラ回路と制御するソフトウェアをSDカードからブートして動作させたいと思ったのでやってみた。
まずは、”
Zynq-7000 EPP ソフトウェア開発者向けガイド UG821 (v2.0) 2012 年 4 月 24 日”の”ブートおよびコンフィギュレーション”の”3.1 概要”(20ページ)によると、プロセッサシステムは2段階のプロセスでブートするそうだ。(LinuxだとU-BOOTがあるので3段階)
それは、内部BootROMとFSBL (First Stage Bootloader) だ。
・内部BootROMは、ステージ0ブートコードが入っていて、ARMプロセッサおよびペリフェラルをコンフィギュレーションする。そして、FSBLへ制御を渡す。BootROMには書き込みできない。
・FSBLブートコードは、BootROMコードでフラッシュメモリからオンチップメモリ (OCM) へコピーされてから、実行される。
・FSBLの役割
・XPSからのPSコンフィギュレーション・データで初期化(XPSのZynqタブで設定したMIOなどのコンフィギュレーションだと思う)
・ビットストリームでPLをプログラム。
・第2段階ブートローダーまたは、ベアメタル・アプリケーション・コードをメモリへロードする。
・第2段階ブートローダーまたは、ベアメタル・アプリケーション・コードの実行を開始する。
ということで、FSBLを作る必要がある。FSBLはSDKで生成することができる。そのやり方を見ていこう。
・SDKの Fileメニュー -> New -> Project を選択する。

・New Project ダイアログで、Xilinx -> Application Project を選択して、Next > ボタンをクリックする。

・Project Name にFSBL(これは任意の名前)と入力し、Target Software で、Board Support Package にUse existing のラジオボタンをクリックして、すでにあったBoard Support Package を指定した。Next > ボタンをクリックする。

・Templates ダイアログが表示される。Available Templates から Zynq FSBL を選択する。

・Finish ボタンをクリックすると、コンパイルされて、FSBL.elf が生成される。

次に、BOOT.bin を生成する。
・ベアメタル・アプリケーション(この場合は cam_disp2 のプロジェクト)を選択しておいて、Xilinx Tools メニューから Create Zynq Boot Image を選択する。

・先ほど作成したFSBL.elf とベアメタル・アプリケーション cam_disp2.elf はすでに入っていた。
・PL部のビットストリーム、system_stub.bit をAddボタンをクリックして追加する。
・cam_disp2.elf をクリックして、DOWNボタンをクリックし、system_stub.bit と順番を入れ替える。

・Create Image ボタンをクリックして、イメージを作成する。
・ZedBoard_CamDisp_wHDMI_144_2\ZedBoard_CamDisp_wHDMI.sdk\SDK\SDK_Export\cam_disp2\bootimage を見ると、ファイルが3つ出来ている。

・cam_disp2.bin を BOOT.bin にリネームする。
・BOOT.bin をSDカードにコピーする。

・SDカードをパソコンから抜いて、ZedBoardのSDカードスロットに挿入する。
・ZedBoardの設定ピンを設定する。
MIO2 GND
MIO3 GND
MIO4 3V3
MIO5 3V3
MIO6 GND
JP2, JP6 ショート
JTAG SELECT 1V8
・ZedBoardの電源SWをONにすると、DONE LEDが点灯して、カメラ画像が表示された。
これで、SDカードからブードして、PL部のビットストリームをダウンロードし、PS部のソフトウェアを動作させることが出来た。
- 2013年01月24日 04:59 |
- Zynq
-
| トラックバック:0
-
| コメント:0