T T izen porting izen porting 入 入 門 門 とその実例 とその実例 と と T T izen izen ちゃん(仮) ちゃん(仮) 2012.12.15 (Sat) 2012.12.15 (Sat) Yuya Adachi (@moguriso) Yuya Adachi (@moguriso)
Oct 31, 2014
TTizen portingizen porting
入入門門とその実例とその実例
とと TTizenizen ちゃん(仮)ちゃん(仮)
2012.12.15 (Sat)2012.12.15 (Sat)Yuya Adachi (@moguriso)Yuya Adachi (@moguriso)
2/59
自己紹介自己紹介
● Yuya Adachi(@moguriso)Yuya Adachi(@moguriso)● ブログ:ブログ: http://moguriqt.hatenablog.jphttp://moguriqt.hatenablog.jp
● DeviceDriverDeviceDriver 書いたり書いたり– GPU, UART, SPI, I2C...GPU, UART, SPI, I2C...
● AppApp のの AndroidAndroid 移植など移植など
3/59
アジェンダアジェンダ
● 移植までの背景移植までの背景● Tizen Porting ...Tizen Porting ... 起動編起動編● Tizen Porting ...Tizen Porting ... 画面編画面編● 実例実例● まとめ、今後についてまとめ、今後について
4/59
移植の背景移植の背景
5/59
20112011 年度〜年度〜
● 関西で勉強会を開始関西で勉強会を開始– 会社の施設、設備を借り始めた会社の施設、設備を借り始めた
● OSCOSC への参加も開始への参加も開始– 平日でも仕事扱い平日でも仕事扱い– 交通費交通費も貰えるようになったも貰えるようになった
● 東は東京、西は広島まで東は東京、西は広島まで
6/59
20122012 年度〜年度〜
社内会議にて社内会議にて
上司「上司「今年は成果を求めていく今年は成果を求めていく !!. . .. . . 成果が出ないと成果が出ないと
どうなるって? どうなるって?」」
7/59
20122012 年度〜年度〜
上司「上司「 (( お前がウロウロするお前がウロウロする )) 交通費とか出なくなるっ 交通費とか出なくなるっ てことだよ!?てことだよ!?」」
(※)カッコ内は私の妄想 (?)です、たぶん
8/59
20122012 年度〜年度〜
(( ;゜;゜ ДД ゜゚ ))
9/59
20122012 年度〜年度〜
● 機材を調達機材を調達 (( 借用借用 ))– LinuxLinux が動くことは知っていたが動くことは知っていた– 環境に触ったこともあった環境に触ったこともあった– 会社の先輩会社の先輩 を巻き込んだを巻き込んだにも手助けをにも手助けを
お願いしたお願いした– 20122012 年年 77 月後半から開始月後半から開始
10/59
TizenPortingTizenPorting〜起動編〜〜起動編〜
11/59
基本方針基本方針
● 大前提は大前提は TizenTizen が動くことが動くこと– 動くかどうかもわからない動くかどうかもわからない
● TizenTizen が動いてれば後はどうが動いてれば後はどうでもなると思っていたでもなると思っていた– ““ 動くこと”が正義!動くこと”が正義!
12/59
環境面の整理環境面の整理
FileSystem
tftp で uboot, Linux kernel をロードしNFS を利用して rootfs を mount
uboot
13/59
移植作業(1)移植作業(1)
● u-boot (bootloader)u-boot (bootloader)● LinuxKernel (2.6.x )LinuxKernel (2.6.x )
– BSPBSP でで patchpatch 提供提供
らくらく出来た!
...そもそも、 patchを当てて buildしただけ ...
14/59
移植作業(移植作業( 1.11.1 ))
2012/082012/08 前半前半
先輩「先輩「動いたでー動いたでー」」
15/59
移植作業(移植作業( 1.21.2 ))
速っ速っ !(!( ;゜;゜ ДД ゜゚ ))
16/59
移植作業(移植作業( 1.31.3 ))
mer#
17/59
移植作業(移植作業( 1.41.4 ))
私 「それ私 「それ TizenTizen ちゃうちゃう MerMer や!や! しかも、 しかも、なんでなんで CUICUI ?」?」
先輩「だって先輩「だって KernelKernel にパッチがにパッチが 当たってる当たってるみたいでみたいで画面が画面が でーへん! でーへん!」」
(※)実際にMerは Kernelに patchが 当たっている (?)みたいです
18/59
移植作業(移植作業( 1.51.5 ))
● MerMer は諦めては諦めて TizenTizen に環境をに環境を移行してもらう移行してもらう
「折角環境作って、「折角環境作って、 KernelKernelブートする所まブートする所まで行ったのにまた1からやり直しや」で行ったのにまた1からやり直しや」
とかブツブツ言われたるも、なんとかお願いして Tizenに気分を代えてもらった。
19/59
移植作業(移植作業( 1.61.6 ))
2012/082012/08 半ば半ば
先輩「先輩「起動するように起動するように なったで なったで」」
20/59
移植作業(移植作業( 1.71.7 ))
************************************************************●* SAMSUNG LINUX PLATFORM *●************************************************************●
●xx.xx.xx.xx login: root●-sh-4.1#
21/59
移植作業(移植作業( 1.81.8 ))
やっぱりやっぱり CUICUI かか !!(( ;゜;゜ ДД ゜゚ ))
Scratch Build System(SBS)で生成された rootfsをそのまま NFSでmountさせていました。それまでは全く動いていなかったので” Sumsung”と出ただけでかなり感動しました
22/59
移植作業(移植作業( 22 ))
● rootroot ファイルシステムの構築ファイルシステムの構築– micmic コマンドを利用コマンドを利用 (fs(fs 指定指定 ))– NFSNFS でで mountmount
#mic create fs lb-tizen_20120617.2.ks -o .
動くようになってきて、面白くなってきたので、このあたりから自分でも手を動かすようになりました
23/59
移植作業(移植作業( 2.12.1 ))
rootfsを差し替えただけで、スプラッシュが出るようになった。これはモチベーションがとても上がった
24/59
移植作業(移植作業( 2.22.2 ))
この時点ではエラーが出ていて、 Tizenのメニュー画面は出ていなかった。マウスカーソルも出ていなかった。ともあれ、先輩のいない所で動かして画面が出たので、先輩にすごく自慢した
25/59
移植作業(移植作業( 2.32.3 ))
2012/082012/08 後半後半
先輩「先輩「メニュー出たで。メニュー出たで。 あと、マウスカーソルも あと、マウスカーソルも 出るようにしたったで〜 出るようにしたったで〜」」
実際にはフレームバッファを制御するドライバにも手を入れています
26/59
移植作業(移植作業( 2.42.4 ))
● フルパスでコマンド指定するとフルパスでコマンド指定するとアプリが起動することが判明アプリが起動することが判明
#/opt/apps/org.tizen.menu/bin/menu
無謀にもこの辺りから展示会に出すことを画策し始めました。改めて考えると、怖いもの知らずでした。。。
27/59
移植作業(移植作業( -- ))
2012/092012/09 前半前半 私 「問題はありますが 私 「問題はありますが動い動い
てます てます。。 TizenTizen が動いたが動いたというという 売りで行きましょう!」 売りで行きましょう!」 営業「あ、そう」 営業「あ、そう」
28/59
移植作業(移植作業( -- ))
2012/092012/09 前半前半某社様「某社様「 GPUGPU アクセラレーションアクセラレーション
が効いてないと出展して が効いてないと出展して も意味無いですね も意味無いですね」」営業「そうですか。営業「そうですか。 (( 私に向かって)私に向かって)で、で、いつできる?いつできる?」」
29/59
移植作業(移植作業( -- ))
軽っ軽っ !(!( ;゜;゜ ДД ゜゚ ))(※)フィクションです。「できるだけ頑張れ」的なことは言われましたが ...
30/59
TizenPortingTizenPorting〜画面編〜〜画面編〜
31/59
移植作業(移植作業( 33 ))
● H/WH/W アクセラレーション対応アクセラレーション対応– Tizen MobileTizen Mobile 1.0の1.0の rootfsrootfs ははソフトウェアレンダリングで動いていたソフトウェアレンダリングで動いていた
– X11X11 対応の対応の GPUGPU ドライバとか必要なものドライバとか必要なもの多数多数
# /opt/apps/org.tizen.browser/bin/browser ●CRI<2459>:elementary elm_w in.c:1869 elm_w in_add() OpenGL engine creation failed.
32/59
移植作業(移植作業( 3.13.1 ))
33/59
移植作業(移植作業( 3.23.2 ))
● EVAS/ECORE/EINA/EET/EVAS/ECORE/EINA/EET/ELEMENTARY...ELEMENTARY...EFLEFL 周りのモジュールを大半周りのモジュールを大半OpenGL(ES)OpenGL(ES) 対応にリビルド対応にリビルド
続きはWeb(http://moguriqt.hatenablog.jp)で
34/59
移植作業(移植作業( 3.x3.x ))
● EFL(evas)EFL(evas) には既にには既に SGXSGX をを利用するパスがあった利用するパスがあった
● 基本的にビルドオプションを変基本的にビルドオプションを変更してリビルドしただけ更してリビルドしただけ
35/59
移植作業(移植作業( 3.33.3 ))
● 劇的ビフォーアフター劇的ビフォーアフター– Before : 0fpsBefore : 0fps
● 11 フレームにフレームに 55 〜〜 66 秒秒 (0.25fps)(0.25fps)
– After : 7fpsAfter : 7fps● 3030 倍以上の高速化!倍以上の高速化!
36/59
移植作業(移植作業( 3.43.4 ))
((  ̄∇ ̄ ̄∇ ̄ )v)v ドヤッドヤッ !!
37/59
移植作業(移植作業( 3.53.5 ))
2012/092012/09 半ば半ば AA 社様「社様「 7fps...7fps... 遅いですね!遅いですね!」」 BB 社様「社様「遅いですね!遅いですね!」」 上司「ええ、 上司「ええ、遅いですね!遅いですね!」」 営業「はい、 営業「はい、遅いですね!遅いですね!」」
(※)フィクションです。
38/59
移植作業(移植作業( 3.43.4 ))
((  ̄□ ̄; ̄□ ̄; ) )
39/59
移植作業(移植作業( 3.53.5 ))
2012/092012/09 半ば半ば AA 社様「ハイエンドモデルを社様「ハイエンドモデルを 貸与します 貸与します」」 BB 社様「社様「1ヶ月あれば出来ま1ヶ月あれば出来ま す? す?」」 上司「はい!」 上司「はい!」 営業「はい!」 営業「はい!」 (※)フィクションです。
40/59
TargetBoard SpecTargetBoard Spec
MIDDLEMIDDLERANGERANGEBOARDBOARD
CPU Cortex-A9 800MHz (Dual Core)
メモリ 1GBGPU PowerVR SGX 540
41/59
DevPhone SpecDevPhone Spec
CPU Cortex-A9 1.2GHz (Dual Core)
メモリ 1GBGPU Mali-400MP
42/59
DevPhoneDevPhone で動かすとで動かすと
19fps!19fps!
43/59
TargetBoard SpecTargetBoard Spec
HIGHHIGHENDEND
BOARDBOARD
CPU Cortex-A9 1.0GHz (Quad Core)
メモリ 1GBGPU PowerVR SGX 543MP2
44/59
H ighEndBoardH ighEndBoard
18fps!18fps!
45/59
移植作業(移植作業( 3.x3.x ))
● 劇的ビフォーアフター劇的ビフォーアフター (2)(2)– Before : 7fpsBefore : 7fps– After : 18fpsAfter : 18fps
● 実に実に 2.572.57 倍の高速化!倍の高速化!
46/59
移植作業(移植作業( 3.x3.x ))
この後も、紆余曲折がありこの後も、紆余曲折があり多くの方に多々ご迷惑を多くの方に多々ご迷惑を
お掛け致しましたお掛け致しました m(_ _)mm(_ _)m
47/59
実例実例
48/59
49/59
まとめまとめ
50/59
まとめまとめ
● ”” 動く”レベルであれば比較的容動く”レベルであれば比較的容易に移植可能だった易に移植可能だった– ホボ素のホボ素の LinuxLinux そのままそのまま
● ハードウェア機能を有効化するにハードウェア機能を有効化するにはドライバやソースの入手でハードはドライバやソースの入手でハードルは高かったルは高かった(( 全体で全体で 2w × 22w × 2 人位)人位)
51/59
今後について今後について
52/59
今後について今後について
● 3D3D 描画に未だ問題がある描画に未だ問題がある– 2.0a2.0a だと色々変わってるだと色々変わってる– 直す直す
● 車載向け機能の追加車載向け機能の追加– Tizen IV I , QtTizen IV I , Qt– GENIVI OSSGENIVI OSS
54/59
TizenTizen ちゃんちゃん(仮)(仮)
55/59
発案は西のきつねこと発案は西のきつねこと@fox_twitting@fox_twitting さんさん
56/59
絵師は絵師は@tiaritiari@tiaritiari さんさん
57/59
名前募集中です!
58/59
打倒クラウディアたん!
59/59
フォクすけくんにも負けません!!
60/59
名前募集中です!大事な事だから2回言いました!
61/59
Q & AQ & A
62/59
ご清聴ご清聴ありがとうございましたありがとうございました