Silicon Labs社 BGM220SはBLEモジュールは、Client or Serverの何れのRollも演ずることができ、小型な点でも使い勝手は良さそうです。
project作成も、GUIライクな設定画面で進めていけるのは明瞭な点でもあります。
私の様なアナログな設計者は、全て自動生成される昨今のIDEより、
自分で1から10まで掌握しながら環境構築する方が馴染み深いのですが、今の時代には合っているのだと思います。
プロジェクト一つ生成するにも、分からない点が出てくると思いますので、こちらで気づいた点を綴ってみましょう。
Sample projectを動かしてみる
事前準備として、Silicon Labsが提供している「Simplicity Studio」をインストールしておいてください。
動作確認をする上で、ハードウェアはあった方が良いので、ここでは以下を前提に進めます(ハード面はこれに限らず都合に合わせてください)
・WSTKボード×1セット
・BGM220Sラジオボード×1台
・iphone or Android端末×1台(EFR_Connectアプリをインストールしておく)
最初に、Simplicity Studioを起動し、新規project作成を行います。
この時、Silicon Labs project Wizardを使う方が分かりやすいです。
用意したハードを選択して、SDKは「Gecko SDK Suite: Bluetooth 3.1.2, Bluetooth Mesh 2.0.2, MCU 6.0.2.0, Micrium OS Kernel, Platform」とします。
SDKについては、各種バージョンが更新されていくと思われ、ここでは2021/5月時点のものです。
左側のTechology Type「Bluetooth(10)」にチェックを入れると、右側にサンプルプロジェクトが出てきます。とりあえず、動作確認程度で見てみたいので「Bluetooth - SOC Thermometer」を選択してproject作成します。
選択したprojectの動作としては、環境温度測定をした結果がBLE通信で送られるものです。
次に、Simplicity Studioにprojectが追加されたら「Build」します。
後は、事前用意したハードにビルド後のバイナリをダウンロードして、スマホなどの端末からBLE接続して、温度データが確認できる段取りになります。
メーカーで用意されたSample projectの動作確認は、簡単に実施することが可能なので、悩んでいるぐらいなら動かした方が早いです。
さて、本題はここからです。
user custom projectを用意して独自処理を設計する
Sample projectが動作するまでは、ハードを用意して、必要な設定をするだけで使えるイメージです。
しかし、開発や設計を予定されている方は、独自のプログラムを反映したいと考えており、ユーザー独自のプロジェクトは、どの様に生成すれば良いのか気になります。
ユーザー独自のprojectの生成方法ですが、Sample projectを生成した要領で、新規projectをつくります。project名はご自身の開発に関わる名前など、任意の名前にしてください。
右側に表示された一覧から、「Bluetooth - SOC Empty」を選択してproject生成します。
Client or Serverの何れで開発したいのか、それぞれあると思いますのが手順は同じです。
※Network絡みやBeaconなどは、選択projectが変わりますので注意ください。
後は、生成されたProjectに対して、導入したい制御処理をプログラムするだけになります。
そして、「ビルド」->「ダウンロード」にて、実機でのオンチップデバッグが可能となります。
BGM220S 動作しない!となる前に知っておきたいこと
上記内容の通り進めたけれど「動作しない!」と言ったシチュエーションが出てきます。
Sample projectで動作確認をした後、user projectを生成した方は、問題なく開発が進行できると思われます。
Sample projectは割愛して、user project生成から進めた方はm動作しないケースに陥る可能性があります。
例えば、ビルド後のダウンロードも正常に完了し、さてさてオンチップデバッグというところで、
bootしていない・・・という状況に直面することがあります。
より具体的には、ソースコードの該当行が表示されず、disassemble表示が進んでいくが、userアプリ処理にはたどり着かないという現象です。
これは、BLEのbootloaderがダウンロードされていないことから生じている症状です。
つまり、BLEのbootloaderは、Bluetooth - SOC Emptyで生成したprojectには含まれておらず、
別途、用意する必要があります。
メーカーが用意してくれているSample projectには、BLEのbootloaderが含まれており、別枠で用意する必要はありません。
そして、一度BLEのbootloaderをダウンロードすると、Flash領域を全て消去しない限り、対象CPU内に残ります。つまり、ラジオボードを新しくすると、今まで動作していたprojectが動作しない・・・何てこともあり得ます。
そんな状況にならない為にも、上記説明の要領でbootloader用に新たなprojectを生成します。
左側は「Bootloader(6)」を選択して頂き、右側の「Internal Storage Bootloader・・・」を選択して生成します。
生成されたprojectにて、以下の青丸箇所にある「Generate」をクリックします。
これにより、Binariesが生成されますので、後はBinariesをターゲットボードへダウンロードするだけです。
これにより、Bluetooth - SOC Emptyをベースにしてuser projectをデバッグしようとした際、正常boot後にuser処理に遷移していくようになります。