背景

CANとかLINとか自動車向けの組込みシステムでSTM8Aシリーズの活用が求められています。STM8A Discovery kit のSTM8AL EVALUATION BOARDを動かして今後の開発事案に対応していきたいと思います。

開発環境の選択

出来ればビジュアル的なIDEで開発したいものです。説明書には..

  • Cosmic : FREE IDEA
  • IAR : EWSTM8
  • STMicroelectoronics : FREE STVD

とあります。Arduinoに対応するてめのSduinoプロジェクトもあるようで、そちらも試みたのですが、ここでは最初にそこそこ構築出来た環境について記載しておきたいと思います。

上記すべての環境をインストールしてみましたが、最初に動作検証できた環境が、STVD+Cosmicの環境です。コンパイラはCosmicかIARが主流らしく、STVDでもどちらかのコンパイラが必要になります。検証した感触ではCosmicの方をとりあえずお薦めします。

STVD+Cosmic環境 のインストールについては、[ST Visual DevelopのためのCosmic STM8 free tools with no limits インストール]の記事を参照して下さい。

サンプルプログラムの入手

こちらのキットはオープンソースという事もあり、ボードに書き込まれているサンプルプログラムを入手します。以下のページにあります。なかなか有りかがわかりませんで、githubとかさまよってしまいました。

https://www.st.com/content/st_com/ja/products/embedded-software/mcus-embedded-software/stm8-embedded-software/stsw-stm8073.html

ページの一番下のソフトウェア入手ボタンから取得できます。その際STマイクロのログインが必要になります。登録しておきましょう。

en.stm8a-discovery_lin_fw.zip というファイルがダウンロードできます。任意のフォルダに解凍して、STVDから、..\Projects\STVD\cosmic\stm8a_discover_workspace.stw というワークスペースファイルを開きます。

ここでわかるのは、STM8AFでは「STM8S_StdPeriph_Driver」を使用し、STM8ALでは「STM8L15x_StdPeriph_Driver」を使用しています。これらのオープンソースライブラリーはgithubからも入手できるようです。

ワークスペースファイルとプロジェクトファイルの書込専用解除

ダウンロードしたファイルは書込専用になっています。以下のワークスペースファイルとプロジェクトファイルを、ファイルのプロパティから書込専用を解除しておくことをお薦めします。ここでは各Cosmic名のフォルダ下にあるファイルが対象です。

  • stm8a_discover_workspace.stw (ワークスペースファイル)
  • stm8af_discover.stp (プロジェクトファイル)
  • stm8al_discover.stp (プロジェクトファイル)

STM8AL_Discover のコンパイルを通す

プロジェクトの設定

プロジェクトの設定画面で、ツールセットの設定をします。ToolsetはSTM8 Cosmicを選び、Root pathにFSEコンパイラーのCXSTM8フォルダを設定しておきます。容量制限付きのコンパイラーのパスを設定すると、容量制限に引っかかってしまいます。FSEコンパイラーのパスを設定して下さい。

MCUを選択します。理由は定かではありませんが、STM8AL_DiscoverプロジェクトのMCUには「STM8L152C6」がデフォルトで選択設定されています。実際に搭載されている「STM8AL3L68」を選択します。

リンカーの設定をします。Cosmicのライブラリ内部で、.LRRUNと.dataeepromというセグメント名が宣言されているらしく、セグメント名の設定が無いとリンク時にエラーが発生します。ここでは適当にそれらしい場所にセグメント名を配置してみました。LinkerタグのCategory-InputのSegment/Section Nameリストに名称を追加します。行を選択して右クリックメニューを開くとAddできます。以下の画面を参考にして、セグメント名を追加してください。この作業をしないとリンクが完了しません。

リビルド実行

Rebuild All を実行して、ビルド通知ウィンドウにstm8al_discover.elf – 0 error(s), 0 warning(s) が表示されました。一応、ビルドは成功しました。

デバッガの実行

上記のサンプルプログラムをデバッガで動かして、ブレイクポイントを貼りながらデバッグが可能か検証します。

デバッガのターゲット設定

Debug Instrument Setting 画面でデバッグセッションを「Swim ST-Link」に設定します。

USBの接続

今回は、STM8ALボード単体をPCに接続しました。

デバッグの開始

DebugメニューのStart Debugging を選択します。

Target selected Swim ST-Link と表示されるのでOKします。

デバッグセッションが開始されると、以下の様な画面になります。接続先のボードのアプリケーションを一旦停止して、デバックセッションが開始されます。この時はまだデバッグ対象のプログラムは動作していません。

Debug>Run でデバッグ対象のプログラムを実行させます。その際Main関数の中で適当な場所にブレイクポイントを貼っておきます。

任意のブレイクポイントで停止しました。ステップ実行も出来ました。一般的なICEデバッグが可能になりました。

この後、プログラムの書込みをする事になると思いますが、開発環境の検証としてはここまでとします。

編集後記

ST-Link は仮想COMには成らないようで、PC接続が認識されているのかわかりづらいです。
ST-Linkのデバイスドライバのアップグレードの確認はST-LINKユーティリティを使って実行してみました。 Device Connect でST-Linkのファームウェアバージョンが確認できます。ここで確認出来れば、Connectはまず間違いなく出来ていると判断しました。

これでなんとかCANやLINのシステム開発の対応をSTM8Aシリーズで対応出来そうです。