はじめに
前回、Windows10でRaspberry Pi Picoの開発環境を構築しました。
今回は、自作のプロジェクトのプログラムをRaspberry Pi Picoに書き込むところを書いていきたいと思います。前回の記載はこちらです。
ここでの内容は、データシートGetting started with Raspberry Pi Picoの8章(Creating your own Project)の部分にあたります。
https://datasheets.raspberrypi.com/pico/getting-started-with-pico.pdf
プロジェクトのディレクトリ作成
まず、作成するプロジェクトのディレクトリをつくっていきます。
前回の環境構築の部分で、すでに実行ディレクトリができていると思います。
ここでは、次のようなディレクトリ構成になっています。
C:¥prog¥pico¥DL
┗¥pico-examples
┗¥pico-sdk
このpico-sdkディレクトリと同じ位置に作成したいプロジェクトのディレクトリをつくります。
ここでは、mypjという名前のディレクトリとします。
SourceファイルとMakeファイルの作成
次にソースファイルとビルドファイルを準備します。
作成したプロジェクトディレクトリに移動します。(ここでは、mypjディレクトリ)
mypjディレクトリの中に実行するソースファイルを作成します。
テスト的にということで、test.cとします。
test.cの中身は、次のようにしています。
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/gpio.h"
#include "pico/binary_info.h"
const uint LED_PIN = 25;
int main() {
bi_decl(bi_program_description("This is a test binary."));
bi_decl(bi_1pin_with_name(LED_PIN, "On-board LED"));
stdio_init_all();
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
while (1) {
gpio_put(LED_PIN, 0);
sleep_ms(250);
gpio_put(LED_PIN, 1);
puts("Hello World\n");
sleep_ms(1000);
}
}
ターゲットボード (Raspberry Pi Pico)に搭載されているLEDを点滅させて、「Hello World」を出力するプログラムとなっています。このプログラムをターゲットボードに書き込みます。
続いて、mypjディレクトリの中にCMakeLists.txtを作成します。
CMakeLists.txtには次のように記述しておきます。
cmake_minimum_required(VERSION 3.13)
include(pico_sdk_import.cmake)
project(test_project C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()
add_executable(test
test.c
)
pico_enable_stdio_usb(test 1)
pico_enable_stdio_uart(test 1)
pico_add_extra_outputs(test)
target_link_libraries(test pico_stdlib)
さらに、pico-sdk¥externalディレクトリの中にあるpico_sdk_import.cmakeというファイルをコピーして保存します。
この時点で、作成したプロジェクトディレクトリmypjは、次のようになっています。
ビルド
ここで、ビルドディレクトリを作成します。
プロジェクトディレクトリmypjにbuildディレクトリを作成します。
パス設定をしていなければ、次のコマンドを実行します。
C:\prog\pico\DL\mypj\build>setx PICO_SDK_PATH "..\..\pico-sdk"
実行ファイルを生成するため、cmakeを実行します。
C:\prog\pico\DL\mypj\build>cmake -G "NMake Makefiles" ..
C:\prog\pico\DL\mypj\build>nmake
nmakeを実行するとビルドが開始されます。
正常に終了するとBuilt target testと表示されます。
実行
buildディレクトリを確認します。
test.uf2ファイルが生成されています。このファイルをターゲットボードに書き込みます。
Raspberry Pi Picoのリセットボタンを押しながらUSBをPCに接続します。
この実験環境では、DドライブとしてRPI-RP2が認識されます。
このDドライブ内にtest.uf2ファイルをドラッグアンドドロップで入れ込みます。
ドロップ後、すぐにプログラムが実行され、LEDが点滅します。
同時にTera Termでシリアル通信を確認すると「Hello World」が出力されていることが確認できます。
まとめ
ここまでWindows10環境でターゲットボードであるRaspberry Pi Picoに作成したプロジェクトの実行ファイルを転送する方法について書いてきました。
プログラムソースファイルに加えてmakeファイルを作成し、Developer Command Promptでビルドし、UF2ファイルを生成しました。生成されたUF2ファイルをターゲットボードに書き込めばプログラムが実行されることが確認できました。
pico-examplesにあるサンプルプログラムの実行ではなく、自分で作成したプログラムを実行したい場合にこのやり方は使えるのではないかと思います。
コメント