Visual Studio 2015 Update 2 で Raspbian上のC++アプリを開発する


de:code 2016が終わり、早くも1週間。丁度1週間前、DEV-009セッションをパークタワーホテルのセミナールームBでやってましたね。あのセッションでお見せしたデモのうち、まずは、Visual Studio 2015 Update 2で、Raspbian上のC++アプリをリモートビルド&リモートデバッグする方法の詳細を解説しておきます。

セッションでは、GHI Electorinics社製の.NET Gadgeteer対応のリレーモジュール(残念ながらディスコン製品)をGPIOピンにつないでリレカチ(リレーカチカチ)して、白熱電球をちかちかさせるデモをお見せしました。まぁこのGadgetを使わなくても一般的なリレーで代替するので適当に読み替えて試してみてください。

本題のVisual Studio 2015 Update 2で、Raspbian上のC++アプリの開発実行は、実はとても簡単。以下の手順でやっていくと簡単に動作します。開発用PCはWindows前提です。MacはVisual Studio Codeは動くけど、Visual Studio 2015は動かないから。それから、ネットを介したリモート接続を行うので、有線、もしくはWiFiでつながるネットワーク 環境も用意してください。

その1 ‐ Raspbianのインストール
Raspberry PiにさすマイクロSDカードをSDFormatter)でフォーマットします。クイックフォーマット、論理サイズ調整ONでフォーマットOKです。フォーマット済みのSDカードに、NOOBSのサイトからダウンロードしたZIPファイルの中身を解凍して、全コピーします。
一番面倒くさい手順と思われる、HDMI対応ディスプレイ、USBキーボード、USBマウス、USB WiFiドングルをRaspberry Piに装着し(有線でネットにつなぐ場合はイーサネットケーブルも挿入)、SDカードを挿入後に電源を入れます。しばらくすると、NOOBSが起動し、インストール可能なOSの一覧が表示されます。Windows 10 IoT Coreを選択する誘惑を殺しつつ、Raspbianを選択して、”Install”ボタンをクリックしてインストールが開始されます。インストール中はいろいろ設定などありますが、ネット上に沢山情報が転がっているので、探しつつやってみてくださいね。
OSのインストールが終わったら、WiFiでネットにつなぐ場合には、この段階でWiFiに接続しておきましょう。設定方法はたぶん直感的にわかりそうなので、ここでは説明しません。
ネットに接続で来たら、シェルを開いて、ipconfig というコマンドを実行し、Raspberry PiのIPアドレスを表示させ、メモっておいてください。ここまでできたら、リモートシェルでいくらでもネットを通じて外部から制御可能なので、電源切って次の電源オン時には、いちいちHDMI対応ディスプレイもUSBキーボード、マウスもつないでおく必要はありません。

その2 ‐ Visual Studio 2015 Update 2のインストール
既にVisual Studio 2015がインストールされている場合は、メニューの”ツール”→”拡張機能と更新プログラム”を選択し、ダイアログ左の”更新プログラム”→”製品の更新プログラム” カテゴリを選択します。”Visual Studio 2015 Update 2”があるはずなので、それを選択し”更新”ボタンをクリックしてアップデートしてください。まだインストールしていない方、個人お試しなら、https://www.visualstudio.com/ の”Community 2015のダウンロード”をクリックしてインストールしてください。ついでに、Azureの各種サービスが月25ドル分12か月使える、http://www.visualstudio.com/ja-jp/products/visual-studio-essentials-vs.aspx もお試しを。
インストールの際、機能の選択で、”クロスプラットフォームモバイル開発”→”Visual C++モバイル開発”→”Visual C++ Android Development(Update 2)にチェックを入れてください。既にインストール済みの方は、コントロールパネルの”プログラムのアンインストールまたは変更”で、Visual Studio 2015をダブルクリックし、”変更”でこの画面を表示できます。

VSSetupCCAndroidCCPP

インストール・変更が終わったらVisual Studio 2015を起動し、メニューの”ツール”→”拡張機能と更新プログラム”を選択し、ダイアログに”Visual C++ for Linux”と入力して検索・表示される、”Visual C++ for Linux Development”をダウンロード&実行して機能拡張します。

VSExtensionVCPPForLinux

拡張機能をインストールしたらVisual Studioを再起動します。

その3 ‐ Blink(Raspberry Pi)の実行
Visual Studioのメニューの”ファイル”→”新規作成”→”プロジェクト”を選択し、プロジェクトテンプレートのカテゴリ、”Visual C++”→”クロスプラットフォーム”→”Linux”を選択します。表示されている”Blink(Raspberry Pi)”を選択して、新しいプロジェクトを作成します。プロジェクトが出来上がると、https://blogs.msdn.microsoft.com/vcblog/2016/03/30/visual-c-for-linux-development の内容が表示されます。ここに書かれてある方法に従って、やっていけば、Raspberry Piが起動していて、Visual Studio 2015が動いているPCと同じネットにつながってさえいれば、必ず動きます。
メニューですでに、”Debug”、”ARM”、”Remote GDB Debugger”が選択済みになっているので、”Remote GDB Debugger”をマウスでクリックします。そうすると、”Host Name”やユーザー名、パスワードを入力するダイアログが表示されるので、PortとAuthentication typeは変更せずに、Raspberry PiのIPアドレス、設定されているユーザー名とパスワードを入力し、”Connect”をクリックすれば、開発PC上のソースファイルが、Raspberry Piにリモートコピーされ、Raspberry Pi上でコンパイル、アプリ実行が始まります。ブレークポイントの設定やステップ実行、変数の値確認などは、Visual Studio 2015の開発環境で行うことができます。

Raspberry Pi上では、g++、gdb、gdbserverが使われます。これ実は相手がRaspbianでなければならないというわけではないです。リモートシェルで接続できて、g++、gdb、gdbserverがインストールされているターゲット機なら何でも同じやり方でリモートビルド、デバッグが可能です。相手がLinuxでなくても可能です。
WinSCPやputtyなど(HDMIディスプレイやUSB キーボードが接続されているならそれでも可)を使って、Connectの時に指定したユーザーのホームディレクトリの直下を見てみてください。Project名のフォルダーとその中に格納されたソースファイルや実行ファイルが見えるはずです。

おまけ
Visual Studio 2015 Update 2に組み込まれたBlink(Raspberry Pi)プロジェクトは、Raspbian が想定するPIN配置のGPIO 17番ピンをOFF/ONするアプリです。GPIO17番ピンは、Raspberry Pi2のイーサネットポートやUSB ソケットを手前側に平置きして、2列に並んだピンを右に見て、左の列の上から6番目のピンです。左の列の一番上のピンは3.3Vのピンなので、そのピンから4つピンを空けて つなぐとよいでしょう。私の場合は、図のように接続

WP_20160601_13_48_39_Pro

4つのリレーがついているこのGadgetの回路図 は残念ながらないですが、http://www.ghielectronics.com/downloads/schematic/Relay_X1_2_0_Module_SCH.pdf とほぼ一緒(3.3VのみつなげばOK。リレー×1の5番ピンはリレー×4の3番ピンに相当)なので、GPIO17にトランジスタのベースをつなぎ、3.3VとGNDをつなげば良し。GPIO17をHIGHにするとリレーがONになって100Vの制御も可能になります。リレーはオンするとカチっと音がするのでわかりやすいです。

あ、100Vを扱う場合、感電すると結構痛い(人によっては死ぬかも)ので、絶縁に十分気をつけて、くれぐれも感電することなきよう、気を付けてくださいね。

Comments (0)

Skip to main content