GigaDeviceとは
ST MicroのSTM32を使ったことのある方は多いのではないでしょうか.しかしながら,昨今の半導体不足は深刻でSTM32を入手する事は絶望的と言っても良いような状況となっています.そこで選択肢となるMCUとしてGigaDeviceが挙がることがあります.
GigaDevice製のデバイス型番は"GD32F103"など,ST Microの型番を強烈に意識して採番されています.型番のとおり,GD32F103であればSTM32F103と基本的にはピン互換となるように設計されています.
(メモリマップやペリフェラルの扱いは異なるのでバイナリ互換ではありません.あくまでピン互換,フットプリント互換になります.STM32とバイナリ互換なMCUも世の中には存在します…がどこまで信用できるのかが不明です)
STM32を扱うつもりでGD32の開発を始めるとなかなか癖の強いペリフェラルやライブラリに苦戦しますが,背に腹は代えられないですね.
開発環境は?
GigaDeviceを含む中国や台湾系のArm MCUの開発環境は,MDK-ARM(Keil uVision)を想定したライブラリやテンプレートプロジェクトが提供されていることが多いです.GigaDeviceは一部MCUについてはGCC用のライブラリも公開していますが,断片的であったりします.
MDK-ARMのライセンスを持っていれば良いですが,それなりの価格であるため,小規模事業者や趣味的に扱おうと思うと二の足を踏んでしまうのではないでしょうか.(試用版ライセンスでも非営利かつ32kBまでのバイナリであればビルド可能です)
VSCodeを使いたい
無償でありながらコード補完が強力なので,どうしてもな理由が無ければエディタはVSCode,コンパイラはGCCを使いたいです.
都合の良いことに拡張機能のPlatform IOを使うことで簡単に開発環境を用意することができるようになりました.チップによってはArduinoライブラリのポーティングが済んでいるものもありますが,枯れていないので基本的には Standard Peripheral Library (SPL) での開発をおすすめします.
導入
VSCodeの拡張機能からPlatformIOを検索してインストールします.この画面上でインストールが完了した後も準備が完了し,実際に使えるようになるまでには場合によって更に数分必要です.
ここでターミナルを眺めているとFailed to install PlatformIO IDE.と表示されることがあります.その場合はこのあたりを参考にすると良いでしょう.https://github.com/platformio/platformio-core-installer/issues/221
PlatformIOにCommunityGD32Coresをインストールする
PlatformIOのCLIコンソールを開き,pio platform install https://github.com/CommunityGD32Cores/platform-gd32.git と入力します.
これによってPlatformIOにGD32用のArduinoライブラリとSPLが導入され,GCCでビルド可能になります.
プロジェクトを作る
PlatformIO のHomeから新しいプロジェクトを作ります.
任意のチップ/ボードを選んでライブラリを選択します.ここで使用するライブラリをArduinoかSPL(Standard Peripheral Library)から選ぶことができます.
インストールされたライブラリは,C:\Users<user-name>.platformio\packages\framework-spl-gd32 以下に展開されます.ここから必要なヘッダファイルをincludeするなりしてコードを書いていきます.例としてLチカをするとこんな感じですね.GigaDevice提供のサンプルに則り,割り込みルーチンはgd32e23x_it.cの方へ纏めてあります.
デバッガを使う
コードが書けたらデバッガで書き込み・デバッグをします.ワークスペースに生成されているplatformio.iniを編集します.
debug_tool というプロパティを追加し,値として open-ocd や jlink を指定することでデバッグできるようになります.