はじめに
試行錯誤中なので、とりあえずのメモ書きです。
これにしたがってポチポチとやってみました。
http://bonebyte.com/?p=151
作業時間は2時間程度です。
ビルドとボードへの書き込み
Windows 8 64Bit + Visual Studio Express 2012 for Windows Desktop + .NET Micro Framework は、V4.3 RTMを使います。
2015年1月現在の最新f版は Visual Studio Community 2013 + .NET Micro Framework V4.3 SDK-R2-Beta ですがこの組み合わせでは動きません。
必要なファイル
以下のファイルをダウンロードしておきます。
- .NET 4.3 Micro Framework
- STM32 ST Link
- GHI Gadgeteer package
- GCC 4.6
- Community ports and libraries for .NET Micro Framework
環境設定
ダウンロードしたファイルを使って、環境を整えていきます。
- Visual Studio Community 2013 をインストール
- GCC 4.6 を "C:\GCC_ARM_4_6" にインストール
- .net microframework 4.3 をインストール
- Community ports and libraries を "C:\MicroframeWorkPK_4_3" に解凍
- GHI Gadgeteer package をインストール
- STM32 ST Link をインストール
- msbuild が使えるか、確認
- コマンドプロンプトを起動し、msbuild.exe を実行
- 見つからない場合、環境変数のPathにC:\Windows\Microsoft.NET\Framework64\v4.0.30319 を追加
- コマンドプロンプトで、C:\MicroframeWorkPK_4_3 に移動し、以下のコマンドを実行
setenv_gcc.cmd 4.6.2 C:\GCC_ARM_4_6
ファームウェアの修正
これからビルドするのは、Cerberus と呼ばれるボードのファームウェアになります。
Cerberus では12MHzクリスタルが使われていますが、STM32F4DISCOVERYは8MHzクリスタルが使われているため、ソースの一部の修正が必要になります。
# define SYSTEM_CRYSTAL_CLOCK_HZ 12000000 // 12MHz external clock
この値を 8000000 に書き換えて保存します。
ビルド
C:\MicroframeWorkPK_4_3 の中で、以下のコマンドを実行します。
msbuild.exe build.dirproj
C:\MicroframeWorkPK_4_3\Solutions\FEZCerberus の中で、以下のコマンドを実行します。
msbuild.exe dotNetMF.proj /t:build /p:flavor=release;memory=flash
ビルドが終わると、"ビルドに成功しました。"と出ます。
警告がいろいろと出ましたが、気にせずに次に進みます。
以下のフォルダの中から、ファイルを取り出して適当なフォルダの中にまとめて入れておきます。
C:\MicroframeWorkPK_4_3\BuildOutput\THUMB2\GCC4.6\le\FLASH\release\FEZCerberus\bin
- tinybooter.hex
- tinyclr.hex フォルダ内 の ER_CONFIG
- tinyclr.hex フォルダ内 の ER_FLASH
ボードへの書き込み
ビルドしたファイルを書き込みます。
- STM32F4 Discoveryをmini usbで繋ぎ、電源を入れる
- ST-Link Utilityを起動し、"Connect to the target." ボタンを押す
- Target メニュー > Erase Chip を選択
- Target メニュー > Erase Sectorを選択、Select All を選択後に、Apply
- Target メニュー > Programを選択、ファイル選択ダイアログで、ビルド後に取り出しておいたtinybooter.hex を選択し、start
- STM32F4 Discoveryのmini usbを抜き差しし、STM32F4 Discoveryを再起動
- STM32F4 Discoveryをmicro usbで繋ぐ
- デバイスマネージャーを開き、ユニバーサルシリアルバスデバイスの中にCerb-Familyがあり、正常に動作していることを確認
- .Net Micro framework Deployment tool を起動
- DeviceのドロップダウンからUSBを選択し、"Ping" ボタンを押す
- Cerb-Family Gadgeteerが選択済になる
- Image fileの "Browse"ボタンを押す
- ビルド後に取り出しておいた "ER_FLASH" "ER_CONFIG" を選択する
- Image fileの "Deploy"ボタンを押す
動作確認
Visual Studioを起動し、新しいプロジェクト > Visual C# > Micro Framework > Console Applicationを選択します。
プロジェクトが開いたら、プロジェクト > プロパティを開き、".NET Micro Framework"タブを選択します。
Deploymentの中のTransportドロップダウンを"USB"に変更し、Deviceが"Cerb-Family_Gadgeteer"に変わったことを確認してプロパティを閉じます。
あとは、いつも通り、ビルドして実行するだけ。
デバッグ出力にHello World!と出ているはずです。