FC2カウンター FPGAの部屋 ZYBO用の Linaro Ubuntu のPL部にビットマップ・ディスプレイ・コントローラを搭載する3(UIOの設定)
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

ZYBO用の Linaro Ubuntu のPL部にビットマップ・ディスプレイ・コントローラを搭載する3(UIOの設定)

ZYBO用の Linaro Ubuntu のPL部にビットマップ・ディスプレイ・コントローラを搭載する2(インプリメント)”の続き。

前回はビットマップ・ディスプレイ・コントローラのインプリメントが終了した。今回は、SDKで Linux用ソフトウェアを作製する際に必要な設定をするために、DTSを変更する。

今回は、UIO (Userspace I/O) を使用するためにLinux のコンフィギュレーションをチェックして、デバイス・ツリーにUIOを追加する。

参考にするWebサイトと本を紹介する。参考にするWebサイトは、”How to Design and Access a Memory-Mapped Device in Programmable Logic from Linaro Ubuntu Linux on Xilinx Zynq on the ZedBoard, Without Writing a Device Driver — Part Two”だ。参考にする本はコミケ本で、石原ひでみさんの”Hybrid SoC Design Vol 1.0”だ。

まずは、Linux 上で UIO が使用可能かどうかを確認する。
・/home/masaaki/ZYBO/Digilent_Linux_Tutrial/Linux-Digilent-Dev ディレクトリで make menuconfig コマンドを実行する。
(2014/12/30:追記 make menuconfig が ncurses (ncurses-devel) が無いと言われてエラーで終了する場合は、sudo apt-get install libncurses5-dev を実行する)

・Device Drivers に入る。

・Usespace I/O drivers にチェックが入っていることを確認する。
ZYBO_BMDCwASL_31_140924.png

・Userspace I/O platform driver with generic IRQ handling にチェックが入っていることを確認する。
ZYBO_BMDCwASL_32_140924.png

・確認できたらOK。チェックが入っていない時は、チェックを入れてSave する。

・Exit -> Exit -> Exit -> No (チェックが入っていなくて、Save したときはYes、この場合はLinuxカーネルを再度コンパイルして、uImage を再生成しよう)で抜ける。

zynq-zybo.dts を編集する。

・まずは、以前のドライバと区別するために、/home/masaaki/ZYBO/Digilent_Linux_Tutrial/drivers2 ディレクトリを作製した。

・Linux-Digilent-Dev/arch/arm/boot/dts/zynq-zybo.dts を drivers2 ディレクトリにコピーした。
ZYBO_BMDCwASL_33_140924.png

・zynq-zybo.dts を gedit で開いて、Vivado 2014.2 の V_ZYBO_BMDCfL でインスタンスしたAXIスレーブIPを generic-uio として追加した。割り込みは行わない。

		bitmap_display_cntrler_axim@43c00000 {
compatible = "generic-uio";
reg = < 0x43c00000 0x10000 >;
};
char_rom_axil@0x43c10000 {
compatible = "generic-uio";
reg = < 0x43c10000 0x10000 >;
};
led_gpio@0x41200000 {
compatible = "generic-uio";
reg = < 0x41200000 0x10000>;
};

ZYBO_BMDCwASL_34_140925.png

・SDカードの第2パーティションにある UbuntuのRoot File System で動作させるため、zynq-zybo.dts を編集した。
44行目のコメント行を外して、43行をコメントアウトした。

/*		bootargs = "console=ttyPS0,115200 root=/dev/ram rw earlyprintk"; */
bootargs = "console=ttyPS0,115200 root=/dev/mmcblk0p2 rw earlyprintk rootfstype=ext4 rootwait devtmpfs.mount=1";

ZYBO_BMDCwASL_39_140926.png

・Ubuntuが起動してからエラーが出るので、zynq-zybo.dts の operating-points を以下の様に変更した。(”ZYBO用のEmbedded Linux をブートするSDカードの作り方”参照)

operating-points = <666667 1000000 333334 1000000>;

ZYBO_EM_Linux_141_140915.png

../Linux-Digilent-Dev/scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb zynq-zybo.dts コマンドで、devicetree.dtb を生成した。
ZYBO_BMDCwASL_35_140925.png

・”ZYBO用のEmbedded Linux チュートリアル6(BOOT.bin の生成)”の通りにBOOT.bin を生成した。
(但し、FSBL -> src -> fsbl_hooks.c のCコードを Z:\ZYBO_BS_emlx\source\vivado\SDK\fsbl\fsbl_hooks.c に置き換えると u-boot が起動しなくなるので、書き換えは行わない)

SDKでFSBLプロジェクトを作製した。
ZYBO_BMDCwASL_36_140925.png

BOOT.bin を生成。
ZYBO_BMDCwASL_37_140925.png

BOOT.bin が出来上がった。
ZYBO_BMDCwASL_38_140925.png

・出来上がった BOOT.bin と devicetree.dtb をSDカードの同じ名前のファイルと入れ替えた。

・SDカードをZYBOに挿入して電源をONした。

・Linuxがブートして、Ubuntuが立ち上がった。
ZYBO_BMDCwASL_40_140926.png

ls /dev/uio* コマンドを実行すると、uio が3つできていた。
ZYBO_BMDCwASL_41_140926.png

ZYBO用の Linaro Ubuntu のPL部にビットマップ・ディスプレイ・コントローラを搭載する4(UIOの設定2)”に続く。
  1. 2014年09月24日 05:53 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/2936-cf82d72c
この記事にトラックバックする(FC2ブログユーザー)