Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

Raspberry Pi Picoの自前プログラムをコンパイル

Raspberry Pi Picoの開発環境で自前プログラムをビルドする

RaspberryPi Picoをデバッガ(PicoProbe)で開発 - Kamuycikap - SentenceDataBase
前回のこの記事で、Linux上にRaspberry Pi Pico用の開発環境を構築する記事を書きましたが、様々あるサンプルプログラムをまるっとコンパイルする環境になっています。

自前のプログラムをコンパイルするにはどうしたらいいの??と考えて試行錯誤しましたが・・・
本家ドキュメント
には、そこまでの情報が掲載されておらず。(自分が英語苦手なだけか???)

試行錯誤してみた結果、現行サンプルの内容を書き換えることで出来たので晒してみます。
結論だけならべる形式で!

本記事の内容は、上記URLの環境を構築したとして書きます。

■環境インストールした場所(PATH)
/home/pi/pico

■サンプルの場所(PATH)
/home/pi/pico/pico-examples

コンパイル結果が格納される場所(PATH)
/home/pi/pico/pico-examples/build

自前プログラムディレクトリとソースファイル作成

/home/pi/pico/pico-examples/の中に、好きな名前でディレクトリを作成します。
ゼロから作るのは面倒なので、サンプルとしてあるblinkをコピーして横着します。

$ cd /home/pi/pico/pico-examples
$ cp -r /home/pico/pico-examples/blink /home/pico/pico-examples/hoge

これで、blinkディレクトリがhogeディレクトリとしてコピーされました。
さらに、hogeディレクトリの中にある設定ファイルを修正します。
面倒なので、ソースファイルはblink.cをそのまま使います。

$ cd /home/pi/pico/pico-examples/hoge
$ nano ./CMakeLists.txt
add_executable(hoge
        blink.c
        )

# Pull in our pico_stdlib which pulls in commonly used features
target_link_libraries(hoge pico_stdlib)

# create map/bin/hex file etc.
pico_add_extra_outputs(hoge)

# add url via pico_set_program_url
example_auto_set_url(hoge)

自前ソースファイルにしたい場合は、blink.cの部分を自前ソースファイルに変更すればOK。

本家サンプルのCMakeの設定ファイルを修正

コンパイル設定ファイルを下記のとおりに書き換えます。

$ cd /home/pi/pico/pico-examples
$ nano ./CMakeLists.txt
cmake_minimum_required(VERSION 3.12)

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

project(pico_examples C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

set(PICO_EXAMPLES_PATH ${PROJECT_SOURCE_DIR})

# Initialize the SDK
pico_sdk_init()

include(example_auto_set_url.cmake)

add_compile_options(-Wall
        -Wno-format          # int != int32_t as far as the compiler is concerned because gcc has int32_t as long int
        -Wno-unused-function # we have some for the docs that aren't called
        -Wno-maybe-uninitialized
        )

# Add My Programm Dir
add_subdirectory(hoge)

コンパイル

設定ファイルの準備ができたので早速コンパイル

$ cd /home/pi/pico/pico-examples/build
$ cmake ..
$ make -j4

無事にバイナリファイルができている。

$ ls /home/pi/pico/pico-examples/build/hoge/
CMakeFiles  cmake_install.cmake  hoge.bin  hoge.elf      hoge.hex
Makefile    elf2uf2     hoge.dis  hoge.elf.map  hoge.uf2