SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Downloaden Sie, um offline zu lesen
 
Arduino compatible layer
(with 6LoWPAN)
on Contiki
soburi
Open Source UN-Conference 2016 Kawagoe 2016/4/24
2 
About
● UNIX 島の老害サークルやってます
– Twitter https://twitter.com/crs
– GitHub https://github.com/soburi
● 夏冬の祭り以外は大して活動してません。
● 技術書典応募してみました。
3 
Recent works
●
KiCad で雑に基板を作るチュートリアル
http://www.slideshare.net/soburi/kicad-53622272
●
TWE-Lite を ArduinoIDE で使う
http://qiita.com/soburi/items/0b0aa3d0c4332a5e7a4c
●
TWE-Lite を ArduinoIDE で使って IPv6(6LoWPAN) で通信する。
http://qiita.com/soburi/items/b07c314d33ef71a10001
●
ScratchX から WebSocket 経由で eject してみる。
http://qiita.com/soburi/items/ea12671f973d24e512b0
●
ScratchX と ESP8266 を WebSocket でつないで遊んでみる。
http://qiita.com/soburi/items/ec0a39e4c6f3b9de4de4
大好評!
It’s new!
It’s new!
ウケなかった!
それなり
一番労力かけたネタが一番ウケなくて残念な感じなので、
ボヤキ宣伝しにきました
4 
TWE-Lite
● IEEE802.15.4 が話せるマイコン
● 秋葉原のあちこちで 1500 円で売っている
● 中身は JN5164 という NXP の石だが、 ARM ではなくて
OpenRISC 派生の独自アーキテクチャ (BA2)
● NXP の SDK はそこそこマトモだが、
国内流通版の SDK(APP-FW) が
色々とアレ
5 
Contiki
● 最近流行りの軽量 OS
● TI とか Atmel とか Contribute してる
● TWE-Lite(JN5164) も対応している
● プロトスレッドの仕組みでスタックレスの
マルチタスク処理ができる ( 後述 )
6 
Protothreads
static
PT_THREAD(example(struct pt *pt))
{
PT_BEGIN(pt);
while(1) {
PT_WAIT_UNTIL(pt,
counter == 1000);
printf("Threshold reachedn");
counter = 0;
}
PT_END(pt);
}
static
char example(struct pt *pt)
{
switch(pt->lc) { case 0:
while(1) {
pt->lc = 12; case 12:
if(!(counter == 1000)) return 0;
printf("Threshold reachedn");
counter = 0;
}
} pt->lc = 0; return 2;
}
● 行番号を状態変数としてステートマシンを作るワンダフルなマクロ群
● プロセス毎にコールスタック要らないから確かにローコスト
● NICE JOKE.
 
Coroutine
● Contiki には Multithreading API(Coroutine) がある。
● Protothreads でマルチタスクできるから
誰も実装していない!
● レジスタ・スタックの退避復元処理を書けば動く
● TWE-Lite の CPU の仕様が公開されてないから、
disassemble 見ながら Hack! した (F**k!)
● とりあえず動くようになった!
 
Arduino Compatible API
● Coroutine があると Contiki 上に Arduino 互換
API を実装できる
(Protothreads の文法に従わなくて済む )
● OS ベースで動くので API でブロッキング動作
してる裏で仕事ができる
Arduino API から
ネットワークプロトコルスタックが使える !
9 
6LoWPAN
● IPv6 を低電力低帯域ネットに無理矢理通す仕様
● Contiki は大手マイコンベンダがコミットしていて
実質 6LoWPAN の Reference Implement
● Arduino の API から使えるようにできた!
● TCP/IP なので API もほぼ既存と共通にできた!
● Arduino でも Industries 4.0 っぽい感じに!
● UDP のペイロード 33byte しかないけどな!
10 
Conclusion
● Arduino 互換レイヤを Contiki 上に構築できた
● Contiki based Arduino 、まだ色々遊べそう
● TWE-Lite のアレな SDK 使わずに
Arduino ライクに作れるし
6LoWPAN で IoT ごっこもできるようになった

Weitere ähnliche Inhalte

Was ist angesagt? (7)

Config mapについて
Config mapについてConfig mapについて
Config mapについて
 
GitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECT
GitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECTGitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECT
GitLabを16万8千光年ワープさせた話 GITLAB BIG UPGRADE PROJECT
 
Excite beer bash06
Excite beer bash06Excite beer bash06
Excite beer bash06
 
Piwik fluentd at OSC Tokyo 2015 Fall
Piwik fluentd at OSC Tokyo 2015 FallPiwik fluentd at OSC Tokyo 2015 Fall
Piwik fluentd at OSC Tokyo 2015 Fall
 
今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集今時のDev opsの取り組み事例集
今時のDev opsの取り組み事例集
 
Intel graphics
Intel graphicsIntel graphics
Intel graphics
 
VyOSの開発とか運用の話
VyOSの開発とか運用の話VyOSの開発とか運用の話
VyOSの開発とか運用の話
 

Andere mochten auch

IPSN 2009 Contiki / uIP tutorial
IPSN 2009 Contiki / uIP tutorialIPSN 2009 Contiki / uIP tutorial
IPSN 2009 Contiki / uIP tutorial
adamdunkels
 
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトークSeleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Y Watanabe
 

Andere mochten auch (20)

KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアルKiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル
 
Mft2014 defeated
Mft2014 defeatedMft2014 defeated
Mft2014 defeated
 
OSUnC川越2016
OSUnC川越2016OSUnC川越2016
OSUnC川越2016
 
○○作ったよ(OSunC川越LT)
○○作ったよ(OSunC川越LT)○○作ったよ(OSunC川越LT)
○○作ったよ(OSunC川越LT)
 
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux DeviceAdding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
Adding IEEE 802.15.4 and 6LoWPAN to an Embedded Linux Device
 
Internship end
Internship endInternship end
Internship end
 
Internet Of Things: Hands on: YOW! night
Internet Of Things: Hands on: YOW! nightInternet Of Things: Hands on: YOW! night
Internet Of Things: Hands on: YOW! night
 
IPSN 2009 Contiki / uIP tutorial
IPSN 2009 Contiki / uIP tutorialIPSN 2009 Contiki / uIP tutorial
IPSN 2009 Contiki / uIP tutorial
 
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under LinuxPractical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
Practical Guide to Run an IEEE 802.15.4 Network with 6LoWPAN Under Linux
 
Run Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT NetworkRun Your Own 6LoWPAN Based IoT Network
Run Your Own 6LoWPAN Based IoT Network
 
第2回日本seleniumユーザーコミュニティ勉強会
第2回日本seleniumユーザーコミュニティ勉強会第2回日本seleniumユーザーコミュニティ勉強会
第2回日本seleniumユーザーコミュニティ勉強会
 
Building the Internet of Things with Thingsquare and Contiki - day 1, part 1
Building the Internet of Things with Thingsquare and Contiki - day 1, part 1Building the Internet of Things with Thingsquare and Contiki - day 1, part 1
Building the Internet of Things with Thingsquare and Contiki - day 1, part 1
 
エンタープライズ開発でのSelenium活用事例
エンタープライズ開発でのSelenium活用事例エンタープライズ開発でのSelenium活用事例
エンタープライズ開発でのSelenium活用事例
 
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトークSeleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
Seleniumと相性がいいテンプレートエンジンMixer2-第1回selenium勉強会ライトニングトーク
 
海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014海外のSeleniumカンファレンスではどんな発表がされているのか2014
海外のSeleniumカンファレンスではどんな発表がされているのか2014
 
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
去年のデブサミの「日本Seleniumユーザーコミュニティ」のLTが真面目すぎてイマイチだったので、今年は何とかしようと色々がんばった結果ww
 
Seleniumをもっと知るための本の話
Seleniumをもっと知るための本の話Seleniumをもっと知るための本の話
Seleniumをもっと知るための本の話
 
Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)Windows環境でのgitまとめ(2016.8)
Windows環境でのgitまとめ(2016.8)
 
CoAP Course for m2m and Internet of Things scenarios
CoAP Course for m2m and Internet of Things scenariosCoAP Course for m2m and Internet of Things scenarios
CoAP Course for m2m and Internet of Things scenarios
 
Selenium Antipatterns
Selenium AntipatternsSelenium Antipatterns
Selenium Antipatterns
 

Ähnlich wie Arduino compatible layer (with 6LoWPAN) on Contiki

Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
Yoji Shidara
 
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
博文 斉藤
 
五番目のダイアグ、現る。 2012.08 #pyfes #blockdiag
五番目のダイアグ、現る。 2012.08 #pyfes #blockdiag五番目のダイアグ、現る。 2012.08 #pyfes #blockdiag
五番目のダイアグ、現る。 2012.08 #pyfes #blockdiag
Takeshi Komiya
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
Hideki Takase
 

Ähnlich wie Arduino compatible layer (with 6LoWPAN) on Contiki (20)

ネタ募集箱を支える技術 開発環境編
ネタ募集箱を支える技術 開発環境編ネタ募集箱を支える技術 開発環境編
ネタ募集箱を支える技術 開発環境編
 
ScalaにまつわるNewsな話
ScalaにまつわるNewsな話ScalaにまつわるNewsな話
ScalaにまつわるNewsな話
 
第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会第2回 -Play部屋- Play 2.0はじめて&もくもく会
第2回 -Play部屋- Play 2.0はじめて&もくもく会
 
20220412 IoTLT vol86 kitazaki v1
20220412 IoTLT vol86 kitazaki v120220412 IoTLT vol86 kitazaki v1
20220412 IoTLT vol86 kitazaki v1
 
M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話
 
機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編 機械学習 (AI/ML) 勉強会 #2 IoT編
機械学習 (AI/ML) 勉強会 #2 IoT編
 
OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528OSC Nagoya NETMF 160528
OSC Nagoya NETMF 160528
 
PYNQ祭り
PYNQ祭りPYNQ祭り
PYNQ祭り
 
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
 
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
日本 GNU AWK ユーザー会スライド 2 - OSC2012 Tokyo/Fall
 
20180829 ガチラボ vol.9
20180829 ガチラボ vol.920180829 ガチラボ vol.9
20180829 ガチラボ vol.9
 
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
[DockerConハイライト] OpenPubKeyによるイメージの署名と検証.pdf
 
Open modeler
Open modelerOpen modeler
Open modeler
 
五番目のダイアグ、現る。 2012.08 #pyfes #blockdiag
五番目のダイアグ、現る。 2012.08 #pyfes #blockdiag五番目のダイアグ、現る。 2012.08 #pyfes #blockdiag
五番目のダイアグ、現る。 2012.08 #pyfes #blockdiag
 
Vagrant+virtualboxを使ってみよう
Vagrant+virtualboxを使ってみようVagrant+virtualboxを使ってみよう
Vagrant+virtualboxを使ってみよう
 
Metahub for github
Metahub for githubMetahub for github
Metahub for github
 
20180822 ガチラボ vol.8
20180822 ガチラボ vol.820180822 ガチラボ vol.8
20180822 ガチラボ vol.8
 
10年ぶりの ニューラルネットワーク
10年ぶりの ニューラルネットワーク10年ぶりの ニューラルネットワーク
10年ぶりの ニューラルネットワーク
 
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
IoTアプリ/ロボット開発をリアルタイムOSでレベルアップしませんか? ~高品質な組込み向けオープンソースを開発するTOPPERSプロジェクトのご紹介~
 

Mehr von 裕士 常田 (9)

WeblateでOSSの翻訳に参加する
WeblateでOSSの翻訳に参加するWeblateでOSSの翻訳に参加する
WeblateでOSSの翻訳に参加する
 
Node native ext
Node native extNode native ext
Node native ext
 
Arduino library の作り方 2020
Arduino library の作り方 2020Arduino library の作り方 2020
Arduino library の作り方 2020
 
BlackMagic ProbeでARMをデバッグする
BlackMagic ProbeでARMをデバッグするBlackMagic ProbeでARMをデバッグする
BlackMagic ProbeでARMをデバッグする
 
HKマスクを作ってみた
HKマスクを作ってみたHKマスクを作ってみた
HKマスクを作ってみた
 
Openthread / nrf52811 調査(仮)
Openthread / nrf52811 調査(仮)Openthread / nrf52811 調査(仮)
Openthread / nrf52811 調査(仮)
 
いまどきの組込みOSの​ ZephyrRTOSと​ OpenThreadを​ Arduino環境で遊んでみる
いまどきの組込みOSの​ ZephyrRTOSと​ OpenThreadを​ Arduino環境で遊んでみるいまどきの組込みOSの​ ZephyrRTOSと​ OpenThreadを​ Arduino環境で遊んでみる
いまどきの組込みOSの​ ZephyrRTOSと​ OpenThreadを​ Arduino環境で遊んでみる
 
DVB recording command on gstreamer.
DVB recording command on gstreamer.DVB recording command on gstreamer.
DVB recording command on gstreamer.
 
Traveltoitalia
TraveltoitaliaTraveltoitalia
Traveltoitalia
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 

Arduino compatible layer (with 6LoWPAN) on Contiki

  • 1.   Arduino compatible layer (with 6LoWPAN) on Contiki soburi Open Source UN-Conference 2016 Kawagoe 2016/4/24
  • 2. 2  About ● UNIX 島の老害サークルやってます – Twitter https://twitter.com/crs – GitHub https://github.com/soburi ● 夏冬の祭り以外は大して活動してません。 ● 技術書典応募してみました。
  • 3. 3  Recent works ● KiCad で雑に基板を作るチュートリアル http://www.slideshare.net/soburi/kicad-53622272 ● TWE-Lite を ArduinoIDE で使う http://qiita.com/soburi/items/0b0aa3d0c4332a5e7a4c ● TWE-Lite を ArduinoIDE で使って IPv6(6LoWPAN) で通信する。 http://qiita.com/soburi/items/b07c314d33ef71a10001 ● ScratchX から WebSocket 経由で eject してみる。 http://qiita.com/soburi/items/ea12671f973d24e512b0 ● ScratchX と ESP8266 を WebSocket でつないで遊んでみる。 http://qiita.com/soburi/items/ec0a39e4c6f3b9de4de4 大好評! It’s new! It’s new! ウケなかった! それなり 一番労力かけたネタが一番ウケなくて残念な感じなので、 ボヤキ宣伝しにきました
  • 4. 4  TWE-Lite ● IEEE802.15.4 が話せるマイコン ● 秋葉原のあちこちで 1500 円で売っている ● 中身は JN5164 という NXP の石だが、 ARM ではなくて OpenRISC 派生の独自アーキテクチャ (BA2) ● NXP の SDK はそこそこマトモだが、 国内流通版の SDK(APP-FW) が 色々とアレ
  • 5. 5  Contiki ● 最近流行りの軽量 OS ● TI とか Atmel とか Contribute してる ● TWE-Lite(JN5164) も対応している ● プロトスレッドの仕組みでスタックレスの マルチタスク処理ができる ( 後述 )
  • 6. 6  Protothreads static PT_THREAD(example(struct pt *pt)) { PT_BEGIN(pt); while(1) { PT_WAIT_UNTIL(pt, counter == 1000); printf("Threshold reachedn"); counter = 0; } PT_END(pt); } static char example(struct pt *pt) { switch(pt->lc) { case 0: while(1) { pt->lc = 12; case 12: if(!(counter == 1000)) return 0; printf("Threshold reachedn"); counter = 0; } } pt->lc = 0; return 2; } ● 行番号を状態変数としてステートマシンを作るワンダフルなマクロ群 ● プロセス毎にコールスタック要らないから確かにローコスト ● NICE JOKE.
  • 7.   Coroutine ● Contiki には Multithreading API(Coroutine) がある。 ● Protothreads でマルチタスクできるから 誰も実装していない! ● レジスタ・スタックの退避復元処理を書けば動く ● TWE-Lite の CPU の仕様が公開されてないから、 disassemble 見ながら Hack! した (F**k!) ● とりあえず動くようになった!
  • 8.   Arduino Compatible API ● Coroutine があると Contiki 上に Arduino 互換 API を実装できる (Protothreads の文法に従わなくて済む ) ● OS ベースで動くので API でブロッキング動作 してる裏で仕事ができる Arduino API から ネットワークプロトコルスタックが使える !
  • 9. 9  6LoWPAN ● IPv6 を低電力低帯域ネットに無理矢理通す仕様 ● Contiki は大手マイコンベンダがコミットしていて 実質 6LoWPAN の Reference Implement ● Arduino の API から使えるようにできた! ● TCP/IP なので API もほぼ既存と共通にできた! ● Arduino でも Industries 4.0 っぽい感じに! ● UDP のペイロード 33byte しかないけどな!
  • 10. 10  Conclusion ● Arduino 互換レイヤを Contiki 上に構築できた ● Contiki based Arduino 、まだ色々遊べそう ● TWE-Lite のアレな SDK 使わずに Arduino ライクに作れるし 6LoWPAN で IoT ごっこもできるようになった