---
title: マイコンで動く .NET 技術談義！ nanoFramework
tags: 
author: [MATSUOKA Takashi](https://www.docswell.com/user/matsujirushi)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/4EQ8PYG5JP.jpg?width=480
description: 2023/2/18 【オンライン】.NET Micro Frameworkはどうなった？マイコンで動く.NET技術談義！ https://algyan.connpass.com/event/273901/
published: February 18, 23
canonical: https://www.docswell.com/s/matsujirushi/ZGXYRD-2024-01-18-083353
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/4EQ8PYG5JP.jpg)

.NET Micro Frameworkはどうなった？
マイコンで動く.NET技術談義！
- nanoFramework -
MATSUOKA Takashi
@matsujirushi12


# Page. 2

![Page Image](https://bcdn.docswell.com/page/KJ42YW5VE1.jpg)

MATSUOKA Takashi
@matsujirushi12
「e」3つ
2017～ MVP for Windows Development
2020～
for Microsoft Azure
2022～
for Internet of Things
1991年大手メーカーに入社し、工場の自動化
や情報システムの開発、運用に従事。2017年
8月、Seeed株式会社設立時に転職。組み込
みデバイスの開発環境整備やライブラリ開発
を担当。
↑
去年、電子工作の書籍を出しました。買ってちょ


# Page. 3

![Page Image](https://bcdn.docswell.com/page/LE1M6YW47G.jpg)

マイコンで動く.NET開発・実行環境
◦ 源流は.NET Micro Framework
◦ リファレンスターゲット
◦ 開発 … パソコン + Visual Studio/VSCode + .NET C#
◦ OrgPal PalTree
◦ 実行 … マイコン (Flash &lt;256KB, RAM &lt;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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/GEW3WG6ZE2.jpg)

準備～デバッグ実行までの流れ
パソコン
マイコン
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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/47ZV5LYLE3.jpg)

デモ
林 宜憲
株式会社リンシステムズ


# Page. 6

![Page Image](https://bcdn.docswell.com/page/YJ659WDM7V.jpg)

Deep Dive!


# Page. 7

![Page Image](https://bcdn.docswell.com/page/GJ5YNM3QJ4.jpg)

CILインタプリタ
巨大なswitch-case文
◦ CLR_RT_Thread::Execute_IL()
◦ 約2500行
◦ https://github.com/nanoframework/nfinterpreter/blob/92ae087d2c2710515009cd5d6a658
8e341471448/src/CLR/Core/Interpreter.cpp#L982
いくつかのオペコードは未実装


# Page. 8

![Page Image](https://bcdn.docswell.com/page/9E2G59ZWER.jpg)

フラッシュメモリ使用量
Seeed Studio
XIAO ESP32C3
nanoCLR
nanoBooter
Configuration
nF PE
Application (nF PE)
nF PE
マイコン
STMicroelectronics
NUCLEO-F091RC
1.9MB
82KB
1.8MB
174KB


# Page. 9

![Page Image](https://bcdn.docswell.com/page/D7YVK4R97M.jpg)

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
〇
〇


# Page. 10

![Page Image](https://bcdn.docswell.com/page/VENMRYDDJ8.jpg)

ファームウェアとライブラリの
バージョン問題
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&amp; 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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/Y79NMPG873.jpg)

ファームウェアとライブラリの
バージョン問題
nanoFramework.CoreLibrary 1.12.0
マイコン
nanoCLR
nanoFirmwareFlasher
◦ Checksum 0x004CF1CE (mscorlib v100.5.0.17)


# Page. 12

![Page Image](https://bcdn.docswell.com/page/G78KLDVZJD.jpg)

辛い話
Generics
◦ .NET nanoFramework doesn&#039;t support generics. We are actively working on it!
◦ https://github.com/nanoframework/Home/issues/782
async/await
◦ 不明
LINQ
◦ 不明


