37
B2G(OSSFirefoxOS)搭載組み込みボード FirefoxOS勉強会 2015/3/17 Naoki Sekiguchi

20150317 firefox os勉強会

Embed Size (px)

Citation preview

B2G(OSS版FirefoxOS)搭載組み込みボード@FirefoxOS勉強会 2015/3/17

Naoki Sekiguchi

自己紹介

• 関口 直紀(Sekiguchi Naoki)

• KDDI研究所

• Web関連の開発

自己紹介

• 関口 直紀(Sekiguchi Naoki)

• KDDI研究所

• Web関連の開発

最近のスキルアップ

• 電気回路のはんだ付け

• 秋葉原電気街の歩き方

• レーザーカットデザインの作り方

• コンパスによる正八角形の作図

• スペインでの木材加工の頼み方

Agenda

• MozOpenHardの取り組み

• B2G(OSS版FirefoxOS)搭載組み込みボードCHIRIMEN

• CHIRIMENの開発

• MWC2015ミニレポート

MozOpenHardの取り組み

現在のWoTの姿

MozOpenHardで目指すWoTの姿

Pervasive Browsers!

Web of Lanterns(デモ)

• Revolving Lantern~ A Web browser ~

– 360度ディスプレイ

– フィジカルインターフェース

• NyoroNyoro Lantern~ duplicate and fork physical ~

– 3D変形

–モーションのダウンロード

– CSS lighting

協働プロジェクト

Welfare x Web(w/ WATERDESIGN Co.,Ltd.)

Satellite x Web(w/ FABSAT project)

Spec (2015.03. now)

B2G(OSS版FirefoxOS)2.5Hardware:● Rockchip RK3066 (1.6Ghz)

● 1GB DDR3 DRAM

● 8GB Nand Flash

● HDMI Micro x 1

● Micro SD Slot x 1

● USB (Micro x 2, Full x 1)

● I/O 28pin

(incl. I2C, UART, GPIO, SPI, Sound in/out etc)

Size

48mm

80mm

Interface

micro USB (OTG)

micro HDMI

micro UWB(DEBUG)

ADB接続やイメージの書き込み。

AC電源

Full USB端子

シリアルコンソールなど。電源ポートも兼ねる。

ちょっと抜けやすい。。

WiFiアダプタやUSBハブ用

ローダーモードになるのに使用(後述)

recovery key

I/O 28pin スルーホールで用意しました。

名前(CHIRIMEN)の由来

Web

ハード

実は初めは“INARI”で、初期サンプルには印字が。。。

CHIRIMEN = 縮緬(織物)

“Web”と“ハード”異なる世界を織り込んで新しいモノを作っていく

CHIRIMENの開発

準備• まずお手元にCHIRIMENを用意して・・・

・・・2015.3、現存するCHIRIMENは5枚

• Marsboard RK3066

– 同じチップを使った組み込みボード

– ソフトウェア的にはCHIRIMENと一緒

→同じイメージをインストールできる

– http://www.marsboard.com/

代わりのボード

B2Gのインストール

おおまかな手順• B2Gイメージのビルド• update.imgの生成• ローダモードで接続しイメージの書き込み

• 書き込みに必要なツールなど– https://github.com/MozOpenHard/CHIRIMEN-tools

• 詳しい手順は以下– https://github.com/MozOpenHard/CHIRIMEN-

tools/blob/master/doc/installFirefoxOS.pdf

B2Gイメージのビルド

• B2Gのビルドに必要なパッケージのインストール(割愛)

• B2Gのソースを取得( Matchstick用のソース)

• MozOpenHardのリポジトリのソースを取得

• B2Gをビルド

$ git clone https://github.com/flingone/B2G-FlingOne.git $ cd B2G-FlingOne $ ./config.sh –j 4 rk30sdk

$ cd.repo$ git clone https://github.com/MozOpenHard/local_manifests.git $ cd .. $ repo sync –d –j 4

$ ./build.sh –j 4 $ ./flash.sh

rockdev/Image/にboot.img, kernel.img, recovery.img, system.imgが生成される

update.imgの生成

• 必要なツールの導入

• ビルドしたboot.img, kernel.img, recovery.img, system.imgをpackage-fileに従い配置

• mkupdate.shを実行 ->update.imgが生成される

$ git clone [email protected]:MozOpenHard/CHIRIMEN.git

$ cd B2G-FlingOne/rockdev/Image$ cp boot.img kernel.img recovery.img system.img CHIRIMEN/rockdev-rk3066/Image/

$ cd CHIRIMEN/rockdev-rk3066/$ ./mkupdate.sh

イメージの書き込み(ubuntu)• Linux_Upgrade_Tool_v1.2.1.zipを任意の場所に展開し、PATHを設定

• CHIRIMENをローダモードで接続– recovery keyを押しながら電源投入

– ※Marsboardの場合はVol+

• イメージの書き込み

※自動で再起動するのでFirefoxOSが立ち上がるまで待つ

※書き込みで失敗する現象が何度か確認されているので、うまくいかな

い場合、2,3回書き込み直してみると成功するかも

$ cd CHIRIMEN$ PATH=${PATH}:`pwd`/Linux_Upgrade_Tool_v1.2.1

$ upgrade_tool uf update.img

WebアプリからGPIO制御

node(httpサーバ)

gecko

gonk

gaia(Webアプリ)

WebGPIOAPI

• Gecko APIからGPIO制御(本間さんが実現!?)

• nodeを経由してGPIOを制御してみる

sysfsからのGPIO制御

• まずはshellコマンドからのGPIO制御• GPIO端子の論理番号確認

– CHIRIMENは基板上のLEDがGPIO6_B3(gpio363)から制御可能– 6*32 + 160 + 8+3 = 363– 計算方法: http://www.hotmcu.com/wiki/Use_GPIO_in_marsboard_RK3066

• sysfsからGPIO制御

# echo 363 > /sys/class/gpio/export# echo “out” > /sys/class/gpio/gpio363/direction# echo 1 > /sys/class/gpio/gpio363/value

$ adb shell

CHIRIMENにログイン

※後ほど使うので、これをledon.shとして保存しておく

ledon.sh

nodeのインストール• nodeのバイナリファイルをCHIRIMENにpush

– ビルドしてくれたバイナリファイル(感謝)

• https://www.facebook.com/groups/305208196333685/353904911464013/

• nodeからshellコマンドでGPIO制御のコマンドを実行– ※ shellスクリプトを実行する場合/system/binへのシンボリックリンクを作っておく

$ adb root$ adb remount$ adb push node /system/bin/node

$ adb shell# mount –o remount, rm /# ln –s /system/bin /bin

nodeサンプルコードvar http = require('http'),

url = require("url");exec = require('child_process').exec;

http.createServer(function (req, res) { var path = url.parse(req.url).pathname;if(path.charAt(0) == "/"){if(path.split("/")[1] == "ledon"){console.log("ledon");ledOn();

}}

}).listen(8000);console.log('Server running at port 8000');

function ledOn(){var child = exec("/etc/www/nodeGpio/ledon.sh", function(err,

stdout, stderr) {if (!err) {console.log("success");

}else{}

});}

server.js

サーバプログラムの実行• server.jsとledon.shをpush

• shellスクリプトのパーミッションを変更し、サーバプログラムの実行

• サーバへアクセス

→ 基板上のLEDが点灯するはず!

$ adb push server.js /etc/www/nodeGpio$ adb push ledon.sh /etc/www/nodeGpio

$ adb shell# cd /etc/www/nodeGpio# chmod 755 ledon.sh# node server.js

# busybox wget http://127.0.0.1:8000/ledon

灯籠デモの構成

node(httpサーバ)

gecko

gonk

gaia(Webアプリ)

Arduino

シリアル通信

Browser

別の端末

HTTP

GPIO、I2C

便利グッズの紹介

• スルーホール用テストワイヤ– http://www.marutsu.co.jp/pc/i/137556/–スルーホールに直接挿すことができる–ブレッドボードにも挿せる(但し接触は弱め)

MWC2015

スペインでの作業場• スペインについても作業は終わっておらず・・・

通路• 会場2階の通路はFirefoxの垂れ幕で埋め尽くされる

Mozillaブース• ブースには巨大なFoxが

Fox den (セッションスペース)

ガラス張りのセッションスペース

ガラスにはFirefoxロゴ

灯籠デモとCHIRIMENを紹介してきました

Summary

• MozOpenHardの取り組み

• B2G(OSS版FirefoxOS)搭載組み込みボードCHIRIMEN

• CHIRIMENの開発

• MWC2015ミニレポート

今後のこと

• Maker Faire @ all over the world!

– Tokyo, NY,…

• CHIRIMENおさわりイベント

–随時 ※facebookコミュニティでアナウンスします

プロジェクトに参加してくれる方• MozOpenHard

– http://mozopenhard.mozillafactory.org/

• Facebookコミュニティ(議論の場)

– https://www.facebook.com/groups/305208196333685/?pnref=lhc

• CHIRIMEN技術情報

– http://mozopenhard.mozillafactory.org/techinfo#hardspec