ラズベリー・パイ Picoマイコン入門 C言語開発環境の構築

RP2040のハードウェア性能を100%引き出す本格組込みプログラミング

イントロダクション

Windows10の64ビット版が対象

ここでは,「ラズベリー・パイPico」(以下「ラズパイPico」)のプログラムをC言語で開発するために必要なソフトウェアのインストール手順を説明します.本稿の内容は2021年6月時点のものですが,今後変更される可能性がありますのでご了承ください.

また,使用するパソコンのOSは「Windows10の64ビット版」であるとします.他のOSにおける動作は未確認ですのでご注意ください.なお,すべてのソフトウェアをインストールするには10 Gバイト程度の容量が必要です.

6個のツールをインストールする

ラズパイPicoのC言語開発環境を構築するためには,以下の6個のツールをインストールする必要があります.これらはすべて無償で利用できます.

  • ARM GCC Compiler
  • CMake
  • Build Tools for Visual Studio 2019
  • Python 3.9
  • Git for Windows
  • Visual Studio Code

これらのツールを組み合わせて構築する開発環境の全体図を図1に示します.

図1 これからインストールするC言語開発環境の全体図

“ARM GCC Compiler”および“Build Tools for Visual Studio 2019”は,この開発環境の中核です.“CMake”は実行ファイルのビルドに必要な各種ファイルの管理を自動化するためのツールです.“Python 3.9”はプログラミング言語“Python”の実行環境そのものですが,ここでは補助的な役割を果たします.

“Visual Studio Code”はソース・コードを書くためのエディタです.今回はこのエディタとビルド用のツールを連携させて使います.“Git for Windows”は公式のSDKおよびサンプル・プログラムを“GitHub”(ギットハブ)からダウンロードするときに使います.

実際にC言語でプログラムを開発するときは,「C言語のソース・ファイル」と「CMake用の設定ファイル」を記述します.これらを用意した上で「ビルド」を実行すると,ラズパイPicoに書き込む「実行ファイル」が得られます.

全体の流れ

ここから先の作業の流れを図2に示します.先にエディタ以外のツールをインストールして,サンプル・プログラムを問題なくビルドできることを確認します.その後,エディタとビルド環境の連携を設定します.最後に,自作のプログラムをビルドする方法について説明します.

図2 これから先の作業の流れ

“ARM GCC Compiler”をインストールする

ラズパイPicoボードに搭載されている“RP2040”というワンチップ・マイコンの中核は,“ARM Cortex-M0+”というプロセッサです.このプロセッサ用のコンパイラである“ARM GCC Compiler”をインストールします.なお,“GCC”は“GNU Compiler Collection”(あるいは“GNU C Compiler”)の略です.

図3のように,“GNU Arm Embedded Toolchain”のページにアクセスして“Downloads”のボタンをクリックします.

画面を下にスクロールしていくと図4のように最新版の一覧があるので,この中から実行形式のインストーラ(拡張子が“.exe”)である“gcc-arm-none-eabi-10-2020-q4-major-win32.exe”をダウンロードします.インストーラはデスクトップなどのわかりやすい場所に保存することをおすすめします.

図3 “Downloads”をクリックする 図4 Windows用のインストーラをダウンロードする

ダウンロードしたインストーラ(図5)をダブル・クリックして起動します.

最初に表示される画面(図6)では“Japanese”を選択して [OK] をクリックします.

図5 インストーラをダブル・クリックして起動する 図6 “Japanese”を選択して [OK] をクリックする

図7の画面では [次へ] をクリックします.

図8の画面では [同意する] をクリックします.

図7 [次へ] をクリックする 図8 [同意する] をクリックする

図9の画面ではインストール先のディレクトリ(フォルダ)を選択して [インストール] をクリックします.ここではデフォルトの設定としました.

インストールが完了するまで待ちます(図10).

図9 インストール先を設定する(今回はデフォルトのまま) 図10 インストールが完了するまで待つ

インストールが完了すると図11の画面が表示されるので,すべてのチェック・ボックスにチェックを付けて [完了] をクリックします.この時表示されるウィンドウは,すべて閉じてしまってください.

/tr>
図11 すべてのチェック・ボックスにチェックを付けて [完了] をクリックする

“CMake”をインストールする

ラズパイPicoに書き込むプログラム・ファイル(「バイナリ・ファイル」や「実行ファイル」などと呼ばれる)を作るためには,複数のソース・コードやライブラリをまとめる必要があります.ここでインストールする“CMake”(シー・メイク)は,実行ファイルを生成する上で必要となる複数のファイルを効率よく管理するためのツールです.

まずは図12のようにCMakeの公式サイトにアクセスして“Download”をクリックします.

“Binary distributions”という項目の中から“Windows x64 Installer”を探します(図13).今回は実行形式のインストーラである“cmake-3.20.3-windows-x86_64.msi”をダウンロードします.

図12 “Download”をクリックする 図13 “Windows x64 Installer”をダウンロードする

ダウンロードしたインストーラ(図14)をダブル・クリックして起動します.

図15の画面では [Next] をクリックします.

図14 インストーラをダブル・クリックして起動する 図15 [Next] をクリックする

図16の画面では“I accept the terms in the License Agreement”にチェックを付けて [Next] をクリックします.

図17の画面では“Add CMake to the system PATH for all users”を選択して [Next] をクリックします.

図16 “I accept the terms in the License Agreement”にチェックを付けて[Next]をクリックする 図17 “Add CMake to the system PATH for all users”を選択して[Next]をクリックする

図18の画面ではインストール先のディレクトリ(フォルダ)を設定して [Next] をクリックします.今回はデフォルトの設定としました.

図19の画面で [Install] をクリックするとインストールが始まります.このとき「このアプリがデバイスに変更を加えることを許可しますか?」と聞かれるので「はい」をクリックします.

図18 インストール先を設定する(今回はデフォルトのまま) 図19 [Install] をクリックする

インストールが完了するまで少し待ちます(図20).

インストールが完了すると図21の画面が表示されるので,[Finish] をクリックして終了します.

図20 インストールが完了するまで待つ 図21 [Finish] をクリックして終了

“Build Tools for Visual Studio 2019”をインストールする

先にインストールした“ARM GCC Compiler”は,C言語で書かれたソース・ファイルからバイナリ・ファイル(オブジェクト・ファイル)を生成するためのツール(コンパイラ)です.実際にラズパイPico上で実行するプログラムを作るためには,このバイナリ・ファイル以外にも複数のライブラリや他のソース・コード由来のバイナリ・ファイルを組み合わせて1つにまとめる工程が必要となります.一般に,複数のC言語のソース・ファイルやライブラリをもとにして実行ファイルを作成する全ての工程のことを「ビルド」(build)といいます.ここでインストールする“Build Tools for Visual Studio 2019”は,この「ビルド」を担うツールです.なお,「コンパイル」は「ビルド」の一部であると言えます.

まずは,図22のように“Visual Studio 2019”のダウンロード・ページにアクセスします.画面を下にスクロールすると「Visual Studio 2019のツール」という項目があるので,これを展開します.

図23のように“Build Tools for Visual Studio 2019”という項目があるので,「ダウンロード」をクリックします.インストーラのダウンロードが始まるので,デスクトップなどのわかりやすい場所に保存します.

図22 「Visual Studio 2019のツール」を展開する 図23 “Build Tools for Visual Studio 2019”をダウンロードする

ダウンロードしたインストーラ(図24)をダブル・クリックして起動します.

図25の画面では,「続行」をクリックします.

図24 インストーラをダブル・クリックして起動する 図25 [続行] をクリックする

図26の画面では,必要なファイルがダウンロードされるまで待ちます.

図27の画面では,インストールするツールを選択します.画面の左側の領域で「C++によるデスクトップ開発」にチェックを付けます.すると,右側の一覧で以下の5つの項目にチェックが付きます.

  • MSVC v142 -VS 2019 C++ x64/x86 ビルド...
  • Windows 10 SDK (最新バージョン)
  • Windows 用 C++ CMake ツール
  • ツールのコア機能のテスト - ビルド ツール
  • C++ AddressSanitizer

上記の項目にチェックが付いていることを確認したら,右下のメニューで「ダウンロードしながらインストールする」を選択して [インストール] をクリックします.

図26 必要なファイルがダウンロードされるのを待つ
図27 「C++によるデスクトップ開発」にチェックを付けて [インストール] をクリックする

図28の画面では,必要なファイルのダウンロードとインストールが完了するまで待ちます.

インストールが完了すると図29の画面が表示され,再起動するように求められます.[再開] ボタンをクリックすると再起動します(他に開いているアプリケーションがあれば先に閉じておくことをおすすめします).

図28 インストールが完了するまで待つ
図29 [再開] ボタンをクリックして再起動する(他のアプリケーションを閉じておく)

“Python 3.9”をインストールする

“Python”(パイソン)の実行環境をインストールします.なお,ここでは初めてPythonをインストールするものと仮定します.ラズパイPicoの開発環境としてはPythonの「バージョン 3.9」を使うことが推奨されているので,もし古いバージョンのPython実行環境がインストールされている場合は適宜「バージョン 3.9」にアップデートにしておくことをおすすめします.

まずは図30のようにPythonの公式ページにアクセスして,“Downloads”の項目から“Windows”を選択します.

図31のように,ダウンロード可能なファイルの一覧が表示されます.今回はPython 3系のうち“Stable Releases”の最新版である“Python 3.9.5”をインストールします.“Windows installer (64-bit)”をクリックして,インストーラをダウンロードします.インストーラはデスクトップなどのわかりやすい場所に保存することをおすすめします.

図30 “Downloads”項目の“Windows”をクリックする 図31 “Windows installer (64-bit)”をクリックしてインストーラをダウンロードする

ダウンロードしたインストーラ(図32)をダブル・クリックして,インストーラを起動します.

図33の画面では,画面下部の“Install launcher for all users (recommended)”および“Add Python 3.9 to PATH”にチェックを付けます.この状態で [Install Now] をクリックします.「このアプリがデバイスに変更を加えることを許可しますか?」と表示されるので「はい」をクリックします.

図32 ダウンロードしたインストーラをダブル・クリックして起動する 図33 Install launcher for all users”および“Add Python 3.9 to PATH”にチェックを付けて [Install Now] をクリックする

インストールが始まるので,しばらく待ちます(図34).

インストールが完了すると図35の画面が表示されるので,“Deisable path length limit”をクリックします.「このアプリがデバイスに変更を加えることを許可しますか?」と表示されるので「はい」をクリックします.

図34 インストールが完了するまで待つ 図35 “Deisable path length limit”をクリックする

“Git for Windows”をインストールする

ラズパイPicoの開発用に提供されているSDKやサンプル・プログラムは,“GitHub”(ギットハブ)というオンライン・プラットフォームで管理されています.このGitHubにアクセスしてファイルをダウンロードするためのツールである“Git for Windows”をインストールします.

まずは“Git for Windows”のダウンロード・ページにアクセスして,インストーラをダウンロードします(図36).

インストーラのダウンロードが完了したら,ダブル・クリックして起動します(図37).

図36 “Git for Windows”のインストーラをダウンロードする 図37 インストーラをダブル・クリックして起動する

インストーラが起動すると図38の画面が表示されるので, [Next] をクリックします.

図39の画面ではインストール先のディレクトリを指定します.今回はデフォルトの設定で [Next] をクリックします.

図38 [Next]をクリックする 図39 インストール先のディレクトリを指定して[Next]をクリックする

図40の画面ではインストール内容を選択します.今回はデフォルトのまま [Next] をクリックします.

図41の画面ではWindowsスタート・メニューに登録する名前を設定します.これもデフォルトのまま [Next] をクリックします.

図40 インストールする項目を選択して[Next]をクリックする 図41 スタート・メニューに登録する名称を設定して[Next]をクリックする

図42の画面ではエディタの設定を行います.今回はデフォルトの“Use Vim as Git's default editor”のままで [Next] をクリックします.

図43の画面では新しいブランチを作成した時の挙動について設定します.ここでもデフォルトの“Let Git decide”を選択して [Next] をクリックします.

図42 エディタの設定をして[Next]をクリックする 図43 “Let Git decide”を選択して[Next]をクリックする

図44の画面では,環境変数の設定に関するオプションを選択します.“Git from command line and also from 3rd-party software”を選択して [Next] をクリックします.

図45の画面ではHTTPS(Hypertext Transfer Protocol Secure)による接続の方式について設定します.今回は“Use the OpenSSL libarary”を選択して [Next] をクリックします.

図44 “Git from the command line and also from 3rd-party software”を選択して[Next]をクリックする 図45 “Use the OpenSSL library”を選択して[Next]をクリックする

図46の画面では改行コードの設定を行います.今回は“Checkout Windows-style, commit Unix-style line endings”を選択して [Next] をクリックします.

図47の画面ではターミナル・エミュレータの設定を行います.今回はデフォルトの“Use MinTTY”を選択して [Next] をクリックします.

図46 “Checkout Windows-style, commit Unix-style ilne endings”を選択して[Next]をクリックする 図47 “Use MinTTY”を選択して[Next]をクリックする

図48の画面では“git pull”コマンドの挙動について設定します.“Default”を選択して [Next] をクリックします.

図49の画面では“credential helper”に関する設定を行います.推奨されている“Git Credential Manager Core”を選択して [Next] をクリックします.

図48 “Default”を選択して[Next]をクリックする 図49 “Git Credential Manager Core”を選択して[Next]をクリックする

図50の画面では“Enable file system caching”にチェックを入れて [Next] をクリックします.

図51の画面で [Install] をクリックすると,インストールが開始されます.

図50 “Enable file system chaching”にチェックをつけて[Next]をクリックする 図51 [Install]をクリックする

インストールが完了するまでしばらく待ちます(図52).

インストールが完了すると図53の画面が表示されるので,“Launch Git Bash”にチェックを入れて[Finish]をクリックします.

図52 インストールが完了するまで待つ 図53 [Finish]をクリックして終了

図54のように“Git Bash”の起動画面が表示されれば成功です.このツールはすぐ後に使うので,起動したままにしておきます.なお,再び起動する場合はWindowsスタート・メニューから [G] - [Git] - [Git Bash] をクリックします.

図54 “Git Bash”の起動画面

SDKとサンプル・プログラムをインストールする

作業用のディレクトリを用意する

ラズパイPicoのプログラムをC言語で開発するために,公式から“SDK”(Software Development Kit,ソフトウェア開発キット)が提供されています.このSDKにはマイコンに含まれるUARTやADCといった周辺回路を操作するための便利な関数が含まれています.また,このSDKを使いこなすための「サンプル・プログラム」も公式から提供されています.このサンプル・プログラムは各周辺回路の使い方を短いプログラムで示しており,非常に参考になります.ここでは,これらのデータをGitHubからダウンロードします.

これからダウンロードするSDKやサンプル・プログラムは後で繰り返し参照することになると思うので,わかりやすい場所を決めて保存しておくことをおすすめします.また,ディレクトリ(フォルダ)のパスには日本語が含まれないようしておくと安全です.

今回は例として,Cドライブ直下に“Pico”というディレクトリを作ります(C:/Pico/).これ以降は,このディレクトリにSDKやサンプル・プログラムを保存します.もしディレクトリの位置や名前を変更する場合は,これ以降の内容を適宜読み替えてください.

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

先にインストールした“Git Bash”の画面でリスト1のコマンドを入力します.もしGit Bashを閉じてしまった場合は,Windowsスタート・メニューから [G] - [Git] - [Git Bash] をクリックして起動します.

cd C:/Pico
git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
cd ..
git clone -b master https://github.com/raspberrypi/pico-examples.git

リスト1 GitHubからSDKとサンプル・プログラムをダウンロードする

このコマンドを実行すると,C:/Pico/の中に“pico-sdk”というディレクトリと“pico-examples”というディレクトリが新しく作られます.軽く中身を確かめておいてください.

CUI上でビルドできることを確認する

サンプルのソース・コードをビルドする

ここまでにインストールしたツールを使って,問題なくサンプルのC言語ソース・ファイルをビルドできることを確認しておきます.なお,ここではコンソール(コマンドプロンプト)上でコマンドを直接入力して操作するCUI(Character User Interface)を利用します.

Windowsスタート・メニューから [V] - [Visual Studio 2019] - [Developer Command Prompt for VS 2019] をクリックします.“Developer Command Prompt”が起動したら,リスト2に示す一連のコマンドを入力してビルドを実行します.“cmake”および“nmake”コマンドの実行には少し時間がかかります.なお,Windows標準の「コマンドプロンプト」では動作しないので注意してください.

setx PICO_SDK_PATH "C:/Pico/pico-sdk"
cd C:/Pico/pico-examples
mkdir build
cd build
cmake -G "NMake Makefiles" ..
nmake

リスト2 サンプルのソース・コードをビルドする

リスト2のコマンドを正しく入力していれば,“C:/Pico/pico-examples”のディレクトリ内に“build”というディレクトリが作られ,その中に各サンプル・プログラムの実行ファイルが保存されます.

もしうまくいかない場合は,コマンドの打ち間違いがないか確認してください.それでもうまくいかない場合は,ここまでのツールのインストールの手順を見直し,抜けがないか確認してください.特に,パスを通していない場合はソフトウェア自体をインストールしていても正常動作しないので注意してください.

ラズパイPicoに.uf2ファイルを書き込む

正常にサンプル・プログラムのビルドが完了したら,ラズパイPicoに書き込んで動作確認をしてみます.

今回のディレクトリ構成の場合“C:/Pico/pico-examples/build/”の中に各サンプルの実行ファイルが格納されています.ここではラズパイPicoボード上の緑色LEDを点滅させるプログラムである“C:/Pico/pico-examples/build/blink/blink.uf2”を書き込みます.

プログラムを書き込むときは,写真1に示す“BOOTSEL”の白いボタンを押しながらUSBケーブルを接続します.この状態でパソコンと接続すると,ラズパイPicoはフラッシュ・メモリとして認識されます.ここで,“blink.uf2”ファイルをドラッグ・アンド・ドロップすれば書き込むことができます.

プログラムの書き込みが成功すると,ラズパイPicoは自動的に再起動します.写真2のようにボード上の緑色のLEDが点滅すれば成功です.

写真1 プログラムを書き込むときは白色の“BOOTSEL”ボタンを押しながらUSBケーブルを接続する 写真2 “blink.uf2”を書き込むと,ボード上の緑色LEDが点滅する

“RUN”端子にスイッチを取り付けると便利

図55にラズパイPicoのピン配置を示します.30番ピンの“RUN”端子の電圧レベルを“0”にすると,マイコンの動作をリセットできます.“RUN”端子はマイコンの内部でプルアップされているので通常は“1”になっていますが,GNDに接続すればリセットすることができます.

図55 ラズパイPicoのピン配置

もし何度もプログラムを書きかえる必要がある場合は,図56のように“RUN”端子とGNDとの間にプッシュ・スイッチを取り付けておくと便利です.こうすることで,毎回USBケーブルを抜き差しせずにプログラムを書き換えることができます.

図56 リセット用のプッシュ・スイッチを取り付けると便利

ラズパイPicoの動作モードは,リセットの直後(“RUN”端子の電圧レベルが“0”から“1”になった瞬間)に決まります(表1).リセットの直後にボード上の“BOOTSEL”ボタンが押されていれば,「プログラム書き込みモード」として動作します.一方で,リセットの直後に“BOOTSEL”ボタンが押されていなければ「通常動作モード」として動作します.

表1 ラズパイPicoの動作モード

“Visual Studio Code”をインストールする

ソース・コードを書くのに便利なエディタである“Visual Studio Code”をインストールします.

まずは,図57に示す“Download Visual Studio Code”のページにアクセスします.今回はWindowsの“User Installer”の“64bit”版をクリックしてインストーラをダウンロードします.インストーラはデスクトップなどのわかりやすい場所に保存することをおすすめします.

インストーラをダブル・クリックして,インストーラを起動します(図58).

図57 Windows版の“User Installer”の“64bit”をクリックしてインストーラをダウンロードする
図58 インストーラをダブル・クリックして起動する

図59の画面では,「同意する」を選択して [次へ] をクリックします.

図60の画面では,インストール先のディレクトリを設定します.今回はデフォルトの設定で [次へ] をクリックします.

図59 「同意する」を選択して [次へ] をクリックする 図60 インストール先を設定する(今回はデフォルトのまま)

図61の画面では,スタート・メニューに登録する名前を設定します.今回はデフォルトのまま [次へ] をクリックします.

図62の画面では,「PATHへの追加 」にチェックを付けて [次へ] をクリックします.

図61 スタート・メニューに登録する名前を設定する(今回はデフォルトのまま) 図62 “PATHへの追加”にチェックを付けて [次へ] をクリックする

図63の画面で [インストール] をクリックすると,インストールが始まります.

インストールが完了するまでしばらく待ちます(図64).

図63 [インストール] をクリックする 図64 インストールが完了するまで待つ

インストールが完了すると図65の画面が表示されます.[完了] をクリックして終了します.インストールが完了したら,念のため再起動しておくことをおすすめします.

図65 [完了] をクリックして終了

“Visual Studio Code”の設定を行う

“Visual Studio Code”の起動方法

Windowsスタート・メニューから [V] - [Visual Studio 2019] - [Developer Command Prompt for VS 2019] をクリックして,“Developer Command Prompt”を起動します.ここで“code”と入力して [Enter] を押すと,先にインストールした“Visual Studio Code”が起動します(図66).

図66 “Visual Studio Code”を起動するときは,“Developer Command Prompt”で“code”と入力する

“Visual Studio Code”を起動するときは,常に“Developer Command Prompt”から起動するようにしてください.通常の方法で起動(Windowsスタート・メニューなどから起動)した場合は,正常にビルドできないことがあるので注意してください.

“CMake”の導入と初期設定

“Visual Studio Code”とラズパイPico用のビルド環境を連携させるための設定を行います.図67のように左側のメニューから“Extensions”をクリックします.

図68のように検索用の入力欄が表示されるので,“CMake Tools”と入力して検索を実行します.すると“CMake Tools”が検索結果の中に表示されるので,[Install] をクリックします.“CMake Tools”をインストールすると,同時に“CMake”もインストールされます.

図67 画面左側の“Extensions”をクリックする 図68 “CMake Tools”を検索する

“CMakeTools”がインストールできたら,図69のように“CMake Tools”の項目の「歯車マーク」をクリックします.

すると図70のように設定項目リストが表示されるので,“Extension Settings”をクリックします.

図69 “CMake Tools”の欄の「歯車マーク」をクリックする
図70 “Extension Settings”をクリックする

“CMake Tools”の設定項目の一覧が表示されるので,下へスクロールして,図71に示す“Configure Environment”の項目を探します.ここで [Add Item] をクリックします.

[Add Item] をクリックすると入力欄が表示されるので,“Item”の欄に“PICO_SDK_PATH”と入力します.また,“Value”の欄には先にダウンロードしておいた“pico-sdk”ディレクトリの場所を記述します(図72).今回の例では“C:/Pico/pico-sdk”となります.

図71 “Configure Environment”の設定欄を探す 図72 環境変数“PICO_SDK_PATH”を追加し,“pico-sdk”ディレクトリの場所を入力する

続いて,図73に示す“Generator”の項目を探します.

図74に示すように,“Generator”の欄に“NMake Makefiles”と入力します.これで“Visual Studio Code”内部の“CMake”の設定は完了です.

図73 “Generator”の設定欄を探す 図74 “NMake Makefiles”と入力する

サンプル・コードをビルドする

図75に示すように, “Visual Studio Code”の画面上部のメニュー・バーから [File] - [Open Folder...] をクリックします.ここで,先にダウンロードしておいた“pico-examples”のディレクトリ(今回の場合は“C:/Pico/pico-examples”)を選択します.

問題なく“pico-examples”のディレクトリが読み込まれると,図76のように表示されます.

図75 [File] - [Open Folder...] をクリックする 図76 “pico-examples”のフォルダを読み込んだ様子

“Visual Studio Code”の画面下部には青いバーがあり,図77のように“No Kit Selected”と表示されている部分があります.ここをクリックすると,図78のようにコンパイラの一覧が表示されます.ここで“GCC (バージョン名) arm-none-eabi”を選択します.

図77 画面下部の“No Kit Selected”をクリックする 図78 コンパイラとして“GCC(バージョン名)arm-none-eabi”を選択する

使用するコンパイラを設定すると,図79のように選択したものが青いバーの部分に表示されます.以上でビルドのための準備は完了です.

画面下部の“Build”ボタン(図80)をクリックするとビルドが始まります.ビルドが完了するまで少々待ちます.

図79 コンパイラとしてGCCを選択した様子 図80 [Build] ボタンをクリックするとビルドが始まる

ビルドの途中でエラーが出ず,最終的に図81のように“Build finished with exit code 0”という結果が表示されれば成功です.

図81 問題なくビルドが完了するとこのように表示される

自分で開発用のディレクトリを作る(サブディレクトリ無し)

新しいディレクトリ“test”を作る

ここでは,すべて自分で開発用のディレクトリおよびソース・ファイルを作る手順を紹介します.例として“C:/Pico”の中に“test”というディレクトリを作り,この“C:/Pico/test”の中に自作のC言語ソース・ファイルを保存するものとします.

ここでは“test.c”という1つのC言語ソース・ファイルだけを扱います.このとき,作業ディレクトリ内に必要なファイルは以下の3つです.

  • test.c (自分で書いたC言語ソース・コード)
  • CMakeLists.txt (“CMake”のための設定ファイル)
  • pico_sdk_import.cmake (“CMake”のための設定ファイル.pico-examplesからコピーする)

以上の3つのファイルを揃えた状態のイメージを図82に示します.

図82 自分で用意した“test.c”をビルドするための作業ディレクトリ内の様子

“pico_sdk_import.cmake”をコピーする

先にダウンロードしておいた“pico-examples”というディレクトリの中に,“pico_sdk_import.cmake”というファイルがあります.これをそのままコピーして,今回用意した“test”ディレクトリの中におきます.

C言語のソース・コードを書く

“test.c”という名前で空のソース・ファイルを用意して,リスト3の内容を記述します.後の手順で“Visual Studio Code”上で開いてから編集しても構いません.

#include 
#include "pico/stdlib.h"
#include "hardware/gpio.h"

void main(void) {
    //To use USB
    stdio_init_all();

    //To use GPIO 25pin
    gpio_init(25);
    gpio_set_dir(25, GPIO_OUT);

    //Loop
    while (true)
    {
        //Output "Hello World!" via USB
        printf("Hello World!\r\n");

        //Blink green LED
        gpio_put(25, 1);
        sleep_ms(250);
        gpio_put(25, 0);
        sleep_ms(250);
    }
}

リスト3 LEDを点滅させ,USB経由で“Hello World!”と出力するプログラム

リスト3の内容を簡単に説明します.このプログラムは,ラズパイPicoのUSBポート経由(シリアル通信)で0.5秒に1回“Hello World!”という文字列を出力します.また,0.5秒の周期でボード上の緑色LEDを点滅させます.

最初の3行は必要なライブラリ類の読み込みです.< stdio.h > は“printf()”関数を使うために読み込んでいます.また,“pico/stdlib.h”はUSBポートを使うために必要です.“hardware/gpio.h”はGPIO(緑色LEDにつながっている)を制御するために読み込んでいます.

7行目の“stdio_init_all()”関数でUSBポートの初期化を行っています.

10行目の“gpio_init()”関数および“gpio_set_dir()”関数でGPIOの初期化を行っています.ボード上の緑色LEDはGPIOの25番ピンに接続されているので,このピンを有効にして出力モードに設定しています.

17行目では“printf()”関数で文字列を出力しています.後で説明する“CMakeLists.txt”の中でUSBポートを標準出力として設定しているので,“printf()”の内容はUSBポートから出力されます.

20行目から23行目では緑色LEDを点滅させる処理を記述しています.

“CMakeLists.txt”を用意する

“CMakeLists.txt”(“List”ではなく複数形の“Lists”であることに注意)は,ビルドに必要なファイル管理を自動化するツールである“CMake”のための設定ファイルです.このファイルには,リスト4の内容を記述します.

#Set the mimum required version of CMake
cmake_minimum_required(VERSION 3.12)

#Pull in SDK (must be before project)
include(pico_sdk_import.cmake)

#Set the project name, the programming language
project(project1 C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

#Initialize the SDK
pico_sdk_init()

#Add an executable target to be build from the source files
add_executable(test test.c)

#Pull in our pico_stdlib which aggregates commonly used features
target_link_libraries(test pico_stdlib)

#Enable USB output, disable UART output
pico_enable_stdio_usb(test 1)
pico_enable_stdio_uart(test 0)

#Create map/bin/hex/uf2 file etc.
pico_add_extra_outputs(test)

リスト4 “test.c”と一緒に保存する“CMakeLists.txt”の内容

リスト4の内容を簡単に説明します.この“CMakeLists.txt”は,“C:/Pico/pico-examples/CMakeLists.txt”および“C:/Pico/pico-examples/hello_world/usb/CMakeLists.txt”から必要な部分を抜き出して作っています.

2行目の“cmake_minimum_required()”コマンドでは,最低限必要な“CMake”のバージョンを指定しています.この部分は公式のサンプル・コードからそのままコピーしています.

5行目の“include()”コマンドでは,公式から提供されている“pico_sdk_import.cmake”を読み込んでいます.主にパスの設定を行っているようです.

8行目の“project()”コマンドではプロジェクト名と使用する言語を設定しています.今回は“project1”という名前のプロジェクトとしていますが,お好みで変更してください.

9行目および10行目では,使用する言語(CとC++)のバージョンを指定しています.この部分は基本的に変更する必要はありません.

13行目の“pico_sdk_init()”コマンドでラズパイPico用の環境を読み込んでいます.

16行目の“add_executable()”コマンドでは最終的に出力する実行ファイルの名前と,実行ファイルを作るために必要なソース・コードを列挙しています.今回は“test”という名前の実行ファイルを作成するものとし,そのために必要な“test.c”を読み込むように指定しています.ソース・コードの名前が変わった場合はこの部分を変更する必要があります.

19行目ではビルドに必要な“pico_stdlib”というライブラリを読み込んでいます.ソース・コードの名前を変更した場合は,この部分の“test”という名前を変更する必要があります.

22行目および23行目では,標準出力として使うマイコン内部の周辺回路を指定しています.今回は“USB”を有効にして“UART”を無効にしているので,C言語のソース・コード中で“printf()”などの関数を使った場合にUSBポートが入出力として機能します.もし“UART”を標準出力として使いたい場合は,22行目および23行目を削除します.デフォルトではGPIO0ピン(1番ピン)がUART TXとして標準出力に,GPIO1ピン(2番ピン)がUART RXとして標準入力になります.なお,ソース・コードの名前を変更した場合は,この部分の“test”という名前を変更する必要があります.

25行目ではラズパイPicoに書き込む.uf2ファイルの作成に関する指示を出しています.ソース・コードの名前を変更した場合は,この部分の“test”という名前を変更する必要があります.

“Visual Studio Code”で開いてビルドする

“Developer Command Prompt”上で“code”というコマンドを入力して,“Visual Studio Code”を起動します.メニュー・バーから [File] - [Open Folder...] をクリックして,今回用意した“test”ディレクトリを開きます.

例によってコンパイラとして“GCC arm-none-eabi”を選択したら,[Build] ボタンをクリックしてビルドを実行します.

実行時の様子

問題なくビルドが完了すると,“test”ディレクトリの中に“build”というディレクトリが作られます.この中に“test.uf2”というファイルがあるので,これをラズパイPicoに書き込みます.

.uf2ファイルを書き込むと,ラズパイPicoは自動的に再起動します.緑色LEDが0.5秒の周期で点滅すれば成功です.また,“TeraTerm”(テラターム)などのターミナル・ソフトを使ってラズパイPicoから送信される文字列を受信すると図83のように表示されます.シリアル・ポートの設定は「スピード:115200」,「データ:8bit」,「パリティ:none」,「ストップビット:1bit」,「フロー制御:none」としてください.

図83 ラズパイPicoから出力される文字列を“TeraTerm”で表示した様子

なお,“TeraTerm”のインストーラはOSDNのWebサイトから入手できます.インストーラ“teraterm-4.102.exe”をダウンロードすれば簡単にインストールできます.

“Visual Studio Code”の画面をリロードする方法

“Visual Studio Code”でフォルダを開いた後にソース・ファイルやディレクトリの名前を変更した場合は,“Visual Studio Code”上の表示も自動的に更新されます.ただし,“build”ディレクトリを自分で削除した場合などは手動で読み込みなおす必要があります.画面のリロードは以下の手順で実行できます.

  1. Ctrl + p キーを押す
  2. 入力欄に“$>$Reload Window”と入力して Enter キーを押す

自分で開発用のディレクトリを作る(サブディレクトリあり)

ディレクトリ構成

実際の製品開発では,複数のプログラムを1つのプロジェクトに紐づけて管理することが多いかと思います.このような場合は,プロジェクト全体をまとめるディレクトリの下に複数のサブディレクトリを配置すると便利です.

ここでは図84のように,“C:/Pico/test2”というディレクトリの下に“test2_sub”というサブディレクトリがある状況を想定してビルドを実行する方法を説明します.

図84 サブディレクトリがある場合の構成

このようなディレクトリ構成の場合は,トップ階層である“test2”ディレクトリ内の“CMakeLists.txt”に全体に共通する設定項目を記述し,各サブディレクトリ内の“CMakeLists.txt”にはそれぞれのソースをビルドするための設定を記述します.いずれにしても,すべてのディレクトリの中に“CMakeLists.txt”をおくことになります.

なお,“pico_sdk_import.cmake”および“test.c”は先ほどと同じものを使います.

“test2”ディレクトリ内の“CMakeLists.txt”

“test2”ディレクトリに保存する“CMakeLists.txt”の内容をリスト5に示します.13行目まではリスト4と同じです.それ以降の各ソース・コードに依存する部分は削除し,その代わりに16行目にサブディレクトリを追加する“add_subdirectory()”コマンドを記述しています.

もしビルド対象のサブディレクトリの名前を変更する場合は,“add_subdirectory()”コマンドで指定するディレクトリ名を変更してください.また,ビルド対象のサブディレクトリを追加する場合は“add_subdirectory()”コマンドを追加して対応します.

#Set the mimum required version of CMake
cmake_minimum_required(VERSION 3.12)

#Pull in SDK (must be before project)
include(pico_sdk_import.cmake)

#Set the project name, the programming language
project(project1 C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

#Initialize the SDK
pico_sdk_init()

#Add subdirectory to the build
add_subdirectory(test2_sub)

リスト5 “test2”ディレクトリに保存する“CMakeLists.txt”

“test2_sub”ディレクトリ内の“CMakeLists.txt”

サブディレクトリである“test2_sub”に保存する“CMakeLists.txt”の内容をリスト6に示します.ここではビルド対象である“test.c”を読み込むための指示やビルド時の設定を記述しています.この内容はリスト4の後半部分とまったく同じです.

#Add an executable target to be build from the source files
add_executable(test test.c)

#Pull in our pico_stdlib which aggregates commonly used features
target_link_libraries(test pico_stdlib)

#Enable USB output, disable UART output
pico_enable_stdio_usb(test 1)
pico_enable_stdio_uart(test 0)

#Create map/bin/hex/uf2 file etc.
pico_add_extra_outputs(test)

リスト6 “test2_sub”ディレクトリに保存する“CMakeLists.txt”

ビルドする

例によって“Visual Studio Code”で“test2”ディレクトリを開き,使用するコンパイラとして“GCC”を選択します.この状態でビルドを実行すると,“test2”ディレクトリの中に“build”というディレクトリが新しく作られます.

ラズパイPicoに書き込む.uf2ファイルは“test2/build/test2_sub/test.uf2”です.このように,ビルドの結果として作られる実行ファイルが元のソース・ファイルと独立した“build”ディレクトリに保存されるのが“CMake”というツールの特徴です.


(c)2021 Nobuyasu Beppu