NXPのFreeMASTER

FreeMASTERは、NXP組込みMCUのアプリケーションのリアルタイム変数モニタと、モニタデータの可視化ツールです。関連投稿:STマイクロエレクトロニクスのSTM32CubeMoniterとほぼ同じ機能を提供します。

NXP資料FreeMASTER Run-Time Debugging Tool – Overview を使ってFreeMASTERの特徴を示します。

FreeMASTERとIDEデバッガ機能差

FreeMASTERと、開発者が普段使うIDEデバッガとの差が一目で解る図がP13にあります。

FreeMASTERとデバッガの違い(出典:FreeMASTER Run-Time Debugging Tool – Overview)
FreeMASTERとデバッガの違い(出典:FreeMASTER Run-Time Debugging Tool – Overview)

両者の機能境界が、ソースコードのデバッグ機能です。IDE(MCUXpresso IDE)でも変数ロギングやグラフ化機能はありますが、プログラム開発者向けの最低機能に絞ったものです(limited functionality)。

これに対し、FreeMASTERは、msec分解能のグラフ化と、μsec分解能のデータ取得が可能です。更に取得データを利用し、Field-tune parametersやRemote controlなど多くの機能を持つツールです。データの取得は、MCU実装のUARTやUSB、SWD経由です。

FreeMASTERを使うと、外付け制御パネルの代替やGUIアプリケーションとしても活用できます。例えば、下図のようなモータ制御パネルが、PC上でFreeMASTERソフトウェアのみで実現できる訳です。

FreeMASTERを使ったモータ制御パネル例(出典:FreeMASTER Run-Time Debugging Tool – Overview)
FreeMASTERを使ったモータ制御パネル例(出典:FreeMASTER Run-Time Debugging Tool – Overview)

 FreeMASTER構成

Windows PCにおけるFreeMASTER構成がP20です。詳細は、P21~25に示されています。Linux PCでの構成は、P26に示したFreeMASTER Liteが使われます。

FreeMASTER Windows PC構成(出典:FreeMASTER Run-Time Debugging Tool – Overview)
FreeMASTER Windows PC構成(出典:FreeMASTER Run-Time Debugging Tool – Overview)

MCU開発トレンド:ビジュアル化と脱Windows

組込みアプリケーションのビジュアル化は、最近のMCU開発トレンドです。

MCU本体の性能を使わずに変数データを取出し、そのデータを高性能PCとプラグイン機能を利用し、データ可視化やリモート制御を実現します。本稿で紹介したNXPのFreeMASTERやSTのSTM32CubeMoniterがこのトレンドをけん引する技術です。

また、オープンソースLinux PCへのMCU開発環境移行や各社IDEマルチプラットフォーム化、つまり脱Windowsもトレンドの1つです。

上級開発者向けというイメージが強かったLinux PCですが、一般ユーザへも普及し始めました(Wikipediaより)。筆者も昨年から、MCU開発Main-PCのWindows 10とは別に、Backup-PCにLinux Mintを新規インストールし試用中です。

半年間の試用では、OSインストール、大型/定期更新、セキュリティに関してもLinux Mintの方が、Windows 10より安定感があります。

もはや現状のWindows 10では、信頼性があったWindows 7のレベルにはならない気がします。

既存Windows 10に手を加えるよりも、新OSを開発するほうが、早道で、安心してPCを利用したい一般ユーザ要求も同時に満たせるのではないでしょうか? 商業的理由は、セキュリティ対応強化とすれば、内容不明ながら大多数の納得も得られるでしょう。※あくまで、ソフトウェア開発経験者個人の見解です。

NXP新CEO Kurt Sievers氏

2020年5月28日、蘭)NXPのCEOがリチャード・L・クレマー(Richard L. Clemmer)氏から、カート・シーヴァーズ(Kurt Sievers)氏への交代発表がありました。こちらのEE Times記事に新CEOカート・シーヴァーズ氏の経歴や、米中貿易摩擦下でのNXP中国分析などが示されています。

欧州MCUベンダNXPのアフターCOVID-19への布石、さすがに早いです。

STM32FxテンプレートV2発売

STマイクロエレクトロニクス統合開発環境STM32CubeIDEのHAL APIを利用し開発したSTM32FxテンプレートVersion2を発売します。

上記サイトよりテンプレート説明資料P1~P3が無料ダウンロードできますので、ご検討ください。本稿は、この「ダウンロード以外」の資料項目を簡単に示します。

全ツールビルトインSTM32CubeIDE

STM32CubeIDEは、従来は別ツールとして提供してきたSTM32CubeMXがビルトイン済みです。しかも開発ツール全てが自動的に最新版へ更新します。もちろんHelp>Check for Updatesで手動更新も可能です。

2020年5月15日現在のブログ関連STM32MCUに関係するSTM32CubeIDE状況が下図です。

STM32CubeIDE状況(2020年5月15日現在)
STM32CubeIDE状況(2020年5月15日現在)

STM32FxテンプレートV2は、HAL(Hardware Abstraction Layer)API利用アプリケーション開発用テンプレートですので、MCU性能過不足時、他のSTM32MCUコアへも開発アプリケーションが流用可能で、プロトタイプ開発に最適です。

STM32FxテンプレートV2ダウンロード説明資料以外の概略

以下、単語の頭に付くSTM32は省略して記述します。また、付属説明資料も同様にSTM32を省略記述していますので、ご注意ください。

AN記載CubeMXプロジェクトが読めない時の対策

アプリケーション開発の出発点となるビルトインツール:CubeMXが最新版へ自動更新されるのは、次々に発売される最新STデバイスを直ぐに開発できるメリットがあります。しかし、逆に開発者が参照するアプリケーションノート(AN)記載のCubeMXプロジェクトとの版数差が大きくなるデメリットもあります。

この版数差が大きくなると、AN記載CubeMXプロジェクトが、ビルトインCubeMXで読めない場合があります。特にF0/F1シリーズなど古くから提供されてきたデバイスのANに顕著です。STM32FxテンプレートV2付属説明資料で、この対策を示しています。

CubeIDE新規プロジェクト作成(1)/(2)/(3)の違い

STM32CubeIDEの3新規プロジェクト作成の差
STM32CubeIDEの3新規プロジェクト作成の差

CubeIDEユーザマニュアル:UM2553には、本日時点で新規プロジェクト作成説明は(1)/(3)のみです。未説明の最新版新規プロジェクト作成(1)/(2)/(3)の違いなど、開発をスムースに進める様々なTipsも説明資料に加えています。

CubeMX変更箇所、別資料化

STM32FxテンプレートVersion1では、CubeMX周辺回路の設定をテンプレート説明資料内に記載しておりました。ご購入者様からのご質問も、このCubeMX設定に関するものが多く、このツールの重要性が判ります。

そこでVersion2は、このCubeMX設定をCubeMX変更箇所.pdfとして別資料化し、CubeIDEプロジェクト内に添付しました。CubeMXプロジェクト編集時に、同時参照ができます。

STM32CubeIDEプロジェクト内添付のSTM32CubeMX変更箇所説明資料
STM32CubeIDEプロジェクト内添付のSTM32CubeMX変更箇所説明資料

例えば、ベースボードテンプレートのLCD接続に利用したSTM32F0評価ボード:Nucleo-F072RBのGPIOピン設定方針なども記載しています。CubeMXピン配置は、MCUパッケージで選択しますので、評価ボード利用のCubeMX使用ピン設定時に、下図は便利だと思います。

ベースボードと評価ボード接続時のSTM32CubeMX使用ピン設定方針
ベースボードと評価ボード接続時のSTM32CubeMX使用ピン設定方針

STM32FxテンプレートV2と添付説明資料を使うと、STM32汎用MCU開発をスムースに進められます。

STM32FxテンプレートV2のご購入、お待ちしております。

STM32CubeMX使い方刷新STM32Fx/G0xテンプレートV2発売5/15、5/30

サードパーティ仏)AC6社の統合開発環境SW4STM32で開発したSTM32FxテンプレートとSTM32G0xテンプレートを、新しいSTマイクロエレクトロニクス純正STM32CubeIDE対応のVersion2:V2へ更新し販売開始します(STM32Fxテンプレートは2020/05/15、STM32G0xテンプレートは2020/05/30)。

V2では、V1ご購入者様から頂いたご意見ご感想を反映し、新しいSTM32CubeIDEやビルトインSTM32CubeMX使い方説明に工夫を加え、開発トラブル回避、既存アプリケーション資産活用方法などの新たなTipsも添付解説資料に加えました。

テンプレートと合わせてスムースなSTM32MCUアプリケーション開発にお役に立てると思います。

本稿は、説明を工夫したSTM32CubeIDEビルトインSTM32CubeMX使い方の一部を紹介します。

STM32CubeMX使い方:コツ

※以下、用語の頭に付く「STM32」は省略して記述します。

MCU周辺回路の初期化コードを自動生成するCubeIDEビルトインCubeMXも、以前投稿したスタンドアロンCubeMXの使い方と同じです。

CubeMXはSTM32MCU開発の出発点となるツールですので、十分理解した上で着手したいものです。テンプレートV2では、ビルトインCubeMXが生成するファイルに着目し、説明に以下の「使い方のコツ」と「簡単な順位」を追加しました。

CubeMXは、生成するファイル数が多い上に、使用するMCU周辺回路が増えると、生成コード量も多くなり、初めての方には少し解りにくいツールです。弊社テンプレートV1も、このCubeMXに関する質問を多く頂きました。それでも、コツを知っていれば十分使いこなせます。

そのコツとは、以下2点です。
・チェックが必要な自動生成ファイルは、main.hのみ
・main.cに自動追加される周辺回路ハンドラと、初期化コードが分かれば使える

F1シリーズSTM32F103RBの評価ボード:Nucleo-F103RBに弊社テンプレートを応用した例で説明します。

STM32CubeMX生成のF1BaseboardTemplateファイル構成
STM32CubeMX生成のF1BaseboardTemplateファイル構成

CubeMXが自動生成するファイルが、赤:CubeMX生成欄の9個です。このうち注目すべきは、太字赤☑で表示したmain.hとmain.cです。

main.hは、CubeMXで設定したユーザラベル、評価ボードならばB1[Blue PushButton]やUSART_TX/RX、LD2[GreenLed]などを定義した生成ファイルです(※[ ]内は、自動生成時に削除されますので覚え書きなどに使えます)。

main.hのコメント:Private definesの後にこれらの定義が生成されます。これら定義をチェックしておくと、「CubeMX自動生成コードを読むときに役立ち」ます。

main.cは、CubeMXが生成するメイン処理で、評価ボードのCubeMXデフォルトでコード生成:(Alt+K)した場合には、main.cのコメント:Private variablesの後にUSARTハンドラ:huart2と、コメント:Private function prototypesの後にUSART2の初期化コード:MX_USART2_UART_Init()と、その「初期化コード本体がmain.cソースの後ろの方に自動生成」されます。

その他の7個ファイルは、当面無視しても構いません。CubeMXデフォルトのHAL (Hardware Abstraction Layer)APIを利用し、割込みを使わない限り、ユーザコードには無関係だからです(※7個ファイルを知りたい方は、関連投稿:STM32CubeMX生成ファイルのユーザ処理追記箇所を参照してください)。

CubeMXが周辺回路:USART2初期化コードとそれに使う定義を自動生成済みなので、後は、main.cの無限ループ内の指定区間:USER CODE BEGIN xyz~USER CODE END xyzに、Usart2やLD2を使ったHAL APIユーザコードを追記すれば、アプリケーションが完成します。

追記したユーザコードは、再度CubeMXでコード生成しても、指定区間のまま引き継がれます。

ちなみに、アプリケーションで使用可能なHAL APIは、Ctrl+Spaceでリスト表示されます(Content Assist)。そのリストから使用するHAL APIを選択すれば、効率的なユーザコード追記が可能です。
※Content Assistの賢いところは、「ソースコード記述の周辺回路ハンドラを使ってHAL APIをリスト化」するところです。記述なしハンドラのAPIはリスト化されません。

つまり、CubeMXのPinout & Configurationタブで周辺回路を設定後コード生成しさえすれば、直ぐにユーザコードを追記できるファイルが全て自動的に準備され、これらファイルの指定区間へユーザコードを追記すれば、アプリケーションが完成する、これがCubeMXの使い方です。

このCubeMX使い方理解に最低限必要なファイルが、簡単順位:0のmain.hとmain.cの2個です。CubeMX生成ファイル数は9個ありますが、先ずはこの2個だけを理解していれば十分です。

LD2を点滅させるアプリケーションなどを指定区間へ自作すると、具体的に理解が進みます。

STM32CubeMX使い方:周辺回路のファイル分離

評価ボードのCubeMXプロジェクトファイル(*.ioc)は、デフォルトでB1[Blue PushBotton]とUSART2、LD2[GreenLed]を使っています。これらは、評価ボード実装済み周辺回路です。

これら評価ボード実装済み周辺回路へ、弊社テンプレートを適用したのが、シンプルテンプレートです(表:シンプル追加の欄)。

例えば、B1スイッチ押下げ状態をSW_PUSH、USART送信タイムアウトをUSART2_SEND_TIMEOUTなどソースコードを読みやすくする定義の追加は、CubeMX生成main.hの指定区間へ追記することでもちろん可能です。

しかし、他MCUコアへの移植性や変更のし易さを狙って、あえて別ファイル:UserDefine.hへこれらを記述しています。

同じ狙いで、LD2とB1、USART2のユーザ追記制御部分を、Led.cとSw.c、Usart2.cへファイル分離しています。ファイル分離により、HAL API利用のためMCUコア依存性が無くなり、例えば別コアのF0やG0評価ボードで同じ周辺回路を使う場合は、そのファイルのまま流用可能になります。

これらファイル分離した周辺回路の追記制御部分を、main.cの無限ループと同様に起動するのが、Launcher.cです。

つまり、シンプルテンプレートは、評価ボード実装済み周辺回路に、何も追加せずに弊社テンプレートを適用したシンプルな応用例です。その理解に必要なファイルが、緑:シンプル追加欄の☑で、簡単な順に1~5の番号を付けています。

CubeMXのそのままの使い方で周辺回路を追加すると、生成ファイル数は、赤:9個のままですが生成コード量が増えます。周辺回路の初期設定コード増加は当然ですが、この部分はCubeMX自動生成のためミス発生はありません。

しかし、ユーザコード指定区間へ、追加した周辺回路の制御コードを追記するのは、ユーザ自身です。様々な周辺回路制御が混在し追記量が増えてくると、バグやケアレスミスの元になります。

この対策に、周辺回路毎にファイルを分割し、この分割したファイルへ制御コードを記述するのが、シンプルテンプレートです。1周辺回路の制御コードが1ファイル化されていますので、簡単順位1~5の内容は、どれもとても簡単です。

さらに、ADC制御やLCD制御など、殆どの組込アプリケーションで必要になる周辺回路を追加し、Baseboardと評価ボードを結線、デバッグ済みのアプリケーションがベースボードテンプレートです(橙:ベースボード追加欄の3個)。

ユーザ追加ファイルは、全てMCUコア依存性がありません。CubeMXのHAL APIコード生成を行えば、コアに依存する部分は、CubeMX生成ファイル内に閉じ込められるからです。つまり、ユーザ追加ファイルは、全てのSTM32MCUへ流用できる訳です。

これらシンプルテンプレート、ベースボードテンプレートから新たなSTM32MCUアプリケーション開発を着手すれば、新規にアプリケーションをゼロから開発するよりも初期立上げの手間を省け、さらに機能追加や削除も容易です。

STM32CubeMX使い方:周辺回路プロパティ、既存AN利用法

CubeMXへ追加した周辺回路のプロパティ設定値やその理由、更に、既存アプリケーションノート利用方法など、新しいSTM32CubeIDE開発トラブルを回避し、スムースに開発着手できる様々なTipsをテンプレート添付説明資料へ加えています。

マイコンテンプレートサイトでSTM32Fxテンプレートは2020/05/15、STM32G0xテンプレートは2020/05/30発売開始です。ご購入をお待ちしております。
※STM32Fx/G0xテンプレートV1ご購入後1年以内の方は、後日V2を自動配布致しますのでお待ちください。

STM32Fx/G0xテンプレートV2改版状況

STマイクロエレクトロニクスの新しい純正統合開発環境:STM32CubeIDEを使い

2017/09/01発売 STM32Fxテンプレート
2019/06/01発売 STM32G0xテンプレート

を、5月中頃にVersion2:V2改版完了を目標に開発中です。どちらのテンプレートも、サードパーティ仏)AC6社の統合開発環境:SW4STM32と当時のSTM32CubeMXで開発しました。もちろん当時、STM32CubeMXビルトインSTM32CubeIDEはありませんでした。
※STM32CubeMXビルトインSTM32CubeIDEの詳細は、コチラの関連投稿3章を参照してください。

STM32FxテンプレートとSTM32G0xテンプレートのVersion2改版
STM32FxテンプレートとSTM32G0xテンプレートのVersion2改版

本稿は、改版で気が付いた1~3年前のSTM32MCU開発と、現在の「変わったところ/変わらないところ」を説明します。SW4STM32からSTM32CubeIDEへのIDE変更は自主的に変える部分ですが、IDE以外も色々な部分が変わっています。

本稿の目的

本稿は、従来IDEのSW4STM32から新しいSTM32CubeIDEへの移行を妨げるのが目的ではありません。

ほんの数年前のMCU開発環境であっても、最新開発環境へ変える場合には、環境変化への対応時間が必要であることを示したい訳です。

この数年間のブランクは、顧客へ納入済みのアプリケーションを改版、改良する場合によく出会う時間差です。MCU環境は目まぐるしく変わります。この変化にどのように上手く対応していくかも、MCU開発者要件の1つです。

現状のMCU開発は、複数の開発ツールがそれぞれ連携してアプリケーション開発が進みます。セキュリティなどの付加サービスであれば、なおさらです。これら複数ツールは、足並みを揃えて全てが一気に最新環境へ対応することは少ないでしょう。

さらに、STM32G0シリーズのような新しいデバイス情報も収集しておく必要があります。これらを考慮したうえで、顧客からのアプリケーション改版、改良案件に対して、その時点での最適解を提案することが必要だと思います(以下、用語の頭に付く「STM32」は省略して記述します)。

STM32CubeMX:コード生成ツール

CubeMXの自動生成する周辺回路の初期設定コードが変わりました。USART2の例が下図です。

STM32CubeMXの周辺回路初期設定変化
STM32CubeMXの周辺回路初期設定変化

左の従来は、USER CODE追記部分が有りませんが、右の現在は、BEGIN~END部分へユーザコードを追記できます。USART2以外にも、TIM3やIWDGの初期設定コードが同様に変わっています。

この追記部分のおかげで、より解り易い処理フロー作成が可能です。弊社テンプレートV2もこれを活用します。

MCUの消費電流Chartが生成レポート6.6に追加されました。25℃/3.3V動作時のG0/F0/F1各SimpleTemplateのChartを示します。縦軸を比較すると新汎用MCU:G0シリーズの低電力性能がよく解ります。

STM32G0、STM32F0、STM32F1の消費電流比較
STM32G0、STM32F0、STM32F1の消費電流比較

G0シリーズの特徴は、コチラの関連投稿などを参照してください。

AN:アプリケーションノート

アプリケーション開発に最も役立つのが公式AN:サンプルコード集です。CubeMXを開発起点とするサンプルコード集が、F0はAN4735、F1はAN4724、G0はAN5110です。基本的な周辺回路制御方法と、それらを生成するCubeMXプロジェクトファイルが一覧表になっています。

例えば、F1のHAL(Hardware Abstraction Layer)API利用ADCサンプルコード4種を抜き出したのが下記です。

STM32F1シリーズのADCサンプルコード
STM32F1シリーズのADCサンプルコード

従来比、各AN添付のCubeMXプロジェクトファイルは増えましたが、F0/F1は、ブランクプロジェクト(≒開発起点に使えない空プロジェクトファイルで下図左側)です。ここは、数年前と変わっていません。

また、どのサンプルコードもSW4STM32/IAR EWARM/Keil MDK-ARM対応で、未だ新しいCubeIDEには対応していません。
※サンプルコードの中身は、中級開発者には参考になりますが、初心者には、CubeMXプロジェクトファイルがある方が周辺回路の設定内容がより解り易いと思います。

ちなみに弊社テンプレートには、開発起点となるCubeMXプロジェクトファイルを自作し添付しています(下図右側がF1BaseboardTemplateの例)。

この添付CubeMXプロジェクトファイルがあると、どなたにでもテンプレートを活用したアプリケーション開発やピン配置変更、内容修正が容易です。周辺回路設定方法などもV1で頂いたテンプレートご購入者様の意見を反映し添付します。

STM32CubeMXブランクプロジェクトとSTM32F1テンプレートのプロジェクトファイル比較
STM32CubeMXブランクプロジェクトとSTM32F1テンプレートのプロジェクトファイル比較

STM32G0シリーズHAL APIアプリケーション重要性

F0~F1のMCU性能を1つでカバーし、かつ低消費動作なG0シリーズMCUには、その性能を100%活かせる専用LL(Low Layer)API開発が適すと考え、G0xテンプレートV1は、LL APIを主として発売しました。

しかし、G0シリーズは、コア依存性が少ないHAL APIアプリケーション開発がSBSFU実装も可能であり優れています(詳細は、コチラのG0/G4 Root of Trust関連投稿を参照してください)。G0xテンプレートV2は、HAL APIでテンプレートを新規開発します。
※SBSFUを実装したG0xテンプレートは、V2以降(多分V3)で予定しています。

BSP:Board Support Package

従来のSW4STM32は、サンプルコードにBSPを使っていました。しかし、新しいCubeIDEは、BSPを使わずHAL APIで直接制御するサンプルコードが主流です。BSPの実体はHAL APIの組合せですので、BSPを使うよりも評価ボード依存性が無く、より応用流用し易いのは、CubeIDEです。

テンプレートV2も、BSPを使わないCubeIDE方式にします。

Baseboard

mbed-Xpresso BaseboardとNucleo評価ボード接続
mbed-Xpresso BaseboardとNucleo評価ボード接続

秋月電子で簡単に入力できたBaseboardが、現在取扱終了です。代わりにアマゾンマルツで簡単入手できます。

LCDやSWなどのシールドをそれぞれ単体で追加購入するよりも、低価格で評価ボード機能追加ができます。その分、手配線は必要ですが😅、オス-オスジャンパーワイヤで手軽に接続ができます。

STM32CubeIDE日本語文字化け

CubeIDE当初から続く日本語文字化けは、最新版でも解消されていません。コチラの方法で解決しました。

SW4STM32 Webinar

従来の統合開発環境:SW4STM32もまだまだ現役です。例えば、2020年5月5日、15:00~17:00に2時間無料Webinarがあります(多分、英語かフランス語)。最新STM32MP1対応SW4STM32解説なので、興味ある方は、視聴してはいかがでしょう!

Free webinar on Embedded Linux with System Workbench for Linux

さいごに

開発環境変化への対応が必要と説明しましたが、実際にどれ程の時間が必要かは示していません。上手く対応できれば即座ですが、下手をすると本来のアプリケーション開発、改良よりも時間が掛かってしまいます。実際、筆者が対処に結構時間を要したものもありました。

STM32FxテンプレートV2とSTM32G0xテンプレートV2は、筆者が経験したSTM32CubeIDE開発トラブル対処法や、既存AN資産を活用するための様々な対処方法やTipsも解説資料に加えます。テンプレートと合わせてスムースなSTM32MCU開発にお役に立てると考えています。

STM32CubeMonitor

STマイクロエレクトロニクスのSTM32MCU純正開発環境STM32Cubeツールファミリに新に追加されたSTM32CubeMonitorを解説します。

STM32CubeMonitor特徴1:変数リアルタイムモニタ

STM32MCUアプリケーション開発フローと、純正開発環境STM32Cubeツールファミリ:STM32CubeMX、STM32CubeIDE、STM32CubeProgrammer、 STM32CubeMonitorの機能配分が下図です(以下、各ツールの頭に付くSTM32は省略して記述します)。

STM純正 4 Software Development Toolsと機能(出典:STMサイト)
STM純正 4 Software Development Toolsと機能(出典:STMサイト)

この1~4段階の開発フローを繰返すことでアプリケーション完成度が上がります。CubeMX、CubeIDE、CubeProgrammerの機能には重複部分がありますが、Monitoring機能を持つのは、CubeMonitorだけです。

通常のMCU開発は、CubeMXがビルトインされた4段階全てをカバーする統合開発環境:CubeIDEを使えば事足ります(CubeMXビルトインCubeIDEの詳細は、関連投稿の3章をご覧ください)。

CubeProgrammerは、MCUオプションバイト設定などCubeIDEではできないBinary Programmingの+α機能を提供します。例えば、STM32G0/G4のRoot of Trust(3)の投稿で示したSBSFU書込みや消去などがこの機能に相当します。

CubeIDEでも、デバッガ上でアプリケーションの変数モニタは可能です。しかし、あくまでDebugging MCUの(開発者向け)変数モニタです。CubeMonitorは、アプリケーションを通常動作させたまま、変数をリアルタイム(ライブ)モニタができる点が、CubeIDEとは異なるMonitoring機能です。

STM32CubeMonitor特徴2:データ可視化

リアルタイムで取得したデータは、下図のようにPCダッシュボードに予め準備済みのChartや円グラフにして可視化することができます。しかも、これら表示が、PCだけでなく、スマホやタブレットへも出力可能です。

STM32CubeMonitorのデータ可視化(出典:DB4151)
STM32CubeMonitorのデータ可視化(出典:DB4151)

つまり、CubeMonitorを使えば、開発したアプリケーションのライブ動作を、あまり手間をかけずにビジュアル化し、エンドユーザの顧客が解るように見せることができる訳です。これが、一押しの特徴です。

文章で説明するよりも、コチラの動画を見ていただくと一目瞭然です。

組込みアプリケーションのビジュアル化

組込みアプリケーション開発も、自動車のADAS(Advanced Driver-Assistance Systems:先進運転支援システム)のおかげでビジュアル化がトレンドです。

組込みアプリケーションのビジュアル化
組込みアプリケーションのビジュアル化

もちろん、超高性能MCUやデュアルコアMCUで実現するアプローチが本流です。が、本稿で示した2020年3月発表のCubeMonitorを使えば、産業用MCUでも案外簡単にビジュアル表示出力が可能になりそうです。

組込みアプリケーションは、MCUで結構大変な処理を行っていても、外(顧客)からは単にMCUデバイスしか見えません。CubeMonitorで処理データを可視化するだけでも、複雑さや大変さを顧客へ示すツールにもなります。

SW4STM32からSTM32CubeIDE移設

STマイクロエレクトロニクス(以下STM)MCUの統合開発環境(IDE)を、従来のSW4STM32から新しいSTM32CubeIDEへ移設するのは簡単です。STM32CubeIDE初期画面に、SW4STM32からSTM32CubeIDEへのプロジェクト変換機能があるからです。

しかし、本稿はSTM社自身による新しいSTM32CubeIDE発表を、STM32MCU純正開発ツールラインナップの完成ととらえ、SW4STM32で開発したSTM32FxテンプレートSTM32G0xテンプレートを、STM32CubeMX起点のSTM32CubeIDE移設方法とそのメリットを示します。

SW4STM32/TrueSTUDIOからSTM32CubeIDE移設背景

IDE開発元の買収&消滅、C/C++コンパイラ改版、Eclipse改版、WindowsなどのOS改版等々、IDE移設が生じる原因は、様々です。IDEは、MCU開発者と最も長い付合いをするツールで、しかも顧客先で稼働中ソフトウェアの変更手段ですので、IDE移設はできれば避けたい出来事です。

SW4STM32は、STM32MCU向けコードサイズ制限なしの無償IDEで、サードパーティAC6社が提供してきました。また、サードパーティAtollic社のTrueSTUDIOも同じくSTM32MCU向け無償IDEとして人気がありましたが、Atollic社をSTMが買収し、TrueSTUDIOはDiscontinue、代わりにSTM自社開発のSTM32CubeIDE無償提供を始めました(Atollic社買収の目的は、STM32CubeIDE開発だと思います)。

STM32 Software Development Tools(出典:STMサイト)
STM32 Software Development Tools(出典:STMサイト)

ポイントは、従来サードパーティが提供してきたコードサイズ制限なし無償IDEを、STM自らSTM32CubeIDEで提供し、「STM32CubeMX/IDE/Programmer/Monitorから構成されるSTM純正のSTM32MCU開発ツールラインナップが完成」したことです(上図)。

このうち、STM32CubeMoniterは、比較的新しいデバッガで、本ブログで紹介を予定しています。

STM32CubeIDEフォルダ構成

STM32CubeIDEは、SW4STM32やTrueSTUDIOよりも後発IDEですので、SW4STM32/TrueSTUDIO開発プロジェクトを、STM32CubeIDEプロジェクトへ変換し取込む機能があります。この機能の使用結果が下図左側です。

STM32CubeIDE変換機能移設プロジェクト(左)とSTM32CubeIDE新規プロジェクト(右)のフォルダ構成比較
STM32CubeIDE変換機能移設プロジェクト(左)とSTM32CubeIDE新規プロジェクト(右)のフォルダ構成比較

左側は、弊社がSW4STM32で開発したSTM32G0x SimpleTemplateプロジェクトを、STM32CubeIDEの変換機能を使ってSTM32CubeIDEプロジェクトへ移設後のProject Explorer、一方、右側は、STM32CubeIDEで新規にSTM32G0プロジェクトを作成した時のProject Explorerです。

左右でプロジェクトのフォルダ構成が異なっていることが判ります。

左:変換機能利用の移設プロジェクトは、従来のSW4STM32フォルダ構成がそのままSTM32CubeIDEで再現されます。

右:STM32CubeIDE新規プロジェクトのフォルダ構成は、Coreフォルダ内にIncフォルダとSrcフォルダがまとめられています。これがSTM32CubeIDE本来のフォルダ構成です。
※ここでのCoreは、下図Application code層を示します。

STM32CubeIDE本来のフォルダ構成は、MCUがCortex-M4のSTM32G4などへ代わっても、Core>Inc/Src構成は不変で、Driversフォルダの中身がSTM32G4対応へ変わるのみです。つまり、よりCMSIS対応のアプリケーション開発に向いた構成です。

CMSIS Structure(出典:Keil CMSIS Version 5.6.0 Generalサイト)
CMSIS Structure(出典:Keil CMSIS Version 5.6.0 Generalサイト)

※CMSIS対応は、関連投稿:mbed OS 5.4.0のLチカ動作、LPCXpresso824-MAXで確認の3章 CMSISを参照してください。

このようにSTM32CubeIDEは、開発者が「本来のアプリケーション開発に集中し易い、つまりIncとSrcのコード作成に集中できるMCU非依存のフォルダ構成」です。

さらに、他の「STM32MCU純正開発ツールとの相性良さや、新発売MCUデバイスへの素早い対応」も期待できます。

これらは、サードパーティIDEになかったSTM自社開発STM32CubeIDEの大きなメリットです。

STM32CubeMX起点のSTM32CubeIDE移設

STM32Fx/G0xテンプレートは、SW4STM32で開発しました。STM32CubeIDEプロジェクト変換機能を使って、従来SW4STM32フォルダ構成のままSTM32CubeIDEへの移設は簡単です。しかし、前章のSTM32CubeIDE本来のフォルダ構成の方が、より大きなメリットが期待できます。

そこで、本来のSTM32CubeIDEプロジェクトフォルダ構成へ、SW4STM32プロジェクトを移設します。

これには、STM32Fx/G0xテンプレート開発時に自作したSTM32CubeMXプロジェクトファイル(前章の左側:SimpleTemplate.ioc)を使います。

STM32CubeMXは、STM32MCUソフトウェア開発の起点となるコード生成ツールです。このSTM32CubeMXから移設を始めれば、次段のSTM32CubeIDEも本来の新規プロジェクト構成で自動生成されます。

さらに、開発アプリケーションで使うLL API/HAL APIの選択や変更も、STM32CubeMXで行います。従って、LL APIが「主」で開発したSTM32G0xテンプレートを、HAL APIへ変えるのも容易です。
※LL API「主」からHAL APIへも「主」へ変更する理由は、STM32G0シリーズがRoot of Trust対応メインストリーム(汎用)MCUだからです。STM32G0専用のLL APIアプリケーションよりも、汎用HAL APIアプリケーションの方が、Root of Trust実現には向いています。詳しくは、関連投稿:STM32G0/G4のRoot of Trust(2)を参照してください。

SW4STM32のSTM32CubeMXプロジェクトファイル(SimpleTemplate.ioc)を起点としてSTM32CubeIDEへ移設したProject Explorerが下図です。前章の右側:STM32CubeIDE新規プロジェクトと同じフォルダ構成で移設されていることが判ります。

STM32CubeMXプロジェクトファイル起点でSTM32CubeIDEへ移設
STM32CubeMXプロジェクトファイル起点でSTM32CubeIDEへ移設

但しこの方法では、SW4STM32でユーザ(筆者)が追加作成したファイル、前章左側:Launcher.c/Led.c/Lpuart.c/UserDefine.hは、手動で移設する必要があります。

まとめ

STM32CubeIDEの提供で、STM32MCU純正開発ツールラインナップが完成しました。
※STM32CubeIDE v1.3.0に残っていた日本語文字化けは、コチラの投稿方法で解決しました。

SW4STM32/TrueSTUDIOなどの従来IDEからSTM32CubeIDE 移設のメリットは、他のSTM純正開発ツール(STM32CubeMX/Programmer/Monitor)との好相性や新発売MCUデバイスへの早い対応です。

従来IDEプロジェクトの移設は、STM32CubeIDEプロジェクト変換機能を使うと簡単です。しかし、移設メリットを活かすには、旧IDEフォルダ構成から、STM32CubeIDE本来の構成となるSTM32CubeMXプロジェクト起点の移設を、弊社STM32Fx/G0xテンプレートへ適用します。

STM32CubeIDE対応の各テンプレート改版完成は、本ブログで発表します。

STM32CubeIDE更新、文字化け解決

STマイクロエレクトロニクスの統合開発環境:STM32CubeIDEがv1.3.0に更新されました(2月28日、更新自動通知メールにて把握)。デフォルト設定のWindows版STM32CubeIDEは、エディタで追記した日本語コメントに文字化けが発生します。これは、昨年投稿したSTM32CubeIDE v1.1.0v1.2.0と同じで、最新版でも解決されません。

そこで、対策にデフォルト設定を2か所変え、日本語文字化け解決を確認しました。また、Linux Debian版STM32CubeIDEとSW4STM32は、最新環境でもデフォルトで文字化けが無いことも確認しました。

Windows版STM32CubeIDE日本語文字化け発生箇所

2019年4月新登場STマイクロエレクトロニクス統合開発環境:STM32CubeIDE-Winの日本語コメント文字化けは、

  • SW4STM32プロジェクトのSTM32CubeIDEインポート後
  • プラグイン版STM32CubeMXでのコード再生成時

に、エディタでソースコードに追記した日本語コメントに文字化けが発生します。
※Windows版は、Windows 10 Pro 1909の話です。

STM32CubeIDE-Win v1.3.0日本語文字化け対策

数回のメジャー更新を経て登場後約1年のv1.3.0でも、この文字化けはデフォルトのままでは未解決です。そこで、ネット検索したところ、コチラの対策を得ました。

STM32CubeIDEのデフォルト設定を、2か所変更します。

STM32CubeIDEの日本語文字化け2箇所の対策
STM32CubeIDEの日本語文字化け2箇所の対策
  1. フォント設定を、デフォルトConsolasからメイリオなどの日本語文字セットへ変更(ワークスペース毎)
  2. Text file encoding設定を、デフォルトUTF-8からShift-JISへ変更(プロジェクト毎)

※1は、STM32CubeIDEのWindowタブ>Preferenceダイアログ検索窓へ”font”入力>Colors and Font選択>C/C++選択>Editor選択>C/C++ Editor Text Fontを選択し、Edit…クリックで左図表示
※2は、プロジェクト選択>Propertiesクリックで右図表示

右図のようにプルダウンメニューにShift-JIS選択肢が無い時は、Shift-JISと直接入力し、Apply and Closeをクリックします。

1はワークスペース毎、2はプロジェクト毎に設定が必要です。

これら2か所の変更で、SW4STM32プロジェクトインポート後とSTM32CubeMXコード再生成時、どちらもエディタ追記日本語コメント文字化けは解決できました。

以上で、従来のSW4STM32から新しいSTM32CubeIDEへ、日本語コメント文字化け無しにSTM32MCU開発環境を移行できます。

STM32CubeIDE特徴

STM32CubeIDEは、コード生成ツール:STM32CubeMX、開発デバイスファームウェア(弊社ならFW_F0/F1/G0/G4)全てを1パッケージ化し、全て最新版のみを提供する特徴があります。投稿時のSTM32CubeIDE v1.3.0が下図です。

簡単に言うと、開発ソフトウェアが全てSTM32CubeIDEへプラグインされた形式です。

STM32CubeIDE全体構成
STM32CubeIDE全体構成

STM32CubeIDE起動時、またはCheck for Updatesにより、IDEを含めた各プラグイン更新を確認し、常に最新開発環境となります(悪名高いWindows Updateに似ているような…😅)。

これは、プラグイン版STM32CubeMX v5.6.0に、旧ファームウェア選択機能が無いことからも解ります。

最新ファームウェアを使うSTM32CubeMXプラグイン版(左)とファームウェア選択可能なスタンドアロン版(右)
最新ファームウェアを使うSTM32CubeMXプラグイン版(左)とファームウェア選択可能なスタンドアロン版(右)

例えば、顧客先で稼働中ソフトウェアへ変更を加えるなど旧ファームウェアのまま開発希望の場合は、スタンドアロン版STM32CubeMX v5.6.0を使えば、右図のように旧ファームウェア選択も可能です(関連投稿:v1.2.0の開発環境更新リスク、ファームウェア更新リスク回避策の章に背景説明があります)。

純正STM32Cubeツール

STM32MCUソフトウェア開発に使えるIDEは、下図中央のようにIAR:Embedded Workbench、ARM:Keil、AC6:SW4STM32、etc.などサードパーティ製も数多くあります。しかし、純正STM32CubeツールのSTM32CubeIDEが、STマイクロエレクトロニクス一押しの統合開発環境だと思います。

STM32 Software Development Tools(出典:STMサイトに加筆)
STM32 Software Development Tools(出典:STMサイトに加筆)

もちろん、従来からあるSW4STM32もまだ現役(Active)です。ST Communityには、今も多くのSW4STM32事例があります。

そこで、Windows版STM32CubeIDE以外の、SW4STM32とLinux Debian版STM32CubeIDEの現状を調べました。

STM32CubeIDE-DEB

64ビット版のみですが、STM32CubeIDE v1.3.0のLinux Debian版インストーラが、Windows版STM32CubeIDEと同じ純正ソフトウェア入手サイトにあります。

STM32CubeIDE Debian Linux Installer
STM32CubeIDE Debian Linux Installer

筆者は、DebianよりもMintが好きなので、STM32CubeIDE-DEBをLinux Mint 19.3 MATE (64-bit)へインストールし、デフォルト設定でも日本語文字化け無し、評価ボードで正常動作することを確認しました。

STM32CubeIDE-DEBは、デフォルトで日本語文字化けなしで動作
STM32CubeIDE-DEBは、デフォルトで日本語文字化けなしで動作

Mintへのインストール方法が下記です。途中で長いライセンス同意を求められます。

chmod +x st-stm32cubeide_1.3.0….sh
sudo ./st-stm32cubeide_1.3.0….sh、または、sudo bash st-stm32cubeide_1.3.0….sh
※NXP:MCUXpresso IDE v11.1.0のInstallation Guide, Appendix A – Linux Installationを参考にしました。

STM32CubeMXやデバイスファームウェアは、Windows版と同様全てプラグインです。Linux版SW4STM32既成プロジェクトが手元に無いのでインポートは試せませんが、問題無いと思います。

リリースノート:RN0114のLinux動作テスト環境にMintは有りません。自己責任でNXP:MCUXpresso IDE v11.1.0 Linux版ともども、Mint上でSTM32CubeIDE-DEBが正常動作したことをお知らせします。

SW4STM32とスタンドアロン版STM32CubeMX v5.6.0

SW4STM32とスタンドアロン版STM32CubeMX v5.6.0で開発環境を構築する場合は、デフォルトでも日本語文字化けは発生しません。従来環境に慣れた方は、SW4STM32もそのまま使えると思います。

お知らせ:STM32FxテンプレートとSTM32G0xテンプレート改版予定

STM32CubeIDE-Win v1.3.0に加えた本稿2か所変更が、次版以降のSTM32CubeIDEにも必要かは判りません。ただ、いまさらShift-JIS設定?という気はします。WindowsでShift-JIS継続利用の弊害は、コチラの記事がよく解ります。

しかし、懸案であった日本語コメント文字化けが解決、新登場後1年経過しv1.3.0となったこのタイミングで、従来SW4STM32から新しいSTM32CubeIDEへ開発環境を乗換えるのもチャンスだと思います。SW4STM32更新頻度が減ったことや、他の純正STM32Cubeツールとの相性良さも期待できるからです。

そこで、SW4STM32で開発・販売したSTM32FxテンプレートSTM32G0xテンプレートを、STM32CubeIDE-Winを使って再開発に着手し、新にVersion 2として販売する予定です。進行状況などは、本ブログでお知らせします。

MCUベンダAPI生成ツール比較

お知らせ

弊社サイト:マイコンRTOS習得を2020年版へ改版しました。前稿までのFreeRTOSサンプルコード(1)~(5)結果を、2017年版へ反映させた結果です。是非、ご覧ください。

MCUベンダAPI生成ツール一覧

FreeRTOSサンプルコード(1)で予告したベンダ毎に異なるAPI生成ツールやその違い、サンプルコードとの関係を説明します。本ブロブ掲載MCUベンダ5社のAPI生成ツール一覧が下表です。

MCUベンダトップシェア5社のMCU API生成ツール一覧
ベンダ API生成ツール ブログ掲載MCU API生成方法
Runesas CS+ RL78/G1x 個別ハードウェア設定
NXP SDK LPC111x/LPC8xx/Kinetis E/LPC5411x MCU設定
STM STM32CubeMX STM32Fx/STM32Gx 個別ハードウェア設定
Cypress PSoC Creator PSoC4/PSoC4 BLE/PSoC4000/PSoC6 個別ハードウェア設定
TI CCS STM432 MCU設定

IDEとは別のAPI生成ツール専用名があり、ツール単独で更新するのが、NXP)SDK、STM)STM32CubeMXです。Runesas)CS+、Cypress)PSoC Creator、TI)CCSは、IDEにAPI生成ツールが組込まれていますので、IDE名称をAPI生成ツール欄に記載しています。
※CS+のAPI生成ツールは、単独でコード生成と呼ぶこともあります。

さて、これらAPI生成ツールには、2種類のAPI生成方法があります。

  • MCU設定:利用MCUを設定し、内蔵ハードウェアAPIを一括生成…NXP)SDK、TI)CCS
  • 個別ハードウェア設定:利用内蔵ハードウェアを個別設定し、APIを生成…Runesas)CS+、STM)STM32CubeMX、Cypress)PSoC Creator

MCU設定タイプのAPI生成ツールは、全内蔵ハードウェアAPIを、ユーザ利用の有無に係わらず一括生成するため、規模が大きく、SDK(Software Development Kit)などパッケージ化してIDEへ提供されます。但し、コンパイル時に利用ハードウェアのみをリンクしてMCUへダウンロードするので、少Flashサイズでも問題はありません。

MCU設定タイプの特徴は、例えば、UART速度設定などのハードウェア動作パラメタは、APIパラメタとしてMCUソースコードにユーザが記述します。

MCU設定タイプのNXP)SDKのUART API例
MCU設定タイプのNXP)SDKのUART API例

一方、個別ハードウェア設定タイプは、UARTなどのハードウェア動作パラメタは、API生成前にGUI(Graphical User Interface)で設定し、設定後にAPIを生成します。このためユーザが、MCUソースコードのAPIに動作パラメタを追記することはありません。

個別ハードウェア設定タイプのSTM32CubeMXのUART API例
個別ハードウェア設定タイプのSTM32CubeMXのUART API例

API生成ツール比較

MCU設定タイプのAPI生成ツールは、使い方がMCU設定のみで簡単です。また、ハードウェア動作パラメタがMCUソースコード内にあるため、動作変更や修正もIDE上で行えますが、人手によるバグ混入の可能性も高まります。

個別ハードウェアタイプAPI生成ツールは、MCUソースコード内のAPI記述が簡素です。生成されたAPI内部に動作パラメタが含まれているからです。但し、ハードウェア動作変更には、IDEから一旦API生成ツールに戻り、APIの再生成が必要です。この場合でも、MCUソースコードは不変ですので、GUI設定にミスが無ければバグ混入は少ないでしょう。

どちらにも、一長一短があります。敢えて分類すると、ソフトウェア開発者向きが、MCU設定タイプ、ハードウェア開発者向きでTP:Test Program応用も容易なのが、個別ハードウェア設定タイプです。

個別ハードウェア設定タイプであっても、Cypress)PSoC Creatorなどは、通常パラメタはBasicタブ、詳細パラメタはAdvanceタブで分け、誰でも設定を容易にしたツールもあります。

MCUソフトウェアは、C言語によるMCU API制御です。MCU API生成ツールの使い勝手が、ソフトウェア生産性の半分程度を占めていると個人的には思います。

サンプルコード/サンプルソフトウェア

各社のサンプルコード/サンプルソフトウェアは、上記API生成ツールのMCUソースコード出力例です。

従って、サンプルコードには、出力例と明示的に判るよう多くのコメントが付加されています。初めてサンプルコードを見る開発者は、注意深くコメントを読んで、そのMCU開発の全体像を理解することが重要です。

全体像が理解済みであれば、より効率的な開発手法、例えば、(推薦はしませんが)個別ハードウェア設定タイプであっても、IDEからAPI生成ツールに戻らずに、直接MCUソースコードでハードウェア動作パラメタを変更するなどのトリッキーな使い方も可能です。

MCU開発とCOVID-19

新型コロナウイルス:COVID-19が世界的に流行しつつあり、工場閉鎖や物流への影響も出始めています。現状は治療薬が無いので、「個人の免疫力と体力」が生死の決め手です。

同時にMCU供給不足/停止など、開発への波及も懸念されます。これに対し「個人で第2のMCU開発力」を持つことが解決策を与えます。

本稿は、MCUベンダトップシェア5社のMCU API生成ツールを比較しました。MCUシェア評価ボード価格や入手性、個人の好みなど、是非ご自分にあった比較項目で、現在利用中のMCUに代わる第2のMCU開発力を持つことをお勧めします。

第2のMCU開発力は、現行と視点が変わり利用中MCUスキルも同時に磨くことができ、様々な開発リスクに耐力(体力)が付きます。短期で効果的な第2のMCU開発力の取得に、弊社マイコンテンプレートがお役に立てると思います。

STM32G071RBとAlexaを繋ぐ

1月9日STマイクロエレクトロニクス(以下STM)公式ブログに、STM32G0とAlexa(アレクサ)を接続する開発キット:Alexa Connect Kit(ACK)モジュールが紹介されました。アレクサに話しかけ、STM32G0評価ボードのNucleo-G071RB 経由でスマートホーム制御が簡単に実現できます。

システム構成

STM32G071RBとAlexaを接続するAlexa Connect Kit (ACK)のシステム構成
STM32G071RBとAlexaを接続するAlexa Connect Kit (ACK)のシステム構成

システム構成の公式ブログ掲載が無いので、自作したのが上図右側です(左側出典:STMサイト、Cortex-M7 MCUでアレクサ接続)。

USI MT7697HがACKモジュールで、Nucleo-G071RBとはArduinoコネクタで接続します。スマートスピーカに話しかけると、クラウド内で音声解析→制御コマンド生成を行い、このコマンドがACKへ無線送信され、STM32G0評価ボードNucleo-G071RBへ届き、STM32G071RBがスマートホーム機器などを制御します。

費用とSTM32G0用ACKドライバ、ファームウェア

費用:Nucleo-G071RBが約$10、ACKがUS Amazonで$197、(日本アマゾンで¥38,202)。

STM32G0用ACKドライバ、ファームウェア:公式ブログリンク先は、今日現在、提供されていません。

2018年6月頃は、STM32F7やSTM32H7などの高性能Cortex-M7 MCUでアレクサ接続がSTM公式ブログで投稿されましたが、今回Cortex-M0+のSTM32G0とACKでも簡単に接続可能になりました。

STM32G0特徴

2018年12月新発売のSTM32G0シリーズは、初の90nmプロセス製造MCUで低消費電力と高速動作、従来のSTM32F0 (Cortex-M0)~F1 (Cortex-M3)性能をカバーする新しい汎用MCUです。セキュリティハードウェア内蔵、低価格、64ピンパッケージでも1ペアVDD/VSS給電がSTM32G0の特徴です。
関連投稿:STM新汎用MCU STM32G0守備範囲が広いSTM32G0

STM32マイコンマンスリー・アップデート2020年1月のP4に、「STM32G0 シリーズのラインナップ拡充 STM32G041/ G031/ G030 新登場」記事もあります。筆者も、STM32G0シリーズは、STMの汎用MCUとしてお勧めデバイスです。

LL APIかHAL API、混在?

残念ながら今は未提供ですが、筆者は、ACKドライバとファームウェアのAPIに興味があります。

理由は、STM32G0シリーズの高性能を引き出すには、HAL:Hardware Abstraction Layer APIよりもエキスパート向けLL:Low Layer API利用ソフトウェア開発が適すからです。

HALとLL比較(出典:STM32 Embedded Software Overvire)
HALとLL比較(※説明のため着色しています。出典:STM32 Embedded Software Overvire)

生産性や移植性の高いHAL APIとLL APIの混在利用は、注意が必要です(関連投稿:STM32CubeMXのLow-Layer API利用法 (2)の4章)。

ACKドライバ、ファームウェアが、LL APIかHAL APIのどちらを使っているか、または混在利用かを確認し、ノウハウを取得したかったのですが…😥。

LL API利用STM32G0xテンプレートとHAL API利用STM32Fxテンプレート

弊社は、LL API利用STM32G0x専用テンプレートと、HAL API利用STM32Fx汎用テンプレートの2種類を、それぞれ販売中です(テンプレートは同一、テンプレートを使うAPIのみが異なる)。

STM32汎用MCUラインナップ
STM32汎用MCUラインナップ(出典:STM32 Mainsterm MCUsに加筆)

もちろん、STM32G0でもHAL APIを利用することは可能です(STM32G0x専用テンプレートにもHAL API使用例添付)。LL API利用ソフトウェアは、性能を引き出す代償に対象MCU専用になります。

HAL APIとLL APIの混在は避けた方が無難で、STM32G0はLL API専用でテンプレート化しました。添付資料も、LL APIを中心に解説しています。STM32Fxテンプレート添付資料は、HAL API中心の解説です。

両テンプレートをご購入頂ければ、LL/HAL双方のAPI差が具体的に理解できます。開発するアプリケーション要求性能や発展性に応じて、LL APIかHAL APIかの選択判断も可能になります。
※両テンプレート同時購入時は、2個目テンプレート50%OFF適用で、1500円(税込)です😀。

FYI:日本語コメント文字化け継続

STMマイコン開発環境にソースコード日本語コメントの文字化けが発生中であることを、昨年11月に投稿しました。この文字化け発生のSTM32CubeIDE v1.1.0/CubeMX v5.4.0開発環境が、STM32CubeIDE v1.2.0STM32CubeMX v5.5.0に更新されました。

更新後のSTM32CubeIDE v1.2.0/CubeMX v5.5.0でも、旧版同様に文字化けします。
一方、SW4STM32では、STM32CubeMX v5.5.0更新後も日本語コメント文字が正常表示されます。

他社の最新版EclipseベースIDE、NXPのMCUXpresso IDE v11.1.0や、CypressのPSoC Creator 4.2では、ソースコードText Font変更をしなくても文字化けはありませんので、STM特有問題だと思います。

ワールドワイドでの日本相対位置低下、今年から始まる小学校英語教育…、日本ものつくりは、英語必須になるかもしれません。

NXPマイコン開発環境更新

2019年12月20日、NXPマイコン統合開発環境のMCUXpresso IDE v11.1、SDK v2.7、Config Tools v7.0への更新ニュースが届きました。筆者は、Windows 10 1909トラブル真っ最中でしたので、更新対応が遅れ今日に至ります。本稿は、この最新開発環境更新方法と、Secure Provisioning Toolsを簡単に説明します。

NXPマイコン最新開発環境への更新方法

MCUXpresso IDEやSDKの最新版への更新方法は、前版更新方法の投稿:MCUXpresso IDE v11をLPC845 Breakout boardで試すと同じです。

MCUXpresso 4 Tools
NXPマイコン統合開発環境のMCUXpresso 4 Tools

更新方法をまとめると、

  1. MCUXpresso IDE v11.1をダウンロードしインストール(前版v11.0インストール先/ワークスペースともに別になるので、新旧IDEが共存可能)。旧版は、手動にて削除。アクティベーション手順不要。
  2. SDK Builderで旧SDK v2.6を最新版へ更新(旧SDK構築情報はNXPサイトに保存済みなので、ログインで最新版v2.7へ簡単に再構築できる)。
  3. Config Toolsは、他ツールに比べ改版数が大きい(v7.0)のですが、筆者の対象マイコン(LPCXpresso54114/812MAX/824MAX/845Breakout)では、SDKにCFGが含まれており、単独で更新することはありません。
  4. IDE/SDK/CFGの3ツールに加え、新に4番目のSEC:MCUXpresso Secure Provisioning Tool v1が加わりました。が、このSECツールは、Cortex-M7コアを用いるi.MX RT10xxクロスオーバープロセッサ用です。インストールや更新も、筆者対象マイコンでは不要です。

MCUXpresso IDE v11.1更新内容

IDE起動後、最初に表示されるWelcomeページが変わりました。

MCUXpresso IDE v11.1 Welcome Page
MCUXpresso IDE v11.1 Welcome Page

What’s Newアイコンクリックで詳細な更新内容が分かります。

目立つ更新内容をピックアップすると、ベースIDEのEclipse 4.12.0.v201906 / CDT9.8.1とGCC8-2019q3-updateへの対応に加え、ダークテーマ表示が可能になりました。

ダークテーマ利用は、Window>Preference>General>Appearance>ThemeでMCUXpresso Darkを選択し、Apply and Closeをクリックします。Dark Themeは、日本語コメントが読みづらく筆者の好みではありません。Restore Defaultsクリックで元に戻りますので、試してみてください。

マイコンテンプレートラインナップ

前稿の2020年1月のCypress PSoC 4000S/4100S/4100PSテンプレート発売で、弊社マイコンテンプレートの販売ラインナップは、下図に示すように全部で8種類(黄色)となりました。

マイコンテンプレートラインナップ2020/01
マイコンテンプレートラインナップ2020/01

2020年は、ARM Cortex-M0/M0+/M3コアに加え、Cortex-M4コアもテンプレート守備範囲にしたいと考えています。図の5MCUベンダー中、Eclipse IDEベースの最も標準的で、かつ使い易い開発環境を提供するNXPマイコン開発環境が今回更新されたのは、この構想に好都合でした。

Cortex-M7コアのi.MX RT10xxでは、初めからRTOSや高度セキュリティ対策が必須だと思います。Cortex-M4マイコンも高度なセキュリティは必要だと思いますので、SECツールの対応状況も今後注意します。