faith's blog

気まぐれ日記

Jetson TK1でEthernet外付けを試してみた

久しぶりの更新になります。

先日、Jetson TK1でEthernet外付けを試してみました。 ついでに、iperfを使って速度計測も実施しました。

計測結果

使用したデバイス

USB-Ethernetアダプタ
Logitec LAN-GTJU3
http://www.amazon.co.jp/gp/product/B00BJRU9IG

Mini PCI-eEthernetカード
スターテック.COM ST1000SMPEX
http://www.amazon.co.jp/gp/product/B006VCPB2S

なお、どちらもLinux for tegra R21.4のデフォルトカーネルでそのまま使用できました。

結果

直付けのPCI-Express
→ 934.2 Mbits/sec

USB-Ethernetアダプタ
→ 173.1 Mbits/sec

Mini PIC-eのEthernetカード
→ 930.4 Mbits/sec

USB-Ethernetアダプタについては、Macに接続して確認してみたところ以下の数値になりました。

897 Mbits/sec

このことから、アダプタ自体の性能は問題無いが、Jetson TK1のUSBコントローラまたはドライバに問題があると言えそうです。

qemux86向けのYoctoをビルドしてみた

普段は、ARMのシングルボードコンピュータ向けでYoctoを使っているんですが、 qemu向けを試したことが無かったので、Yocto 1.6.1をMACHINE=qemux86でビルドしてみました。

core-image-satoのビルド

ソースの取得

$ export WORK=/path/to/work

$ cd $WORK
$ git clone git://git.yoctoproject.org/poky
$ git clone git://git.openembedded.org/meta-openembedded
$ git clone git://git.linaro.org/openembedded/meta-linaro.git

$ cd $WORK/poky
$ git checkout -b work yocto-1.6.1
$ cd $WORK/meta-openembedded
$ git checkout -b work dca466c074c9a35bc0133e7e0d65cca0731e2acf
$ cd $WORK/meta-linaro
$ git checkout -b work 8a0601723c06fdb75e62aa0f0cf15fc9d7d90167

パッチの適用

core-image-satoをYocto 1.6.1でビルドするとdocbook-utils-nativeでエラーになります

どうやらバグらしいので、パッチを当てて回避します

$ cd $WORK/poky
$ curl -k "http://pastebin.com/raw.php?i=cUb1x2Qj" > fix-openjade-yocto-issue.patch
$ patch -p1 < fix-openjade-yocto-issue.patch

参考:

[meta-freescale] [meta-fsl-arm] Build Errors

ビルド

$ cd $WORK
$ source poky/oe-init-build-env
$ bitbake core-image-sato

実行

$ runqemu qemux86

実行するとYocto Projectのスプラッシュが表示された後に、X11のデスクトップ画面が表示されました なお、core-image-satoにはWayland/Westonは含まれていないようです。

core-image-westonのビルド

$ bitbake core-image-weston

ビルドは通りましたが、runqemuを実行しても、以下のログで止まります。

Starting with no config file.
Loading module '/usr/lib/weston/drm-backend.so'
initializing drm backend

ちなみに、drm-backend.soではなくfbdev-backend.soを使うようにすれば、Framebufferでは動作しました。

P.S.

昨日、同僚からlinux 3.xの次は4.xをすっ飛ばして5.xになるようだ、というメールが kernel.org のコラ画像と共に送られてきてまんまと騙されました。

Weston 自動ビルドスクリプト

おはようございます。

x86_64向けに、Westonを自動ビルドするスクリプトgithubに登録しました。

faith0x7dc/weston-build-scripts · GitHub

使用方法

README.mdも参照ください。

スクリプトのダウンロード

$ mkdir wayland
$ cd wayland
$ git clone https://github.com/faith0x7dc/weston-build-scripts.git

コンパイル

スクリプトを実行する前に、環境変数TOPを設定する必要があります。

$ export TOP=$PWD

以下を実行すると、必要なパッケージを全部ビルドします。

$ ./scripts/build-all

実行

PATH, LD_LIBRARY_PATHなどの環境変数を設定する必要があります。

以下のスクリプトが、環境変数設定用のものです。

scripts/env_for_run.sh

Weston実行のコマンド例を以下に示します。

$ sudo su
# source ./scripts/env_for_run.sh
# weston

または

$ source ./scripts/env_for_run.sh
$ weston-launch

なお、ssh経由でwestonを実行する場合は、以下のオプションを追加する必要があります。 (tty番号は、2以外でも良い)

--tty=2

また、weston-launchはtty指定での実行に対応していないようです。 (つまり、weston-launchはssh経由で実行できない)

詳しくは、以下を参照ください。

Building Weston

新しいiPhone買いました

こんにちは、faithです。

今日仕事から帰って来たらiPhone届いてました。

iPhone 6 Plusです。

f:id:faith0x7dc:20140919161358j:plain

デカイです!(◎_◎;)
さすが5.5インチ。

でもiPhone 5Sよりも薄いです(≧∇≦)

重くはなっている筈なんですが、持ち比べてもそんな感じしないですね。

買ったのは勿論128GBモデルです。
SIMフリーで、お値段10万円弱。

今週末はこれで遊びます。

Jetson TK1 Tizenでcrosswalkが動いた

おはようございます、faithです。

最新のsnapshotでcrosswalkが動きました。

CrosswalkのWebGL Sampleは動きました。

f:id:faith0x7dc:20140911055930j:plain

ただ、Aquariumを起動すると、 一部テクスチャが表示されなかったり、 三角形状のちらつき(Weston ivi-shellでも発生している既知の不具合)が発生したり、 最悪、nouveauドライバがエラーを吐いて死にます。

f:id:faith0x7dc:20140911060222j:plain

  • nouveauドライバのエラー
nouveau E[   PFIFO][57000000.gpu] write fault at 0x0007fe0000 [PTE] from CE2/GR_COPY on channel 0x00a01eb000 [unknown]
nouveau E[xwalk[574]] failed to idle channel 0xcccc0000 [xwalk[574]]
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[xwalk[574]] failed to idle channel 0xcccc0000 [xwalk[574]]
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[   PFIFO][57000000.gpu] runlist 0 update timeout
nouveau E[   PFIFO][57000000.gpu] BIND_ERROR [ UNBIND_WHILE_RUNNING ]
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[   PFIFO][57000000.gpu] SCHED_ERROR [ UNK0d ]
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[   PFIFO][57000000.gpu] runlist 0 update timeout
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[   PFIFO][57000000.gpu] SCHED_ERROR [ CTXSW_TIMEOUT ]
nouveau E[    PBUS][57000000.gpu] MMIO read of 0x00000000 FAULT at 0x002650 [ TIMEOUT ]
nouveau E[xwalk[813]] failed to idle channel 0xcccc0000 [xwalk[813]]
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[weston[296]] nv50cal_space: -16
nouveau E[   PFIFO][57000000.gpu] SCHED_ERROR [ CTXSW_TIMEOUT ]
nouveau E[    PBUS][57000000.gpu] MMIO read of 0x00000000 FAULT at 0x002650 [ TIMEOUT ]
nouveau E[xwalk[813]] failed to idle channel 0xcccc0000 [xwalk[813]]
nouveau E[   PFIFO][57000000.gpu] SCHED_ERROR [ CTXSW_TIMEOUT ]
nouveau E[    PBUS][57000000.gpu] MMIO read of 0x00000000 FAULT at 0x002650 [ TIMEOUT ]
nouveau E[   PFIFO][57000000.gpu] channel 3 [xwalk[813]] kick timeout
nouveau E[   PFIFO][57000000.gpu] SCHED_ERROR [ UNK0d ]
nouveau E[   PFIFO][57000000.gpu] runlist 0 update timeout
nouveau E[   PFIFO][57000000.gpu] BIND_ERROR [ UNBIND_WHILE_RUNNING ]
nouveau E[   PFIFO][57000000.gpu] SCHED_ERROR [ UNK0d ]
nouveau E[   PFIFO][57000000.gpu] runlist 0 update timeout

とりあえず、今使っているカーネルでは、Aquariumは動かせないようです。

Thierry Reddingさんのカーネルはもう更新されないと思うので、 eLinuxに書かれている方法で、 Mainlineカーネルを動かすしかなさそうです(Tryはしたんですが、nouveauドライバがエラーを吐いて、動きませんでした)

ちなみに、crosswalkがいつの間にか(多分、9.xから)仕様が変わっていて、 Webブラウザとして使えなくなっていました。

そもそも、xwalkコマンドがありません。 以下を実行しても、ウィンドウが表示されません(Intel版でも同じでした)。

exec /usr/lib/xwalk/xwalk https://webglsamples.googlecode.com/hg/aquarium/aquarium.html

仕方が無いので、この辺を参考に、 CrosswalkのHello Worldに、Aquariumへのアンカを追加して、 Hello World経由で、Aquariumを表示しました。

先日の記事に書いたように、 kernel 3.10(nvidia Official Downstream) + L4T Ubuntu 14.04 LTS X11では普通に動いたので、 nouveauドライバ辺りに問題がありそうです(エラー吐いてるし)

eLinuxに書かれている方法をもう少し調べてみるかなぁ・・・。

【Tizen】Jetson TK1でcrosswalkが動いた【じゃない】

こんばんは。

久しぶりの更新になります、faithです。

Linux4Tegra(Ubuntu, X11)でcrosswalkが動きました。

Aauarium (GoogleWebGLサンプルアプリ)が動きました。

特にちらつき等は発生していません。

f:id:faith0x7dc:20140909200003j:plain

fpsは安定はしていませんが、20台後半〜40台前半ぐらいですね。

X11で動いたということは、Tizenで動かなかったのは、Ozone/Wayland周りに問題があるんですかね・・・。

書き溜めておいたメモをもとに、ビルド手順を書き出しておきます。

Linux4Tegraのrootfs取得、apply_binary.sh実行については省略します。 rootfsが/path/to/rootfsにあることを前提として記載します。

また、crosswalkのcross compile方法がわからないので、 qemu-arm-staticを使用して、chroot環境でビルドします。

Core i7 4771, RAM 32GB, Intel SSD 335 Series環境でも、 一晩で終わるか終わらないかというレベルでした。 (trial & errorだったので、正確な時間はわかりませんが)

Tizen-IVI 3.0 M3-June2014のninja, crosswalkを取得

$ cd /path/to/rootfs/home/ubuntu
$ sudo mkdir work.crosswalk

$ git clone ssh://review.tizen.org/platform/upstream/ninja
$ cd ninja
$ git checkout 133f21133f7f84019b192f59b178a16d5a11365e

$ git clone ssh://review.tizen.org/platform/framework/web/crosswalk
$ cd crosswalk
$ git checkout 5fabe5fb1f490490fab842be91d0c92975631008

chroot

$ cd ~/work.tegra/crosswalk/work/rootfs
$ sudo cp /usr/bin/qemu-arm/static usr/bin
$ sudo chroot . /bin/bash

パッケージの追加インストール

chroot # apt-add-repository universe
chroot # apt-add-repository multiverse
chroot # apt-get update
chroot # apt-get install g++ g++-multilib libgtk2.0-dev libxss-dev libxtst-dev libedbus-dev libdrm-dev libgnome-keyring-dev libpci-dev libudev-dev icu-devtools libicu-dev libxml2-dev libpulse-dev libnss3-dev libxslt-dev gperf bison flex libcap-dev libasound2-dev

hack

/usr/include/zconf.hが無くてビルドエラーになるので、それを回避する為にシンボリックリンクを張る

chroot # ln -s /usr/include/arm-linux-gnueabihf/zconf.h /usr/include/zconf.h

/usr/include/libxml2/libxml/tree.hがcrosswalk内のtree.hと衝突を起こして、xmlIO.hでビルドエラーが発生するため、それを回避する為にxmlIO.hを直接修正する

--- xmlIO.h.orig        2014-09-07 14:58:13.448544350 +0900
+++ xmlIO.h     2014-09-07 14:59:05.652544547 +0900
@@ -17,6 +17,11 @@
 extern "C" {
 #endif
 
+#if 1
+typedef struct _xmlBuf xmlBuf;
+typedef xmlBuf *xmlBufPtr;
+#endif
+
 /*
  * Those are the functions and datatypes for the parser input
  * I/O structures.

normal userに切り替え

chroot # su ubuntu

ninjaのビルド

chroot $ cd ~/work.crosswalk/ninja
chroot $ python ./bootstrap.py
chroot $ mkdir ~/bin
chroot $ cp ~/bin

crosswalkのビルド

chroot $ cd ~/work.crosswalk/crosswalk
chroot $ ./build_xwalk.sh

build_xwalk.shの中身

Tizenのcrosswalkビルドログからビルド用のコマンドを抜き出したものです。

#!/bin/bash

export PATH=${HOME}/bin:${PATH}

export LANG=C
unset DISPLAY

export LD_AS_NEEDED=1
export LDFLAGS=' -Wl,--no-keep-memory'

export CFLAGS='-O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -fmessage-length=0 -marc
h=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=hard -g'
export CXXFLAGS='-O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -fmessage-length=0 -ma
rch=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=hard -g'
export FFLAGS='-O2 -g2 -feliminate-unused-debug-types -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=32 -Wformat -Wformat-security -fmessage-length=0 -marc
h=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=hard -g -I%_fmoddir'

# wayland
#GYP_EXTRA_FLAGS="${GYP_EXTRA_FLAGS} -Duse_ozone=1 -Denable_ozone_wayland_vkb=1 -Denable_xdg_shell=1"

# Force gold binary from chroot ld.gold provided by binutils-gold
GYP_EXTRA_FLAGS="${GYP_EXTRA_FLAGS} -Ddisable_nacl=1 -Dlinux_use_bundled_binutils=0 -Dlinux_use_bundled_gold=0 "

# Linking fails in Tizen Common when fatal ld warnings are enabled. XWALK-1379.
GYP_EXTRA_FLAGS="${GYP_EXTRA_FLAGS} -Ddisable_fatal_linker_warnings=1"

GYP_EXTRA_FLAGS="${GYP_EXTRA_FLAGS} -Dsysroot= "

# --no-parallel is added because chroot does not mount a /dev/shm, this will
# cause python multiprocessing.SemLock error.
export GYP_GENERATORS='ninja'
./src/xwalk/gyp_xwalk src/xwalk/xwalk.gyp \
--no-parallel \
${GYP_EXTRA_FLAGS} \
-Dchromeos=0 \
-Dpython_ver=2.7 \
-Duse_aura=1 \
-Duse_cups=0 \
-Duse_gconf=0 \
-Duse_gnome_keyring=0 \
-Duse_kerberos=0 \
-Duse_system_bzip2=1 \
-Duse_system_libexif=1 \
-Duse_system_libxml=1 \
-Duse_system_nspr=1 \
-Denable_hidpi=1

ninja -j8 -C ./src/out/Release xwalk

実機動作

UbuntuGUIから、ターミナルを立ち上げて、以下を実行すると、 Aauariumが表示されます。

$ cd ~/work.crosswalk/crosswalk/src/out/Release
$ exec ./xwalk https://webglsamples.googlecode.com/hg/aquarium/aquarium.html

【これでいいや】NUCでTizen-IVI 3.0-M3-June2014が動いた【投げやり】

おはようございます、faithです。

以前、Intel NUCでは動かなかったことを記事に書きましたが、 やはりカーネルに問題があったようです。

M3-June2014を書き込んで、カーネルだけM2-March2014に差し替えたところ、起動しました。

カーネルが3.14 -> 3.13に下がった程度なので、特にこれといって問題はないです。 (Tegraの場合3.15なので、そもそもIntel環境の方が古い)

当面、Intel環境はこれをベースにしようかと思います。