interface2024年1月号を見ながら、開発環境を整えています。
開発の状況を備忘録的に残します。
開発のイメージ
- c言語で開発
- pico-sdkのBTstackを使用
- Bluetooth経由で文字列を送受信したい。(SPP使用?)
- 最終的にcore0に実装し、trykernelと組み合わせたい
ラズピコWのハードについて(メモ)
- 無線チップCYW43439(bluetoohtとwi-fi)が搭載されている
- CY43439との通信はgSPI(PIOを使ったSPI)
- Picoの内蔵LED(GP25)にCY43439の「CS」が割当たっている。代わりにLEDは(WL_GPIO0)を使う。(※無印picoからはまったところ。LED割り当て変える)
BTstackについて
- オープンソースのBluetoothスタック(非商用の場合無料)
- BlueKitchen社が開発した
- シングルスレッドの処理を基本としている(FreeRTOSでマルチの例もあるが...)
- プロトコルとプロファイラをセットで実装する
- コンパイル時にプロファイラに応じた「btstack_config.h」が生成される
- pico-sdkでは、実装の方式を3パターン(poll,background,freertos)から選択する
interface2024年1月号 第2章-2
今と当時は環境が変わっているのか、2025年5月現在、そのままではビルドエラーが出ます。解決できたポイントなどを書いていきます。
- 前提として、以下にある「interface2024年1月号のダウンロードデータ」を使います。
- 今回は解凍したフォルダの「2-2_pico-examples_btstack」のreadme.txtを参考に進めていきます。
※1月号 Bluetooth&Wi-Fi Pico W をダウンロード。
https://www.cqpub.co.jp/interface/download/contents2024.htm
- MSYS2-Mingw64をインストールする(下記参考サイト)
https://gist.github.com/Hamayama/eb4b4824ada3ac71beee0c9bb5fa546d
- インストール後のコマンドは、以下の2種を実行する。
pacman -Syu
- pacman・・・Arch Linux のパッケージ管理システムのコマンド。パックマンじゃない。
- SyuオプションはS:sync(パッケージの同期) y:refresh(データベース更新) u:sysupgrade(リポジトリを最新に更新)の意味で、シュウ(syu)さんではない。
- 途中で2度ほど聞かれるが[y]を選択
pacman -S base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-arm-none-eabi-toolchain autoconf automake gcc libtool zlib git mingw-w64-x86_64-cmake mingw-w64-x86_64-doxygen mingw-w64-x86_64-ninja cmake
- ビルドに必要なツールチェーンをインストールするのにcmakeとpythonも必要。
- 私の環境ではPython 3.12.10、cmake version 4.0.1 でした。
pico/cyw43_arch.hがない
- 2つ書籍に書いていない手順が必要だった。
- 1つめ、「git submodule update -–init」をしても特に追加のアップデートは発生しなかったのだが、ビルドすると下記エラーが発生した。
- 「git submodule status」 を行った後に「git submodule update -–init」を行うとbtstack関連のインストールが行われ、その後はエラーなくbuildできるようになった
uint8_t 型が見つからない
ログより「pioasm」 ツールをビルド中に uint8_t 型が見つからないというコンパイルエラーが発生している。
エラーメッセージの注釈にもあるように、これは cstdint ヘッダーをインクルードすることで解決する可能性が高いとのことで、修正する。
pico/pico-sdk/tools/pioasm 以下の「pio_types.h」「output_format.h」 を開き、#include "pio_enums.h" の次の行にcstdint ヘッダーの追加を行う。
pio_types.h、output_format.hの最初のほう
#include "location.h"
#include "pio_enums.h"
#include <cstdint> // この行を追加
- 変更後はpico-examples直下のbuildフォルダを削除してから、再度buildを実行。
- 問題なくbuildできるようになったが、下記問題点が発生した。
pico-example全てビルドするのは、時間がかかる
- buildの注意点だが、全てコンパイルするのはかなり時間がかかる。(途中であきらめた)
- pico-examplesの下のCMakeLists.txtを編集して絞ったほうが良い。
- 今回は無線関連(pico_w)以外のコンパイルを切った。それでも私の環境で2時間くらいかかった。
CMakeLists.txt
最後のほう
・
・
・
# Hardware-specific examples in subdirectories:
#add_subdirectory(picoboard)
add_subdirectory(pico_w) #これ以外コメントアウト
#add_subdirectory(pio)
#add_subdirectory(pwm)
・
・
・
2-2は以上です。