TinyCLR OS 環境構築方法

.NET MicroFrameworkが実質開発ストップしていますが、GHI Electronicsが分岐してシンプルにして(?)TinyCLR OSとして整備しているようです。

まだアルファ版ではありますが、現在公開されているTinyCLR OSの環境構築が上手くできたので、手順を書き留めておきます。

TinyCLRは未だアルファ版なので、リンクが切れたり手順が変更になったりする可能性があります。ご了承ください。

わたしの環境

作業前の、わたしのパソコン環境は次のとおりです。

使用するデバイスはSTM32F4 Discoveryです。

  • STM32F4 Discovery(STM32F407)

また、STM32F4 Discoveryに書き込むときに使用するdfu-utilは既にセットアップされていました。

必要なファイルをダウンロード

必要なファイルは次の3つです。

VisualStudio拡張

GHIElectronics.TinyCLR.VisualStudio.0.5.0.vsixです。

Tiny CLR Release Notesの0.5.0 on 2017-07-07をクリックした先のページでここからダウンロードできます。

ファームウェア

TinyCLR_Firmware.0.5.0.zipです。

Tiny CLR Release Notesの0.5.0 on 2017-07-07をクリックした先のページでここからダウンロードできます。

Windowsデバイスドライバ

GHI_TinyCLR_Interface.zipです。

フォーラムの回答からダウンロードできます。

VisualStudio拡張をインストー

GHIElectronics.TinyCLR.VisualStudio.0.5.0.vsixをダブルクリックで起動します。あとは画面の指示に従えばOKです。

f:id:matsujirushix:20170722211953p:plain

Visual Studio 2015も入っていたのに、Visual Studio 2017しか表示されていないので、どうやらVisual Studio 2017にしか対応していないようです。

f:id:matsujirushix:20170722212012p:plain

インストール完了後、Visual Studio拡張機能と更新プログラムで確認すると、TinyCLR OS Project Systemが追加されたことがわかります。

f:id:matsujirushix:20170722212159p:plain

プロジェクトの新規作成画面には、TinyCLRが追加されています。

f:id:matsujirushix:20170722212304p:plain

バイスとの接続方法はUSB/Serial/TCPIP。このあたりはNETMFのままですね。

f:id:matsujirushix:20170722212616p:plain

ファームウェアをデバイスにインストー

ここのやり方が分からず苦労しました。

STM32F4 Discoveryは、TinyCLR_Firmware.0.5.0.zipに含まれている、GHI Bootloader(FEZ Bootloader.2.0.3.dfu)をdfu-utilなどでフラッシュメモリに書き込み、そしてTeraTermなどでGHI Bootloaderに接続してファームウェアFEZ Firmware.0.5.0.glb)を転送します。

GHI Bootloaderの書き込み

STM32F4 DiscoveryをDFUモードで立ち上げます。下図のように、ボードの裏にあるJP2のジャンパーピンを外して、BOOT0とVDDを短絡します。

f:id:matsujirushix:20170723213030p:plain

そして、パソコンとUSB接続します。

ここはちょっとコツが必要で、STM32 DiscoveryのminiUSB(CN1)とmicroUSB(CN5)をUSB-HUBに接続しておき、USB-HUBをパソコンに接続して、両方のUSBを同時に接続しないといけないようです。(都市伝説なのかも?)

バイスマネージャにSTM32 BOOTLOADERが表示されれば成功です。

f:id:matsujirushix:20170723214345p:plain

そして、dfu-utilなどを使って、FEZ Bootloader.2.0.3.dfuフラッシュメモリに書き込んでください。

C:\>dfu-util -l
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Found DFU: [0483:df11] ver=2200, devnum=7, cfg=1, intf=0, path="1-1.4", alt=3, name="@Device Feature/0xFFFF0000/01*004 e", serial="3259375D3036"
Found DFU: [0483:df11] ver=2200, devnum=7, cfg=1, intf=0, path="1-1.4", alt=2, name="@OTP Memory /0x1FFF7800/01*512 e,01*016 e", serial="3259375D3036"
Found DFU: [0483:df11] ver=2200, devnum=7, cfg=1, intf=0, path="1-1.4", alt=1, name="@Option Bytes  /0x1FFFC000/01*016 e", serial="3259375D3036"
Found DFU: [0483:df11] ver=2200, devnum=7, cfg=1, intf=0, path="1-1.4", alt=0, name="@Internal Flash  /0x08000000/04*016Kg,01*064Kg,07*128Kg", serial="3259375D3036"

C:\>dfu-util -a 0 -D "FEZ Bootloader.2.0.3.dfu"
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

Match vendor ID from file: 0483
Match product ID from file: 0000
Opening DFU capable USB device...
ID 0483:df11
Run-time device DFU version 011a
Claiming USB DFU Interface...
Setting Alternate Setting #0 ...
Determining device status: state = dfuERROR, status = 10
dfuERROR, clearing status
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 011a
Device returned transfer size 2048
DfuSe interface name: "Internal Flash  "
file contains 1 DFU images
parsing DFU image 1
image for alternate setting 0, (1 elements, total size = 14744)
parsing element 1, address = 0x08000000, size = 14736
Download        [=========================] 100%        14736 bytes
Download done.
done parsing DfuSe file

C:\>

書き込みが完了したら、パソコンからUSB-HUBを外してJP2のジャンパーピンを元に戻します。

ファームウェアの書き込み

再び、USB-HUBをパソコンに接続すると、COMが2つ表示されるので、下の方にTeraTermで接続します。

f:id:matsujirushix:20170726210754p:plain

COMが1つしか表示されないときは、GHI Bootloaderがすでにフラッシュメモリに存在するプログラムを起動しています。 このような場合は、PA15をGNDに繋ぎながらパソコンに接続すると、プログラム起動を抑止してCOMが2つ表示されます。

TeraTermで接続したGHI Bootloaderで、Uを入力してからFEZ Firmware.0.5.0.glbをXMODEMで送信します。送信のときに、オプションの1Kにチェックを付けてください。

HI Electronics, LLC Bootloader
-------------------------------
OK.
Are you sure (Y/N)?
Waiting...
CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
OK.

f:id:matsujirushix:20170726211126p:plain

再び、USB-HUBを外して、USB-HUBをパソコンに接続すると、FEZという不明なデバイスが表示されればOKです。

f:id:matsujirushix:20170723222107p:plain

Windowsデバイスドライバをインストー

GHI_TinyCLR_Interface.zipを適当なフォルダに解凍しておき、さきほどのFEZという不明なデバイスどのドライバ更新でzip解凍先を指定します。

f:id:matsujirushix:20170723222334p:plain

f:id:matsujirushix:20170723222350p:plain

FEZのビックリマークが消えればOKです。

f:id:matsujirushix:20170723222538p:plain

Visual Studioから認識できるか確認

適当にTinyCLRプロジェクトを新規作成して、プロジェクトのプロパティにあるDeviceにFEZ_FEZと表示されれば、デバイスがきちんと認識できています。

f:id:matsujirushix:20170723222738p:plain

最後に

とりあえずデバイスをセットアップすることができました。

次は、GPIOのやり方を確認したいと思います。