カーネルを3.15にしてみた
DRMの件で調べていたら、linux-nextにJetson TK1対応が入っているということがわかりました。
同様の対応が以下のリポジトリにも入っているようなので、こっちを使ってみました。
https://git.kernel.org/cgit/linux/kernel/git/tegra/linux.git/
for-nextブランチをtegra_defconfigでビルドして、SDにrootfsを書いて、カーネルとdtbを更新してみるも、起動途中でエラー。
どうも、rootfsを認識できていない。
そもそも、SDカードに対応していないようです(USBフラッシュにも対応していませんでしたorz)
しかたなく、rootfsをeMMCにおいてみたら、起動はするんですが、いろいろと足りていない。
まず、画面がでない。
どうやら、HDMIに対応していない。
さらに、ALSAも対応していない。
一体何ができんねん!
と一人むなしく突っ込みを入れる始末。
現実逃避で、nouveau drmのTegra K1対応パッチを当てて再ビルドしてみましたが、drmドライバもまともに動きませんでした(/dev/dri/card0が出てこない)
まぁ、/dev/card/dri0だけ出現されても、HDMIに対応していないので、画はどこにも出ないんですけどね・・・
せっかく休暇を取ったのに、散々です。
日本で最も早く・・・は言い過ぎかもしれませんが、相当早く入手できた(秋葉店舗での受け取りなら、私より1日早くうけとれましたからね)ということで、浮かれていたらこの有様です。
仕事中よりも長い時間ボードを弄り倒した結果、何も出来ねーじゃんという結果だけを得るとは・・・
Tegra4Linuxの新しいバージョンに期待するか、linuxとu-bootの次のメジャーバージョンアップに期待するかですね。
u-bootはちゃんと対応してくれないと、eMMCの書き換え的な意味でどの道やばいんですけどね。
まぁ、一応予備ボードも確保してあるので最悪eMMCを潰したとしても、文字通り、換えは効くんですが(そういうケースの為じゃなかったんだけどなぁ・・・)
nouveau drm Tegra K1対応(May 2014)のバックポートは未だ試してないですが、期待薄ですかね(しかも結構疲れる)。
u-bootを使ってみた
Jetson TK1のブートローダ、カーネルの記事で、ブートローダとカーネルがSPIフラッシュに書かれている?と書きましたが、eMMCかもしれません。
flashのscript実行時のログとかを調べているうちに、eMMCにブートローダ、dtb、カーネルが格納されているパーティションをみつけたので。
どちらにせよ、書き換え限度があるところに、そんなものを置いてしまうのはいただけないですね。
というわけで、以下のツールを使って、flashに書き込まず、USB経由でu-bootを起動してみました。
https://github.com/NVIDIA/tegra-uboot-flasher-scripts
しかし、結果はまともに動かず。
一応、u-boot自体はそれなりに動いているんですが、カーネルが正常に起動せず、途中でエラーを吐いて止まりました。
kernel commandlineを調べてみたところ、device treeでは↓こんな感じですが、
tegraid=40.0.0.00.00 vmalloc=256M video=tegrafb console=ttyS0,115200n8 earlyprintk
nVidiaのプロプライエタリなブートローダから起動した場合は、かなり増えてます。
u-bootの環境変数を設定して、kernel commandlineをあわせてみると、それまで出ていたエラーは消えましたが、結局起動途中でとまりました。
nVidiaのローダで実行している、何らかのレジスタ初期設定?がu-bootには無いので、起動しないんじゃないかと思っています。
http://elinux.org/Tegra/Boards/NVIDIA_Jetson_TK1
によると、u-bootはetherとか未対応のものがあるとのことで、
もうちょっと待たないと、使えそうにないですね。
ネットを調べても、Jetson TK1でu-bootを使ってLinuxを起動したという話は聞かないですし。
ちなみに、u-bootのJetson TK1対応は、以下にもはいってましたが、駄目でした。
http://git.denx.de/?p=u-boot/u-boot-arm.git;a=summary
https://github.com/swarren/u-boot
nouveauドライバをbackportしてみたが、動かず
以下を、L4Tにbackportしてみました。
http://lists.freedesktop.org/archives/dri-devel/2014-January/053028.html
上記は、それなりに新しめのカーネルへのパッチで、L4Tの3.10には当たらず。
3.10には入っていないコードがあったりもするので、その辺を適当に修正して、何とかビルドは通りましたが、起動してmodprobeしたら、memory allocationに失敗。
以下が最新のTegra K1 nouvearu/drmパッチっぽいです。
http://lists.freedesktop.org/archives/dri-devel/2014-May/058901.html
これをbackportしても動かないようなら、Linux4Tegraに取り込まれるのを待った方がいいかなぁ。。
Tegra K1用のコードなんだから、Tegra4Linuxに入れといてくださいよ、nVidiaさん
ネットを探しても、Jetson TK1でwestonを動かしたとかいう情報ないしなぁ。。
衝撃の事実。Linux4TegraはDRMに対応していないかも
wayland/westonのビルドが終わったので、rootfsを更新して、起動して見るも、なぜか
/dev/dri/card0
が存在しない。というか、/dev/dri自体が無い。
DRMが有効かされていないのかな、と思って
あたりを有効化してみたが、変化なし。
どうも、drivers/gpu/host1x/tegra/drm.cはGK20A(Tegra K1のGPU)には対応していないんじゃないだろうか。
freedesktopのMLには、nouveauドライバのパッチが流れているので、それを当てないと駄目っぽいですね。
今日中に、weston drm-backendを起動したいなぁ。。
余談ですが、nouveauはヌーボーと読むらしいです。
ボジョレー・ヌーボーのヌーボーと同じスペルでした。
Jetson TK1を買いました
GW中に、予約注文していたTegra K1の評価ボード(Jetson TK1)が届きました。
http://www.nvidia.co.jp/object/jetson-tk1-embedded-dev-kit-jp.html
早速動かしてみたところ、どうやらeMMCには最初からUbuntuが書かれていたようで、Ubuntu 14.04が動きました。
とりあえず、SDにrootfsを焼いて、ブートに成功。
まずは、wayland/westonをビルドして動かしてみようと思います。
pandaboardでは、DDKがプロプライエタリという都合上、動かせなかったけど、
Tegra K1は、mesaを使うので動くはず、と思ってJetson TK1を買ったのでした。