faith's blog

気まぐれ日記

kmscubeが動いた (3)

kmscubeが動いた(2)の続きです。

kmscubeのビルド

ソースの取得

$ cd /path/to/l4t-root
$ pushd home/ubuntu/src
$ git clone git://gitorious.org/thierryreding/kmscube.git
$ popd

ビルド

$ sudo chroot .
chroot # su ubuntu

chroot $ cd ~/src/libdrm
chroot $ ./autogen.sh --prefix=/usr/local
chroot $ make
chroot $ sudo make install

Storage の準備

SDカードに boot.scr を、USB Flash に zImage, Device Tree, rootfs を置きます。

Kernelのバイナリをrootfsへコピー

$ cd /path/to/l4t-root
$ sudo cp -a $TEGRA_WORK/kernel/linux.tegra.thierry/arch/arm/boot/{zImage,dts/tegra124-jetson-tk1.dtb} boot
$ sudo cp -a $TEGRA_WORK/kernel/test-images/linux.tegra.thierry/lib/modules/3.15.0-rc8-next-20140603-ga7426b0 lib/modules

boot.scr を SD に置く

SD を挿入

$ sudo mount /dev/sdh1 ~/mnt

boot.txt を ~/mnt にコピーし、mkimage コマンドで boot.scr を作成

$ pushd ~/mnt
$ sudo mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Tegra Boot Script" -d boot.txt boot.scr
$ popd
$ sudo umount ~/mnt

boot.txt はこんな感じです。

usb start
load usb 0:1 ${kernel_addr_r} /boot/zImage
load usb 0:1 ${fdt_addr_r} /boot/tegra124-jetson-tk1.dtb
setenv bootargs console=ttyS0,115200n8 console=tty1 rw rootwait root=/dev/sda1
bootz ${kernel_addr_r} - ${fdt_addr_r}

USB Flash を 挿入し、rootfs をコピー

$ sudo mount /dev/sdh1 ~/mnt
$ sudo cp -a * ~/mnt
$ sudo umount ~/mnt

u-boot を起動

Jetson TK1 に先ほど作成した SD と USB Flash を挿入、 micro USB ケーブルで PC と接続し、電源を入れ、Force Recovery モードに入ります。 Force Recovery モードへの入り方は、Quick Start Guide(紙の方)に書かれています。

Force Recovery モードに入ったら、Linux PC 上で以下を実行すると、 u-boot が起動し、boot.scr が読み込まれカーネルが起動します。

$ cd $TEGRA_WORK/bootloader/tegra-uboot-flasher/scripts
$ sudo ./tegra-uboot-flasher exec jetson-tk1

exec の部分を flash に変更することで、bootloader を書き換えることが可能。 私のボードは、既にu-bootに変更済みです。

kmscube の実行

カーネルが起動したら、以下のコマンドで kmscube を実行

$ kmscube /dev/dri/card1 /dev/card/dri0

HDMI の画面上で立方体がくるくる回ります。

続きます。