Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Nature Remo SDKアップデートの軌跡
Search
tomoyuki-nakabayashi
September 29, 2022
Programming
1
1k
Nature Remo SDKアップデートの軌跡
tomoyuki-nakabayashi
September 29, 2022
Tweet
Share
More Decks by tomoyuki-nakabayashi
See All by tomoyuki-nakabayashi
How to learn Embedded Rust Edition 2021
tomoyuki
0
1.4k
Embedded-Rust
tomoyuki
1
2.9k
hello-world-on-RTOS
tomoyuki
0
790
Baremetal Rust for RISC-V
tomoyuki
5
1k
Other Decks in Programming
See All in Programming
macOS でできる リアルタイム動画像処理
biacco42
9
2.4k
3rd party scriptでもReactを使いたい! Preact + Reactのハイブリッド開発
righttouch
PRO
1
610
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
170
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
340
Outline View in SwiftUI
1024jp
1
330
PHP でアセンブリ言語のように書く技術
memory1994
PRO
1
170
as(型アサーション)を書く前にできること
marokanatani
10
2.7k
OSSで起業してもうすぐ10年 / Open Source Conference 2024 Shimane
furukawayasuto
0
110
初めてDefinitelyTypedにPRを出した話
syumai
0
420
エンジニアとして関わる要件と仕様(公開用)
murabayashi
0
300
ふかぼれ!CSSセレクターモジュール / Fukabore! CSS Selectors Module
petamoriken
0
150
CSC509 Lecture 09
javiergs
PRO
0
140
Featured
See All Featured
Faster Mobile Websites
deanohume
305
30k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
364
24k
Become a Pro
speakerdeck
PRO
25
5k
How to Ace a Technical Interview
jacobian
276
23k
Designing the Hi-DPI Web
ddemaree
280
34k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
1.9k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Thoughts on Productivity
jonyablonski
67
4.3k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Six Lessons from altMBA
skipperchong
27
3.5k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.8k
Code Reviewing Like a Champion
maltzj
520
39k
Transcript
Nature Remo SDKアップデートの軌跡 2022年9月28日 IoTぶっちゃけNight Vol. 1 Nature 中林智之
- 中林智之 @tnakabayashi - Nature Firmware Engineer ちょっと咳は出ちゃうかも ><
自己紹介
PRODUCT 製品について
Nature Remo / Nature Remo mini
How It Works スマートデバイス Nature Remo 家電 赤外線 インターネット 例:
Alexa、書斎照明消して
How It Works スマートデバイス Nature Remo 家電 赤外線 インターネット !?
※登壇者の居室が真っ暗になるデモ中です
Firmwareエンジニア視点のRemo3
BLE Central BLE Peripheral HTTP Server (mDNS) HTTP / WebSocket
Client 赤外線 センサ 温度、湿度 人感、輝度 Nature Remo3の機能 BLE連携 setup Local API server
Nature Remo3の中身 ※分解は自己責任でお願いします! ぱかっと開けると… ESP32 - Espressif - xtensa デュアルコア@240MHz
- SRAM: 520KiB - Bluetooth & Wireless LAN
Nature RemoのSDK - ESP-IDF (Espressif IoT Development Framework) - 大部分がOSS
- GitHubでissueやパッチの受け入れも - 無線通信部分などはバイナリ配布
ぶっちゃけESP32 (ESP-IDF) ってどうなの? - (カタログスペック比で) 破格の安さ - ソフトウェア開発環境は使いやすい - ログシステム
/ デバッグ環境 / テスト環境 - ビルド用のDocker image完備 - menuconfig / kconfig - ソフトウェアに力入れているのは感じる - SDKの変更量 - LLVMのxtensa対応 - Rust - ただし… - 続きは発表の最後で! - チャンネルはそのまま! Ferrous Systemsがやっている Rustチュートリアル用ボードとかも製造
Firmware Updateについての考え方
なぜFirmware Updateをするのか? > ソフトウェアには…簡単に変更できることが求められる。 > 簡単に変更したくないなら、ハードウェアと呼ぶべきだ。 > (中略) > ソフトウェアが簡単に変更できないなら、
> ソフトウェアの存在意義を妨害している。 Nature Remoをハードウェアと呼ばせないため
- ESP-IDF v3.3.4を2年ほど使用 - メンテナンス期限切れ - security issueとか発生したら…? - 機能追加
/ バグフィックス / 開発環境改善 - WPA3対応 - gcc 5.4 -> 8.4 なぜSDKをアップデートするのか?
SDK Updateの軌跡
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
楽しい冒険の始まり - 直前にリリースされた ESP-IDF v4.3.2を移行対象に決定 - 機能開発は凍結 (ぼっちファームなので問題なし ! -
短期決戦を目指して最優先でやる (3ヶ月でケリをつける! 残された希望に満ちたメモ … 100日後に折れるフラグ
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
- v3.3.4で困っていたバグがいくつか直ってそう - WPA3対応してる! - メモリアロケータが変わった…だと…?(v4.3から - TLSF (Two-Level Segregate
Fit) アロケータに - 教科書通りのフリーリストアロケータから O(1) アロケータに - これは重要な変更だ!じっくり調査するしかあるまい? - アロケータの論文 / コード読んだり楽しい時間を過ごす 夢の広がるリリースノート
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
ヒープ残量が・・・ - v4.3.2に上げるとヒープ残量ががっつり減った… - 60KB -> 50KB - 何もしてないのにヒープ残量が減った! -
SDKのコンフィギュレーションが何か変わったか?と調査を開始 - TLSFアロケータのテーブルが10KB使っている
しかも実際のヒープ残量は・・・ - なんかヒープ残量計算がバグってない・・・? - 確保したバッファの管理領域分が計算されていない - 最新バージョンでは直ってます - https://github.com/espressif/esp-idf/issues/8270
ま、いっか 減った分はコード見直せばなんとか…、ということで立ち直る 詳しくは ESP-IDF v4.3でESP32のヒープ残量が10KB減る問題の調査 を参照
None
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
Releaseできちゃうのでは・・・? - 社内リリースして2週間、順調に動いている - サーバー側で段階リリースの仕組みを作ってもらった - 大量の文鎮化を一番恐れている - 本番前に何度かお試し -
全ては順調に見えた・・・
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
v4.3.2の評価結果は・・・? - ダメでした! - 2週間くらい動かすと WiFi 止まる現象がちらほら… - ここから長く苦しいバグ調査の日々が始まる -
真相はバイナリの中 - なので、現象をファームのアプリ層でキャッチする条件調査 - 死活監視入れたり
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
嬉しい悲報の時間です - 4月からファームウェアエンジニアが入社!めでたい! - ファームウェア開発、しちゃうよね…? - v4.3.2にしてしまったから、v3.3.4で開発できるように戻さにゃ - リポジトリをmonorepo化して開発しやすいように -
各種CIやリリースワークフロー再整備 remo3 remo-e products-common network-manager sensor echonet-lite app remo3 remo-e components sensor products-common echonet-lite network-manager
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
新たなる希望v4.4.1 > Fixed failing to transmit data or getting stuck
in WiFi sleep if running WiFi and BT with modem-sleep together これは…まさか…?
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
またヒープ減ってるやんけ・・・ - 4KBくらい ESP-IDF v4.4でまたもやヒープ残量が4KBも減った問題の調査
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
こいつ、止まらないぞ・・・! - 1ヶ月の安定稼働を確認してからリリース準備 - メトリクスを仕込んだり - Remo <-> server 間の通信は
s3 に保存されており、Athenaでクエリできる
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7
ナーバス期 - アップデート対象は数十万台…! - CSチームと連携しながら (直接話しながら - prime dayと重なっていたのでちょっとリリース時期調節したり -
自分で毎朝サポートチケット見たり
中林のテンション 2022/1 SDK Updateの軌跡 2022/4 2022/2 2022/3 2022/5 2022/8 2022/6
2022/7 祝!100%リリース!!!
ぶっちゃけESP32 (ESP-IDF) ってどうなの? - 破格の安さ - なぜか割と入手できる - 開発環境は使いやすい -
ログシステム / デバッグ環境 / テスト環境 - ビルド用のDocker image完備 - menuconfig / kconfig - ソフトウェアに力入れているのは感じる - SDKの変更量 - LLVMのxtensa対応 - Rust - ただし…安定性は慎重な評価が必要 - 場合によっては死活監視も・・・ Ferrous Systemsがやっている Rustチュートリアル用ボードとかも製造
まとめ - Nature RemoのESP-IDFをv3.3.4からv4.4.1にアップデートできた! - ESP32 & ESP-IDFは… - 使いやすいが安定性は慎重に評価が必要
- バイナリ配布の通信部分はどうしようもない… - 見ての通りOSの自作は人生の役に立つんだ!
ご清聴ありがとうございました