FC2カウンター FPGAの部屋 2014年09月09日
FC2ブログ

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

FPGAの部屋

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

ZYBO用のEmbedded Linux チュートリアル10(myLedのドライバの構築とデバイス・ツリーへの追加)

ZYBO用のEmbedded Linux チュートリアル9(Frame Buffer)”の続き。

今回は、myLedのドライバを生成して

Embedded Linux® Hands-on Tutorial for the ZYBO™”の”6 Modify Device Tree and Compose Kernel Driver”をやってみた。

1.最初に、/home/masaaki/ZYBO/Digilent_Linux_Tutrial/drivers ディレクトリを作成した。
mkdir drivers
ZYBO_EM_Linux_114_140908.png

2.drivers ディレクトリに入った。
cd drivers

3.gedit で Makefile を作成した。その際に、all: 、clean: などのタグは行の最初に記述する必要があった。
ZYBO_EM_Linux_115_140908.png

obj-m := myled.o

all:
    make -C ../Linux-Digilent-Dev/ M=$(PWD) modules

clean:
    make -C ../Linux-Digilent-Dev/ M=$(PWD) clean


4.ドライバ用のCソース myled.c を作成した。”Embedded Linux® Hands-on Tutorial for the ZYBO をやってみた”さんの 6.2 3-4 にバグ情報がある。myled.c 自体もダウンロード出来るリンクがある。
ZYBO_EM_Linux_116_140908.png

5.ドライバ用のCソースを myled.c をビルドした。
make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi-
ZYBO_EM_Linux_117_140908.png

現在の drivers ディレクトリの様子を下に示す。myled.ko ができた。
ZYBO_EM_Linux_118_140908.png

6.Linux-Digilent-Dev/arch/arm/boot/dts/zynq-zybo.dts を drivers ディレクトリにコピーした。
cp ../Linux-Digilent-Dev/arch/arm/boot/dts/zynq-zybo.dts .
ZYBO_EM_Linux_119_140908.png

7.zynq-zybo.dts を編集する前に myLed_0 のアドレスを確認する。オフセット・アドレスは 0x43C30000 ~ 0x43C3FFFF までの 64kバイトだった。
ZYBO_EM_Linux_120_140908.png

8.zynq-zybo.dts を gedit で編集して、myled の項目を追加した。私はここでスペルを間違っていて ls /proc で myled がでなくて困った。(gotz_surf さん、ありがとうございました。なお、修正した zynq-zybo.dts は、”Embedded Linux® Hands-on Tutorial for the ZYBO をやってみた”さんにあります。)
ZYBO_EM_Linux_121_140908.png

9.DTCで zynq-zybo.dts をコンパイルして、devicetree.dtb を作成した。
../Linux-Digilent-Dev/scripts/dtc/dtc -I dts -O dtb -o devicetree.dtb zynq-zybo.dts
ZYBO_EM_Linux_122_140908.png

10.出来上がった、myled.ko と devicetree.dtb をSDカードにコピーした。
ZYBO_EM_Linux_123_140908.png

11.10.のSDカードをZYBO に入れて、電源ONでSDカードからブートさせる。

12.SDカードを /mnt ディレクトリにマウントする。
mount /dev/mmcblk0p1 /mnt/

13./mnt ディレクトリに入って、内容を見た。SDカードの内容が見えた。
cd /mnt/
ls


14.myled.ko ドライバを insmod した。
insmod myled.ko

15.ls /proc をしたところ、14 に myled が入っているのが見えた。

16.echo 0xf > /proc/myled でZYBOのLEDが全点灯した。
ZYBO_EM_Linux_125_140910.jpg

17.mkdir -p /lib/modules/`uname -r` を実行した。

18.cp myled.ko /lib/modules/`uname -r` を実行した。。

19./lib/modules ディレクトリに、3.14.0-xilinx-13567-g906a2c9 ディレクトリができた。その中に、myled.ko がコピーされた。

20.rmmod myled でドライバを削除した。
ZYBO_EM_Linux_124_140910.png

なお、電源を消すと、3.14.0-xilinx-13567-g906a2c9 ディレクトリと myled.ko は消えてしまう。RAMDISKに書き込む方法は”ZedBoard Linux のフレームバッファにカメラ画像を表示12(SDカードのイメージ変更)”を参照のこと。

ZYBO用のEmbedded Linux チュートリアル11(ユーザー・アプリを実行)”に続く。
  1. 2014年09月09日 05:29 |
  2. ZYBO
  3. | トラックバック:0
  4. | コメント:0