SlideShare une entreprise Scribd logo
1  sur  23
ESP32特集の内容紹介
インターフェース オフ会 @ CQ出版
2020/01/17
Kenta IDA (@ciniml)
自己紹介
•井田 健太 (@ciniml)
•仕事:FPGAの論理設計?
•使用言語:C++, SystemVerilog, Go, Python
• 元は組み込み?ソフト屋
2020/1/17ESP32特集の内容紹介
特集の担当箇所
•インターフェース2020年1月号 ESP32特集
• 第1部第3章内コラム
• ESP32-S2の紹介
• 第3部第4章
• ESP32リアルタイム処理の研究
2020/1/17ESP32特集の内容紹介
ESP32-S2の紹介
2020/1/17ESP32特集の内容紹介
ESP32-S2とは
•ESP32シリーズの新しいSoC
•従来ESP32との違い
• CPUコアの更新 (Xtensa LX6 → Xtensa LX7)
• CPUコアがシングルコアの系統のみ
• 従来のESP32-S系の後継
• USB OTGサポート
• ULPコアが独自コアからRISC-Vに
2020/1/17ESP32特集の内容紹介
CPUコアの変化
•CPUコアが新しい世代のものになった
• Xtensa LX7
•特に性能が大きく変わることもなさそう
• LX7の資料は見つかるがLX6の資料はあまり出てこない
•動作周波数は従来通り、最大240[MHz]
•シングルコア版のみ
2020/1/17ESP32特集の内容紹介
USB OTGサポート
•USB2.0 FS OTGのペリフェラルが追加された
• USB2.0 (Full Speedまで)
• USB Host/Device機能が使えるように
•SPI接続のUSBコントローラが不要になる
•現時点ではAPI等がどうなるか不明
• ESP-IDFの開発版にも特にコードが見当たらない
2020/1/17ESP32特集の内容紹介
ULPコアの変更(1/3)
•ULP (Ultra Low Power)コプロセッサ
• Deep sleep中でも動かすことができるコプロセッサ
• センサの値読み出し→判定→スリープ解除などに使う
• 中にはサウンド・ドライバ用のコプロセッサとして使う人も
2020/1/17ESP32特集の内容紹介
ULPコアの変更(2/3)
•従来は独自のコア
• かなり使いにくい命令セット
• bitwise NOTとかが無いので
SUBとADDで代用したり
• 当然Cコンパイラなど使えない
2020/1/17ESP32特集の内容紹介
ULPコアの変更(3/3)
•ESP32-S2ではRISC-V系コアに変更 (RV32IMC)
• 32bitレジスタ32本、かなり普通の命令セット、乗算命令あり
•おそらくCコンパイラが使える
•詳細は不明だが処理性能は向上している模様
• センサ読み出し処理で平均消費電流が低下
• 100[uA] → 7[uA]
• 動作中の消費電流は増えたが、短時間で処理完了できる
2020/1/17ESP32特集の内容紹介
現時点での状況
•まだモジュールの発表はない
• 一部ユーザーにES品を提供している模様
•工事設計認証済みモジュールの供給までは
まだしばらく時間がかかると思われる
2020/1/17ESP32特集の内容紹介
ESP32リアルタイム処理の研究
2020/1/17ESP32特集の内容紹介
発端
•M5StickCの内蔵6軸IMUを使って計測処理
• 6軸IMUから一定周期でデータ取得
• 計測データを無線LANでPCに送信
• 計測値 + タイムスタンプ
•なぜかタイムスタンプがばらつく…
2020/1/17ESP32特集の内容紹介
処理内容
•周期的にセンサの値を読み出したい
• 信号処理のため周期の揺らぎは減らしたい
•タイマー割り込みはちょっと面倒そう
•ESP-IDFのドキュメントを眺める
•高分解能タイマとかいうのを見つける
• 高分解能だし今回の用途に良さそう
2020/1/17ESP32特集の内容紹介
高分解能タイマ
•ESP-IDFの機能の1つ
•マイクロ秒単位の周期で指定した処理を実行
• ただし、周期は100[us]以上でないと厳しい
•esp_timer_で始まるAPIで使える
2020/1/17ESP32特集の内容紹介
高分解能タイマの周期処理の精度
•周期処理開始時の時刻のばらつきを計測
• 無線LAN通信の動作パターンごと
• UDP通信あり・なし
• アクセスポイント検索
• 無線LAN無効
•使い物にならないほどばらつく
2020/1/17ESP32特集の内容紹介
表 2: 高分解能タイマのインターバル
動作パ
ターン
平均値
[us]
最大値
[us]
最小値
[us]
udp 500 1356 6
noudp 500 2339 7
apsca
n
500 12226 6
nowifi 500 550 450
ばらつく原因と対策
•高分解能タイマの実装の問題
•指定した処理を
無線通信よりも低い優先度でPRO CPUで実行
• 無線通信処理はPRO CPUで実行される
• →無線通信処理中は処理時刻が来ても実行されない
•対策:仕方ないのでタイマ割り込みを使う
2020/1/17ESP32特集の内容紹介
タイマ割り込みを使う場合
•timer_isr_register 関数で割り込みハンドラを指定
• ハンドラはtimer_isr_registerを呼び出したコアで実行される
•割り込みハンドラ内で時間のかかる処理はできない
• 他の処理に影響がでる
• 正にその時刻に実行する必要のある処理だけ実行
• e.g. センサの測定処理
• 時間のかかる処理は高優先度のタスクで実行する
• e.g. 測定結果の信号処理、送信処理など
2020/1/17ESP32特集の内容紹介
“時間のかかる処理”の実行方法
•ハンドラから高優先度のタスクに通知する
• FreeRTOSのxTaskNotifyFromISRなど
•高優先度のタスクの優先度はどれくらい?
• 無線LAN処理 (優先度23) より高い優先度が必要
• 通信処理とは別のコアの方が良い
•試しに優先度22, 24でPRO CPU, APP CPUで計測
2020/1/17ESP32特集の内容紹介
割り込みのインターバルとタスク実行の遅延
動作パターン 遅延 平均値[us] 遅延 最大値[us] 遅延 最小値[us]
インターバル 平均
値[us]
インターバル 最大
値[us]
インターバル 最小
値[us]
PRO_CPU,22,udp 20 919 14 500 513 497
PRO_CPU,22,nou
dp
20 1816 14 500 514 498
PRO_CPU,22,apsc
an
20 12432 14 500 775 497
PRO_CPU,22,now
ifi
14 16 14 500 502 498
PRO_CPU,24,udp 14 33 14 500 513 497
PRO_CPU,24,nou
dp
14 32 13 500 696 497
PRO_CPU,24,apsc
an
14 32 14 500 949 497
PRO_CPU,24,now
ifi
14 14 14 500 500 499
APP_CPU,22,udp 14 321 14 500 509 498
APP_CPU,22,nou
dp
14 24 14 500 501 498
APP_CPU,22,apsc
an
14 24 13 500 502 498
APP_CPU,22,nowi
fi
14 19 14 500 501 499
APP_CPU,24,udp 14 30 13 500 509 497
APP_CPU,24,nou
dp
14 19 14 500 502 498
2020/1/17ESP32特集の内容紹介
割り込みのインターバルとタスク実行の遅延
動作パターン 遅延 平均値[us] 遅延 最大値[us] 遅延 最小値[us]
インターバル 平均
値[us]
インターバル 最大
値[us]
インターバル 最小
値[us]
PRO_CPU,22,udp 20 919 14 500 513 497
PRO_CPU,22,nou
dp
20 1816 14 500 514 498
PRO_CPU,22,apsc
an
20 12432 14 500 775 497
PRO_CPU,22,now
ifi
14 16 14 500 502 498
PRO_CPU,24,udp 14 33 14 500 513 497
PRO_CPU,24,nou
dp
14 32 13 500 696 497
PRO_CPU,24,apsc
an
14 32 14 500 949 497
PRO_CPU,24,now
ifi
14 14 14 500 500 499
APP_CPU,22,udp 14 321 14 500 509 498
APP_CPU,22,nou
dp
14 24 14 500 501 498
APP_CPU,22,apsc
an
14 24 13 500 502 498
APP_CPU,22,nowi
fi
14 19 14 500 501 499
APP_CPU,24,udp 14 30 13 500 509 497
APP_CPU,24,nou
dp
14 19 14 500 502 498
2020/1/17ESP32特集の内容紹介
低優先度かつPRO CPUだとタスク実行がかなり遅れる
PRO CPUだと割り込みインターバルもばらつ
く
低優先度だとAPP CPUでもタスク実行が遅延するときがある
高優先度でAPP CPUだと通信処理の影響を受けない
ESP32周期処理まとめ
•高い精度で周期処理を行うには:
• APP CPUでタイマ割り込みを使用
• APP CPU, 優先度24以上のタスクで処理を実行
•Arduinoの場合は?
• Tickerクラスは高分解能タイマを使っているので避ける
• タイマ割り込みを使う
• timerで始まる関数で使える (RepeatTimerサンプルを参照)
2020/1/17ESP32特集の内容紹介
おしまい
2020/1/17ESP32特集の内容紹介

Contenu connexe

Tendances

Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
Kouhei Sutou
 

Tendances (20)

tf,tf2完全理解
tf,tf2完全理解tf,tf2完全理解
tf,tf2完全理解
 
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
Semantic segmentation
Semantic segmentationSemantic segmentation
Semantic segmentation
 
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
 
C#とILとネイティブと
C#とILとネイティブとC#とILとネイティブと
C#とILとネイティブと
 
優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案優れた研究論文の書き方―7つの提案
優れた研究論文の書き方―7つの提案
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
Introduction to YOLO detection model
Introduction to YOLO detection modelIntroduction to YOLO detection model
Introduction to YOLO detection model
 
深層強化学習と実装例
深層強化学習と実装例深層強化学習と実装例
深層強化学習と実装例
 
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
PyTorchLightning ベース Hydra+MLFlow+Optuna による機械学習開発環境の構築
 
近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer近年のHierarchical Vision Transformer
近年のHierarchical Vision Transformer
 
研究効率化Tips Ver.2
研究効率化Tips Ver.2研究効率化Tips Ver.2
研究効率化Tips Ver.2
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
モデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留するモデルではなく、データセットを蒸留する
モデルではなく、データセットを蒸留する
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
Transformer メタサーベイ
Transformer メタサーベイTransformer メタサーベイ
Transformer メタサーベイ
 
semantic segmentation サーベイ
semantic segmentation サーベイsemantic segmentation サーベイ
semantic segmentation サーベイ
 
Attentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門までAttentionの基礎からTransformerの入門まで
Attentionの基礎からTransformerの入門まで
 

Similaire à ESP32特集の内容紹介

45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
Yukio Saito
 

Similaire à ESP32特集の内容紹介 (20)

GTC Japan 2017
GTC Japan 2017GTC Japan 2017
GTC Japan 2017
 
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
第162回情報処理学会ハイパフォーマンスコンピューティング研究発表会
 
Singularityで分散深層学習
Singularityで分散深層学習Singularityで分散深層学習
Singularityで分散深層学習
 
【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今【A-1】AIを支えるGPUコンピューティングの今
【A-1】AIを支えるGPUコンピューティングの今
 
Esp32でiot
Esp32でiotEsp32でiot
Esp32でiot
 
200625material naruse
200625material naruse200625material naruse
200625material naruse
 
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
io tつくるよ! LT [m5stackの拡張基板をつくったよ!」
 
ESP32開発環境まとめ
ESP32開発環境まとめESP32開発環境まとめ
ESP32開発環境まとめ
 
M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話M5Stackの拡張基板を作ってjimmyに届けた話
M5Stackの拡張基板を作ってjimmyに届けた話
 
ESP32開発環境まとめ2
ESP32開発環境まとめ2ESP32開発環境まとめ2
ESP32開発環境まとめ2
 
45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄45分で理解する 最近のスパコン事情 斉藤之雄
45分で理解する 最近のスパコン事情 斉藤之雄
 
M5Stack互換機を作った話
M5Stack互換機を作った話M5Stack互換機を作った話
M5Stack互換機を作った話
 
第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会第 1 回 Jetson ユーザー勉強会
第 1 回 Jetson ユーザー勉強会
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
 
Getting Started with Jetson Nano
Getting Started with Jetson NanoGetting Started with Jetson Nano
Getting Started with Jetson Nano
 
Imaocande LT
Imaocande LTImaocande LT
Imaocande LT
 
福岡市LoRawan(TM)実証実験
福岡市LoRawan(TM)実証実験福岡市LoRawan(TM)実証実験
福岡市LoRawan(TM)実証実験
 
【MySQL編】サーバ環境が進化する今話題のPCIe SSDを評価してみた
【MySQL編】サーバ環境が進化する今話題のPCIe SSDを評価してみた【MySQL編】サーバ環境が進化する今話題のPCIe SSDを評価してみた
【MySQL編】サーバ環境が進化する今話題のPCIe SSDを評価してみた
 
20170421 tensor flowusergroup
20170421 tensor flowusergroup20170421 tensor flowusergroup
20170421 tensor flowusergroup
 
20221018_IoTLT_vol92_kitazaki_v1.pdf
20221018_IoTLT_vol92_kitazaki_v1.pdf20221018_IoTLT_vol92_kitazaki_v1.pdf
20221018_IoTLT_vol92_kitazaki_v1.pdf
 

Plus de Kenta IDA

Plus de Kenta IDA (9)

M5StackにFPGAをつないでみた
M5StackにFPGAをつないでみたM5StackにFPGAをつないでみた
M5StackにFPGAをつないでみた
 
カスタムブロックで自作モジュールをUIFlow対応にする
カスタムブロックで自作モジュールをUIFlow対応にするカスタムブロックで自作モジュールをUIFlow対応にする
カスタムブロックで自作モジュールをUIFlow対応にする
 
Using SORACOM 3G Module From MicroPython
Using SORACOM 3G Module From MicroPythonUsing SORACOM 3G Module From MicroPython
Using SORACOM 3G Module From MicroPython
 
MicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみるMicroPythonのCモジュールを作ってみる
MicroPythonのCモジュールを作ってみる
 
EC2 F1 Virtual JTAG
EC2 F1 Virtual JTAGEC2 F1 Virtual JTAG
EC2 F1 Virtual JTAG
 
PYNQ単体でUIを表示してみる(PYNQまつり)
PYNQ単体でUIを表示してみる(PYNQまつり)PYNQ単体でUIを表示してみる(PYNQまつり)
PYNQ単体でUIを表示してみる(PYNQまつり)
 
PSoC4 BLEで作る簡単無線センサーユニット
PSoC4 BLEで作る簡単無線センサーユニットPSoC4 BLEで作る簡単無線センサーユニット
PSoC4 BLEで作る簡単無線センサーユニット
 
Windows10 IoT CoreとBLE
Windows10 IoT CoreとBLEWindows10 IoT CoreとBLE
Windows10 IoT CoreとBLE
 
おそらく明日から役にたつC++11新機能
おそらく明日から役にたつC++11新機能おそらく明日から役にたつC++11新機能
おそらく明日から役にたつC++11新機能
 

Dernier

Dernier (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: 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
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
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の勉強会で発表されたものです。
 
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...
 
論文紹介: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日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

ESP32特集の内容紹介