Jetson TK1でEthernet外付けを試してみた
久しぶりの更新になります。
先日、Jetson TK1でEthernet外付けを試してみました。 ついでに、iperfを使って速度計測も実施しました。
計測結果
使用したデバイス
USB-Ethernetアダプタ Logitec LAN-GTJU3 http://www.amazon.co.jp/gp/product/B00BJRU9IG Mini PCI-eのEthernetカード スターテック.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経由で実行できない)
詳しくは、以下を参照ください。
Jetson TK1 Tizenでcrosswalkが動いた
おはようございます、faithです。
最新のsnapshotでcrosswalkが動きました。
CrosswalkのWebGL Sampleは動きました。
ただ、Aquariumを起動すると、 一部テクスチャが表示されなかったり、 三角形状のちらつき(Weston ivi-shellでも発生している既知の不具合)が発生したり、 最悪、nouveauドライバがエラーを吐いて死にます。
- 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 (GoogleのWebGLサンプルアプリ)が動きました。
特にちらつき等は発生していません。
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
実機動作
UbuntuのGUIから、ターミナルを立ち上げて、以下を実行すると、 Aauariumが表示されます。
$ cd ~/work.crosswalk/crosswalk/src/out/Release $ exec ./xwalk https://webglsamples.googlecode.com/hg/aquarium/aquarium.html