0
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?

interface2024年1月号を参考にRaspberryPi Pico W でbluetoothを使う 第2章-2

Last updated at Posted at 2025-04-29

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


  • インストール後のコマンドは、以下の2種を実行する。
pacman -Syu
  • pacman・・・Arch Linux のパッケージ管理システムのコマンド。パックマンじゃない。
  • SyuオプションはS:sync(パッケージの同期) y:refresh(データベース更新) u:sysupgrade(リポジトリを最新に更新)の意味で、シュウ(syu)さんではない。

image.png

  • 途中で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
  • 途中で下記のように聞かれるが、enterを押す。

    image.png
  • 途中で何か聞かれたら[y]を選択
  • インストールには5分ほどかかる

  • ビルドに必要なツールチェーンをインストールするのにcmakeとpythonも必要。
  • 私の環境ではPython 3.12.10、cmake version 4.0.1 でした。

pico/cyw43_arch.hがない

  • 2つ書籍に書いていない手順が必要だった。
  • 1つめ、「git submodule update -–init」をしても特に追加のアップデートは発生しなかったのだが、ビルドすると下記エラーが発生した。

image.png

  • 「git submodule status」 を行った後に「git submodule update -–init」を行うとbtstack関連のインストールが行われ、その後はエラーなくbuildできるようになった

image.png

uint8_t 型が見つからない

  • 2つめ、1を修正後に再度buildすると下記エラーでとまった。
    image.png

ログより「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は以上です。

0
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
0
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?