faith's blog

気まぐれ日記

カーネルを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 drmTegra 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のブートローダ、カーネル

Jetson TK1はブートローダカーネルはSPIフラッシュに配置するみたいです。

 

私は、カーネル屋さんじゃないので、そこまで頻繁にカーネルを書き換えたりするつもりは無いですが、書き換え限界があって、取り替え不能な素子にカーネルが書かれているのは精神安定上よろしくないので、対策を考えます。

 

ちょっと調べてみた感じだと、デフォルトはnVidia独自のブートローダが使われるようですが、u-bootも選択できるようです。

 

ブートローダをu-bootに変更して、SDカードをvfatとext4の2-partitionにして、u-bootからSD上のuImageとかをロードするようにしてみようかな。

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を買ったのでした。