PRK FirmwareをMacでビルドしてみた

Rubyでキーマップを書ける自作キーボード用のファームウェア【PRK Firmware】が、Mac環境でもビルド可能になったというので試行した際の覚え書きです。

私は開発者ではないのでビルドできたからといって特にどうということはないのですが、試しにやってみたかったのよ…

PRK Firmwareの作者である@hasumikinさん、contributorの@w_vwbwさん、個人的にアドバイスをくださった@alg0002 さんに感謝いたします。

試した環境など

  • Mac mini (2018) / Intel / Catalina
  • MacBook Pro (2021) / M1 / Big sur
  • Xcode、homebrewはインストール済み
  • ブログ主はrubyなんもわかってない

rubyのインストール

MacOSには最初からrubyがインストールされていますが、システム標準のrubyはバージョンが古くて動かないコマンドがあるので、最新版に入れ直す必要があります。

以後の作業を始める前に、Homebrewがお使いのMacにインストールされていることを確認しておいてください。

rbenvのインストール

rubyのインストールにはrbenvというツールが便利なので、最初にそちらを入れてやります。

brew install rbenv ruby-build
rbenvの設定

使っているシェルがzshの場合(Catalina以降)

echo 'eval "$(rbenv init -)"' >>  ~/.zshrc
source ~/.zshrc

使っているシェルがbashの場合(Mojave以前)

echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

自分ちで使っているシェルがどちらかわからない場合は、

echo $SHELL

と入力すると
/bin/zshまたは/bin/bashと表示されるのでそれで見分ける。

なんでzshのときは.zshrcに追記して、bashのときはbash_profileに追記するのか若干モヤりますが、参考にしたサイト(後述)がそうなってたのでそのまんまにしてあります。動けばよかろうなのだ。


インストールしたいrubyのバージョンを選択

現在インストールできるバージョンを調べる

rbenv install --list

こんな感じでインストール可能なバージョンがずらずらっと表示されるので、ここでは脳死で最新の3.1.2(2022年5月28日時点)をインストールします。

rbenv install 3.1.2

rubyのインストールにはけっこう時間がかかります。気長に待ちましょう。


インストール終了後、自分のMacに入っているrubyのバージョンを調べる

rbenv versions

rbenvインストール直後であれば、現在使用中のバージョンを示す*がsystemについているはずです。 これを、先ほどインストールした3.1.2に変更します。

rbenv global 3.1.2

切り替わったかどうかを確認

ruby -v

切り替わっていた場合は、お疲れさまでした。次のステップへ。


rubyのバージョンが切り替わらなかった場合

切り替わっていなかった場合は、おそらく参照先の設定が上手くいってないものと思われます。

お使いのシェルに合わせて、

export PATH="~/.rbenv/shims:/usr/local/bin:$PATH"
eval "$(rbenv init -)"

を、.zshrcや.bash_profileに追記してあげてください。

たとえばzshの場合

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(rbenv init -)"' >> ~/.zshrc
$ source ~/.zshrc

でOK。もう一度rubyのバージョンを調べるところからやり直します。

【参考】
MacでRubyをインストールする方法をわかりやすく解説【初心者必見】
Rubyのバージョンが切り替わらない時の対処法!


必要なコマンドのインストール

cmakeのインストール
$ brew install cmake
arm-none-eabi-gccのインストール
$ brew tap ArmMbed/homebrew-formulae
$ brew install arm-none-eabi-gcc


Pico SDKの入手

適当なフォルダを作成

$ cd ~/
$ mkdir pico
$ cd pico

pico-sdkとpico-examplesをclone

$ 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

フォルダpicoの中に、pico-sdkとpico-examplesのフォルダが出来ました。

pico-sdkへのPATHを設定する

下記を、.zshrcまたは.bash_profileに追記しておく

export PICO_SDK_PATH=/Users/ユーザー名/pico/pico-sdk/

CMake Toolsの拡張機能をVS Codeにインストール

このステップが必要かどうかよくわからなかったのですが(たぶん要らない)、たいした手間でもないので、Getting started with Raspberry Pi PicoのChapter 9.1.に書かれている通りに進めていきます。

Visual Studio CodeのMac版をダウンロードする

https://code.visualstudio.com/download

CMake Tools 拡張機能をインストールする
  1. VS Codeを起動して、左にあるツールバーから[拡張機能]を選択。
  2. 検索窓に CMake Tools と入力。
  3. インストールボタンをポチッとする。
settings.jsonの作成
  1. pico-examplesのフォルダをVS Codeで開き、.vscodeフォルダを作成する。
  2. その中に、settings.jsonを作成する。
{
    "cmake.environment": {
        "PICO_SDK_PATH":"/Users/ユーザー名/pico/pico-sdk"
    },
    "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools"
}

【参考】
Raspberry Pi PicoのC/C++開発環境をVS Code on Macで作る


PRK Firmwareをビルドする

適当なフォルダを作成

$ cd ~/
$ mkdir prk
$ cd prk

PRK FirmwareをClone

git clone --recursive https://github.com/picoruby/prk_firmware.git

PRK Firmwareをセットアップする

初回

cd prk_firmware/
rake setup

PRK Firmwareがアップデートされた場合

git pull origin master
rake deep_clean
rake setup

PRK Firmwareのバイナリをビルドする

rake

できました! やったー!


キーマップつきのバイナリをビルドする

サンプルのmeishi2のキーマップをclone
cd keyboards
git clone https://github.com/picoruby/prk_meishi2.git
バイナリをビルドする
cd .. # back to prk_firmware/
rake build_with_keymap[prk_meishi2]

こちらも完成!

【参考】
github.com