Submit Search
ESP32特集の内容紹介
Download as PPTX, PDF
1 like
1,887 views
K
Kenta IDA
インターフェース2020年1月号のESP32特集のうち、筆者が担当した箇所の内容について説明します。
Technology
Read more
1 of 23
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Most read
18
19
20
Most read
21
22
23
Most read
More Related Content
PPTX
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
PDF
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
PPTX
Redisの特徴と活用方法について
Yuji Otani
PDF
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
PDF
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
PDF
DockerとPodmanの比較
Akihiro Suda
PDF
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
Koichiro Matsuoka
PostgreSQLのロール管理とその注意点(Open Source Conference 2022 Online/Osaka 発表資料)
NTT DATA Technology & Innovation
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
NTT DATA Technology & Innovation
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
Redisの特徴と活用方法について
Yuji Otani
JDKの選択肢とサーバーサイドでの選び方
Takahiro YAMADA
これからのJDK/JVM 何を選ぶ?どう選ぶ?
Takahiro YAMADA
DockerとPodmanの比較
Akihiro Suda
DDDオンライン勉強会#2 「集約・境界付けられたコンテキスト」
Koichiro Matsuoka
What's hot
(20)
PPTX
マイクロサービスにおける 結果整合性との戦い
ota42y
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
PPTX
このPHP QAツールがすごい!2019
sasezaki
PDF
シリコンバレーの「何が」凄いのか
Atsushi Nakada
PPTX
DDDモデリング勉強会 #6
株式会社Jurabi
PPTX
世界一わかりやすいClean Architecture
Atsushi Nakamura
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
PDF
分散システムの限界について知ろう
Shingo Omura
PDF
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
PDF
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
PDF
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
PDF
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
PPTX
本当は恐ろしい分散システムの話
Kumazaki Hiroki
PDF
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Masahito Zembutsu
PDF
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
PPTX
Apache Spark 2.4 and 3.0 What's Next?
NTT DATA Technology & Innovation
PPTX
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
PDF
コンテナ環境でJavaイメージを小さくする方法!
オラクルエンジニア通信
PDF
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
Koichiro Matsuoka
マイクロサービスにおける 結果整合性との戦い
ota42y
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
このPHP QAツールがすごい!2019
sasezaki
シリコンバレーの「何が」凄いのか
Atsushi Nakada
DDDモデリング勉強会 #6
株式会社Jurabi
世界一わかりやすいClean Architecture
Atsushi Nakamura
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
分散システムの限界について知ろう
Shingo Omura
Serf / Consul 入門 ~仕事を楽しくしよう~
Masahito Zembutsu
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
あなたの知らないPostgreSQL監視の世界
Yoshinori Nakanishi
Docker道場オンライン#1 Docker基礎概念と用語の理解
Masahito Zembutsu
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Masahito Zembutsu
Getting Started GraalVM / GraalVM超入門 #jjug_ccc #ccc_c2
tamtam180
Apache Spark 2.4 and 3.0 What's Next?
NTT DATA Technology & Innovation
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
コンテナ環境でJavaイメージを小さくする方法!
オラクルエンジニア通信
ドメイン駆動設計のプラクティスでカバーできること、できないこと[DDD]
Koichiro Matsuoka
Ad
More from Kenta IDA
(12)
PPTX
M5StackにFPGAをつないでみた
Kenta IDA
PPTX
カスタムブロックで自作モジュールをUIFlow対応にする
Kenta IDA
PPTX
Using SORACOM 3G Module From MicroPython
Kenta IDA
PPTX
M5StackをRustで動かす
Kenta IDA
PPTX
MicroPythonのCモジュールを作ってみる
Kenta IDA
PPTX
ESP32開発環境まとめ2
Kenta IDA
PPTX
ESP32開発環境まとめ
Kenta IDA
PPTX
EC2 F1 Virtual JTAG
Kenta IDA
PPTX
PYNQ単体でUIを表示してみる(PYNQまつり)
Kenta IDA
PPTX
PSoC4 BLEで作る簡単無線センサーユニット
Kenta IDA
PPTX
Windows10 IoT CoreとBLE
Kenta IDA
PPTX
おそらく明日から役にたつC++11新機能
Kenta IDA
M5StackにFPGAをつないでみた
Kenta IDA
カスタムブロックで自作モジュールをUIFlow対応にする
Kenta IDA
Using SORACOM 3G Module From MicroPython
Kenta IDA
M5StackをRustで動かす
Kenta IDA
MicroPythonのCモジュールを作ってみる
Kenta IDA
ESP32開発環境まとめ2
Kenta IDA
ESP32開発環境まとめ
Kenta IDA
EC2 F1 Virtual JTAG
Kenta IDA
PYNQ単体でUIを表示してみる(PYNQまつり)
Kenta IDA
PSoC4 BLEで作る簡単無線センサーユニット
Kenta IDA
Windows10 IoT CoreとBLE
Kenta IDA
おそらく明日から役にたつC++11新機能
Kenta IDA
Ad
ESP32特集の内容紹介
1.
ESP32特集の内容紹介 インターフェース オフ会 @
CQ出版 2020/01/17 Kenta IDA (@ciniml)
2.
自己紹介 •井田 健太 (@ciniml) •仕事:FPGAの論理設計? •使用言語:C++,
SystemVerilog, Go, Python • 元は組み込み?ソフト屋 2020/1/17ESP32特集の内容紹介
3.
特集の担当箇所 •インターフェース2020年1月号 ESP32特集 • 第1部第3章内コラム •
ESP32-S2の紹介 • 第3部第4章 • ESP32リアルタイム処理の研究 2020/1/17ESP32特集の内容紹介
4.
ESP32-S2の紹介 2020/1/17ESP32特集の内容紹介
5.
ESP32-S2とは •ESP32シリーズの新しいSoC •従来ESP32との違い • CPUコアの更新 (Xtensa
LX6 → Xtensa LX7) • CPUコアがシングルコアの系統のみ • 従来のESP32-S系の後継 • USB OTGサポート • ULPコアが独自コアからRISC-Vに 2020/1/17ESP32特集の内容紹介
6.
CPUコアの変化 •CPUコアが新しい世代のものになった • Xtensa LX7 •特に性能が大きく変わることもなさそう •
LX7の資料は見つかるがLX6の資料はあまり出てこない •動作周波数は従来通り、最大240[MHz] •シングルコア版のみ 2020/1/17ESP32特集の内容紹介
7.
USB OTGサポート •USB2.0 FS
OTGのペリフェラルが追加された • USB2.0 (Full Speedまで) • USB Host/Device機能が使えるように •SPI接続のUSBコントローラが不要になる •現時点ではAPI等がどうなるか不明 • ESP-IDFの開発版にも特にコードが見当たらない 2020/1/17ESP32特集の内容紹介
8.
ULPコアの変更(1/3) •ULP (Ultra Low
Power)コプロセッサ • Deep sleep中でも動かすことができるコプロセッサ • センサの値読み出し→判定→スリープ解除などに使う • 中にはサウンド・ドライバ用のコプロセッサとして使う人も 2020/1/17ESP32特集の内容紹介
9.
ULPコアの変更(2/3) •従来は独自のコア • かなり使いにくい命令セット • bitwise
NOTとかが無いので SUBとADDで代用したり • 当然Cコンパイラなど使えない 2020/1/17ESP32特集の内容紹介
10.
ULPコアの変更(3/3) •ESP32-S2ではRISC-V系コアに変更 (RV32IMC) • 32bitレジスタ32本、かなり普通の命令セット、乗算命令あり •おそらくCコンパイラが使える •詳細は不明だが処理性能は向上している模様 •
センサ読み出し処理で平均消費電流が低下 • 100[uA] → 7[uA] • 動作中の消費電流は増えたが、短時間で処理完了できる 2020/1/17ESP32特集の内容紹介
11.
現時点での状況 •まだモジュールの発表はない • 一部ユーザーにES品を提供している模様 •工事設計認証済みモジュールの供給までは まだしばらく時間がかかると思われる 2020/1/17ESP32特集の内容紹介
12.
ESP32リアルタイム処理の研究 2020/1/17ESP32特集の内容紹介
13.
発端 •M5StickCの内蔵6軸IMUを使って計測処理 • 6軸IMUから一定周期でデータ取得 • 計測データを無線LANでPCに送信 •
計測値 + タイムスタンプ •なぜかタイムスタンプがばらつく… 2020/1/17ESP32特集の内容紹介
14.
処理内容 •周期的にセンサの値を読み出したい • 信号処理のため周期の揺らぎは減らしたい •タイマー割り込みはちょっと面倒そう •ESP-IDFのドキュメントを眺める •高分解能タイマとかいうのを見つける • 高分解能だし今回の用途に良さそう 2020/1/17ESP32特集の内容紹介
15.
高分解能タイマ •ESP-IDFの機能の1つ •マイクロ秒単位の周期で指定した処理を実行 • ただし、周期は100[us]以上でないと厳しい •esp_timer_で始まるAPIで使える 2020/1/17ESP32特集の内容紹介
16.
高分解能タイマの周期処理の精度 •周期処理開始時の時刻のばらつきを計測 • 無線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
17.
ばらつく原因と対策 •高分解能タイマの実装の問題 •指定した処理を 無線通信よりも低い優先度でPRO CPUで実行 • 無線通信処理はPRO
CPUで実行される • →無線通信処理中は処理時刻が来ても実行されない •対策:仕方ないのでタイマ割り込みを使う 2020/1/17ESP32特集の内容紹介
18.
タイマ割り込みを使う場合 •timer_isr_register 関数で割り込みハンドラを指定 • ハンドラはtimer_isr_registerを呼び出したコアで実行される •割り込みハンドラ内で時間のかかる処理はできない •
他の処理に影響がでる • 正にその時刻に実行する必要のある処理だけ実行 • e.g. センサの測定処理 • 時間のかかる処理は高優先度のタスクで実行する • e.g. 測定結果の信号処理、送信処理など 2020/1/17ESP32特集の内容紹介
19.
“時間のかかる処理”の実行方法 •ハンドラから高優先度のタスクに通知する • FreeRTOSのxTaskNotifyFromISRなど •高優先度のタスクの優先度はどれくらい? • 無線LAN処理
(優先度23) より高い優先度が必要 • 通信処理とは別のコアの方が良い •試しに優先度22, 24でPRO CPU, APP CPUで計測 2020/1/17ESP32特集の内容紹介
20.
割り込みのインターバルとタスク実行の遅延 動作パターン 遅延 平均値[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特集の内容紹介
21.
割り込みのインターバルとタスク実行の遅延 動作パターン 遅延 平均値[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だと通信処理の影響を受けない
22.
ESP32周期処理まとめ •高い精度で周期処理を行うには: • APP CPUでタイマ割り込みを使用 •
APP CPU, 優先度24以上のタスクで処理を実行 •Arduinoの場合は? • Tickerクラスは高分解能タイマを使っているので避ける • タイマ割り込みを使う • timerで始まる関数で使える (RepeatTimerサンプルを参照) 2020/1/17ESP32特集の内容紹介
23.
おしまい 2020/1/17ESP32特集の内容紹介
Download