3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TOPPERSAdvent Calendar 2023

Day 9

Arduino CLIをMakefileで使うためのmsys+Visual Studio Codeの環境構築

Last updated at Posted at 2023-12-09

Arduino CLIをMakefileで使うためのmsys+Visual Studio Codeの環境構築

この記事は、「Arduino UNO R4で始めるTOPPERS RTOS開発」で使ったArduinoのコマンドラインツールArduino CLIMakefileから使うため、WindowsにmsysをインストールしてVisual Studio Codeで使えるようにする手順を説明する記事です。

ソフトのインストール

Arduino CLIVisual Studio Codeに付いては、こちらの記事でインストールされているものとします。

msys2は次のリンクからダウンロードしてインストールします。

https://www.msys2.org/

インストーラなので簡単ですが、インストール先のフォルダには注意が必要です。ASCII文字だけで構成されたフォルダのパスで短めのパスである必要があります。この記事では標準のC:\msys64で説明していきます。

msys2はWindowsでUnixコマンドを扱えるようにする環境一式を扱うソフトウェアです。多数のコマンドはパッケージとして個別にインストールやアンインストール、アップデートが出来ます。

初期状態では、含まれるパッケージのそれぞれが最新状態とは限らないので、全体的なアップデートを行います。

インストールしたmsys2を実行します。種類がいくつかありますが「MSYS2 MSYS」を選択します。

msys2

user@mycomputer MSYS ~
$ pacman -Syuu
 msys is up to date
:: Starting core system upgrade...
 there is nothing to do
:: Starting full system upgrade...
 there is nothing to do

次にmakeパッケージをインストールします。

user@mycomputer MSYS ~
$ pacman -S make
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (1) make-4.4.1-1

合計ダウンロード容量:        0.49 MiB
合計インストール容量:        1.61 MiB
最終的なアップグレード容量:  0.03 MiB

:: インストールを行いますか? [Y/n] y
:: パッケージを取得します...
 make-4.4.1-1-x86_64                               505.9 KiB   264 KiB/s 00:02 [#####################] 100%
(1/1) キーリングのキーを確認                                                   [#####################] 100%
(1/1) パッケージの整合性をチェック                                             [#####################] 100% 
(1/1) パッケージファイルのロード                                               [#####################] 100% 
(1/1) ファイルの衝突をチェック                                                 [#####################] 100% 
(1/1) 空き容量を確認                                                           [#####################] 100% 
:: パッケージの変更を処理しています...
(1/1) 更新 make                                                                [#####################] 100%
:: トランザクション後のフックを実行...
(1/1) Updating the info directory file...

ワークスペースの作成

Visual Studio Codemsysを使うための設定を行いたいのですが、そのためにまずワークスペースフォルダを作成します。お好みの場所でよいのですがmsys2を使うためパスが深くならない場所に作成します。

このフォルダにはmakeからarduino-cliが使えるかを簡単に確認するために、スケッチ例をGitHubからダウンロードして展開します。

https://github.com/digiampietro/arduino-makefile

緑色のCodeボタンを押して表示されるDownload ZIPを選択して、コード一式をダウンロードし、ワークスペースに展開します。

Download ZIP

次に、Arduino CLIをインストールします。といってもarduino-cli.exe単体で動作するもので、ワークスペースフォルダにtoolsというフォルダを作ってその中に展開します。

https://arduino.github.io/arduino-cli/0.35/installation/

準備が終わると下記のようにフォルダとファイルが配置されます。

Visual Studio Codeでこのフォルダを開きます。

Visual Studio Codeにmsysのbashをターミナルとして登録する

Visual Studio Codeでコマンドを実行するのに使うターミナルという領域があります。
ターミナルには初期状態で次のものが登録されています。

  • PowerShell
  • Git Bash
  • Command Prompt

登録されているターミナルの種類は、プロファイルと呼ばれていて、ユーザごとに登録される設定となっています。
ここに、msys2bashのプロファイルを登録します。登録すると他のワークスペースでも選択できるようになります。

ターミナル

ターミナルを開くにはメニューから「ターミナル」→「新しいターミナル」を選択するか、Ctrl + Shift + @を押します。

新しいターミナル

ターミナル右上の+ボタンの横のを押してターミナル設定の構成を選びます。

ターミナル設定の構成

フィルタにprofilesを追加して、Terminal > Integrated > Profiles: Windows.settings.jsonで編集をクリックします。同じような名前がいくつかあるので間違えないよう確認してください。

Terminal > Integrated > Profiles: Windows

ユーザー設定の.settings.jsonファイルが開かれますので、下記のMsys Bash部分を追加してください。名前はMsys Bashでなくても良いのですが、この記事ではこの名前で説明します。

"terminal.integrated.profiles.windows": {
    "PowerShell": {
        "source": "PowerShell",
        "icon": "terminal-powershell"
    },
    "Command Prompt": {
        "path": [
            "${env:windir}\\Sysnative\\cmd.exe",
            "${env:windir}\\System32\\cmd.exe"
        ],
        "args": [],
        "icon": "terminal-cmd"
    },
    "Git Bash": {
        "source": "Git Bash"
    },
    "Msys Bash": {
        "path": "C:\\msys64\\usr\\bin\\bash.exe",
        "args": [
            "--login",
            "-i"
        ]
    }
}

pathにmsys2のインストールしたパスを入力します。

フォントの都合で\で表示されています。これはjson文字列のエスケープ文字なので、エスケープを打ち消すため\\になっています。
argsのコマンドオプションも設定します。簡単に効果を説明すると、--loginは環境変数のPATHにmsysのコマンドパスが設定されます。msysのmakeを使うのに必要です。-iはインターラクトモードで起動する指定です。スクリプトファイルを実行するのではなく、ユーザーが対話的にコマンドを入力するモードにしたいので、このオプションを付けておきます。

ワークスペースの設定

Visual Studio CodeF1を押して基本設定:ワークスペース設定を開くを選択します。

F1

Terminal > Integrated > Default Profile: windowsを探します。フィルタにterminal default windowsを入力すると項目が絞り込まれます。

Terminal > Integrated > Default Profile: windows

.vscode\settings.jsonが作成されエディタで開かれます。
ワークスペースのデフォルトプロファイルに先ほど登録したMsys Bashを設定します。

また、msys2のための環境構築を設定します。CHERE_INVOKINGMSYS2_PATH_TYPEMSYSTEMです。CHERE_INVOKINGは呼び出されたディレクトリをカレントディレクトリとして使う指定です。MSYS2_PATH_TYPEはWindows環境変数PATHを引き継ぎます。MSYSTEMはWindows向けのgcc環境MinGWを使用する場合はMINGW64などを選択しますが、今回は使わないためMSYS2と設定します。
さらに、arduino-cliが見つかるようにパスPATHを設定します。先ほど設定したとおり、ワークスペースフォルダにtoolsとうフォルダを作ってその中に、arduino-cliを配置したので、Visual Studio Codeの変数でワークスペースフォルダを示す${workspaceFolder}を使って、指定しています。
ついでにarduino-cliで使用する環境変数FQBNを設定しておきます。ターゲットとしてArduino Uno R4を指定する値が入ります。

{
    "terminal.integrated.defaultProfile.windows": "Msys Bash",
    "terminal.integrated.env.windows": {
        "PATH": "${workspaceFolder}\\tools",
        "CHERE_INVOKING": "1",
        "MSYS2_PATH_TYPE": "inherit",
        "MSYSTEM": "MSYS2",
        "FQBN": "arduino:renesas_uno:minima"
    }
}

ターミナルがMsys Bashになりmakeが使えるか確認

Visual Studio CodeでショートカットキーCtrl + Shift + @の入力や、メニューからターミナル新しいターミナルを選択してターミナルを開きます。

下記のようにbashが表示されれば成功です。

user@mycomputer MSYS2 /path/to/workspace
$ 

次にmakeにパスが通っているか確認します。

make –version↲でバージョンが表示されれば成功です。

user@mycomputer MSYS2 /path/to/workspace
$ make --version
GNU Make 4.4.1
このプログラムは x86_64-pc-msys 用にビルドされました
Copyright (C) 1988-2023 Free Software Foundation, Inc.
ライセンス GPLv3+: GNU GPL バージョン 3 以降 <https://gnu.org/licenses/gpl.html>
これはフリーソフトウェアです: 自由に変更および配布できます.
法律の許す限り、 無保証 です.

.vscode\settings.jsonに設定した環境変数が使えるようになっているかも確認してみます。

user@mycomputer MSYS2 /path/to/workspace
$ echo $FQBN
arduino:renesas_uno:minima

そして、arduino-cliが使えるかも試してみます。

user@mycomputer MSYS2 /path/to/workspace
$ arduino-cli version
arduino-cli.exe  Version: 0.34.2 Commit: 963c1a76 Date: 2023-09-11T10:05:41Z

ではいよいよblink-arduinomakeしてみたいと思います。

user@mycomputer MSYS2 /path/to/workspace
$ cd blink-arduino
user@mycomputer MSYS2 /path/to/workspace/blink-arduino
$ make
FQBN       is [arduino:renesas_uno:minima]
IOT_NAME   is []
OTA_PORT   is []
OTA_PASS   is []
V          is [1]
VFLAG      is [-v]
MAKE_DIR   is [/path/to/workspace/blink-arduino]
BUILD_DIR  is [build/arduino.renesas_uno.minima]
SRC        is [blink-arduino.ino]
HDRS       is []
BIN        is [build/arduino.renesas_uno.minima/blink-arduino.ino.bin]
SERIAL_DEV is [com3]
arduino-cli compile -b arduino:renesas_uno:minima -v --build-path build/arduino.renesas_uno.minima
FQBN: arduino:renesas_uno:minima
Using board 'minima' from platform in folder: C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\renesas_uno\1.0.5
Using core 'arduino' from platform in folder: C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\renesas_uno\1.0.5

Detecting libraries used...

(中略)

"C:\\Users\\user\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\arm-none-eabi-gcc\\7-2017q4/bin/arm-none-eabi-size" -A "D:\\path\\to\\workspace\\blink-arduino\\build\\arduino.renesas_uno.minima/blink-arduino.ino.elf"
最大262144バイトのフラッシュメモリのうち、スケッチが53712バイト(20%)を使っています。
最大32768バイトのRAMのうち、グローバル変数が4552バイト(13%)を使っていて、ローカル変数で28216バイト使うことができます。

Used platform       Version Path
arduino:renesas_uno 1.0.5   C:\Users\user\AppData\Local\Arduino15\packages\arduino\hardware\renesas_uno\1.0.5
which: no arduino-manifest.pl in (/usr/local/bin:/usr/bin:/bin:/path/to/workspace/tools:/c/Python39:/c/Users/user/AppData/Local/Arduino15/packages/arduino/tools/arm-none-eabi-gcc/7-2017q4/bin:/c/Users/user/AppData/Local/Arduino15/packages/arduino/tools/openocd/0.11.0-arduino2/bin:/c/Users/user/AppData/Local/Arduino15/packages/arduino/tools/openocd/0.11.0-arduino2/share/openocd:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl)
---> If you want to generate manifest.txt, listing used libraries and their versions,
---> please install arduino-manifest, see https://github.com/digiampietro/arduino-manifest
user@mycomputer MSYS2 /path/to/workspace/blink-arduino
$ 

これでArduinoのスケッチをVisual Studio Codeでmakeでビルドする環境が出来ました。TOPPERSなどビルドにmakeを使ったソフトも多いので、Arduinoスケッチからmakeを利用するアプリの作成に繋がるステップになればよいなと考えています。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?