163 Views
February 18, 23
スライド概要
2023/2/18 【オンライン】.NET Micro Frameworkはどうなった?マイコンで動く.NET技術談義!
https://algyan.connpass.com/event/273901/
SeeedKKの中の人。Microsoft MVP for Internet of Things。
.NET Micro Frameworkはどうなった? マイコンで動く.NET技術談義! - nanoFramework - MATSUOKA Takashi @matsujirushi12
MATSUOKA Takashi @matsujirushi12 「e」3つ 2017~ MVP for Windows Development 2020~ for Microsoft Azure 2022~ for Internet of Things 1991年大手メーカーに入社し、工場の自動化 や情報システムの開発、運用に従事。2017年 8月、Seeed株式会社設立時に転職。組み込 みデバイスの開発環境整備やライブラリ開発 を担当。 ↑ 去年、電子工作の書籍を出しました。買ってちょ
マイコンで動く.NET開発・実行環境 ◦ 源流は.NET Micro Framework ◦ リファレンスターゲット ◦ 開発 … パソコン + Visual Studio/VSCode + .NET C# ◦ OrgPal PalTree ◦ 実行 … マイコン (Flash <256KB, RAM <64KB) ◦ STMicroelectronics NUCLEO64_F091RC, STM32F429I_DISCOVERY, STM32F769I_DISCOVERY ◦ Espressif ESP32, ESP32-S2, ESP32-C3 ライブラリは限定的 ◦ NXP i.MX_RT1060_EVK ◦ ベースクラスライブラリのサブセット ◦ TI CC1352R1_LAUNCHXL, CC3220SF_LAUNCHXL ◦ .NET IoTライブラリ ◦ And more... オープンソース ◦ コア部分の最新はv1.7.4.0(2022/3/1) ◦ GitHub … https://github.com/nanoframework ◦ Discord … https://discord.gg/gCyBu8T ◦ コミュニティターゲット ◦ x15 boards https://github.com/nanoframework/nf-Community-Targets
準備~デバッグ実行までの流れ パソコン マイコン C# Visual Studio nanoCLR nano Booter nanoFirmwareFlasher nano CLR マイコン依存 e.g. JTAG, DFU nanoBooter nF PE Application (nF PE) Configuration nF PE nanoFramework Extension nF PE UART
デモ 林 宜憲 株式会社リンシステムズ
Deep Dive!
CILインタプリタ 巨大なswitch-case文 ◦ CLR_RT_Thread::Execute_IL() ◦ 約2500行 ◦ https://github.com/nanoframework/nfinterpreter/blob/92ae087d2c2710515009cd5d6a658 8e341471448/src/CLR/Core/Interpreter.cpp#L982 いくつかのオペコードは未実装
フラッシュメモリ使用量 Seeed Studio XIAO ESP32C3 nanoCLR nanoBooter Configuration nF PE Application (nF PE) nF PE マイコン STMicroelectronics NUCLEO-F091RC 1.9MB 82KB 1.8MB 174KB
nanoCLR cmake-presets Seeed Studio XIAO ESP32C3 STMicroelectronics NUCLEO-F091RC System.IO.FileSystem 〇 System.Math 〇 System.Net 〇 System.IO.Ports 〇 Windows.Storage 〇 System.Device.Adc 〇 System.Device.Gpio 〇 〇 System.Device.I2c 〇 〇 System.Device.Pwm 〇 〇 System.Device.Spi 〇 〇 System.Device.Wifi 〇 nanoFramework.ResourceManager 〇 〇 nanoFramework.System.Collections 〇 〇 nanoFramework.System.Text 〇 〇 Hardware.Esp32 〇 Hardware.Stm32 〇 〇
ファームウェアとライブラリの バージョン問題 https://docs.nanoframework.net/content/architecture /guide-version-checksums.html 宣言(C#) マイコン String System.String.Substring(int startIndex) Application (nF PE) nanoCLR ◦ https://github.com/nanoframework/CoreLibrary/blob/02509b3 672275605ec7616040f7d747395dfa02c/nanoFramework.CoreL ibrary/System/String.cs#L151 Library_corlib_native_System_String::Substring___STRING__I4( CL R_RT_StackFrame& stack ) ◦ https://github.com/nanoframework/nfinterpreter/blob/main/src/CLR/CorLib/corlib_native_System_St ring.cpp#L132 定義(C++) checksum https://github.com/nanoframework/nfinterpreter/blob/main/src/CLR/CorLib/corlib_native.cpp#L1480
ファームウェアとライブラリの バージョン問題 nanoFramework.CoreLibrary 1.12.0 マイコン nanoCLR nanoFirmwareFlasher ◦ Checksum 0x004CF1CE (mscorlib v100.5.0.17)
辛い話 Generics ◦ .NET nanoFramework doesn't support generics. We are actively working on it! ◦ https://github.com/nanoframework/Home/issues/782 async/await ◦ 不明 LINQ ◦ 不明