マイコンテンプレート活用プロトタイピング開発(2)

マイコンテンプレートがプロトタイピング開発に適すシリーズ投稿第2回は、開発に活用流用できるソフトウェア=ライブラリの概要を示します。説明するライブラリが下記です。詳細説明が必要になった時は、それに応じて追記するので、今回は概要を示します。

  1. Arduinoシールド付属C++ライブラリ
  2. SW4STM32付属デモソフト
  3. STM32CubeMX:初期化Cコード生成ツール
  4. HAL:Hardware Abstraction LayerとBSP:Board Support Package
  5. Middleware Components:ミドルウェア:FatFs
  6. STMicroelectronicsアプリケーションノート
  7. STMicroelectronics Communityやネット情報

ソフトウェアは、ドライバーやミドルウェアなど階層構造や使い方に応じて色々な呼び方がありますが、本投稿では、開発に使える可能性のあるソフトウェアや情報を、全てライブラリと呼びます。つまり、開発者自らが開発するソフトウェアと、その開発に使えるライブラリの2つに大別して説明します。

開発着手時は、各ライブラリ概要をおおよそ把握し、自分で開発するソフトのイメージが捉えられれば十分です。後はそのイメージをソフトの形にしてテンプレートに追加すれば、プロトタイピング開発完成です。

1.Arduinoシールド付属C++ライブラリ

Arduinoは、オープンソースハードウェアのシングルボードコントローラです。Arduinoコネクタにシールド基板を実装すれば、誰でも簡単に機能追加できるのがウリです。もちろんハード制御に必須なソフトウェア=ライブラリもシールド基板とともに提供されます。

TFTシールド基板ライブラリは、ArduinoのAPIを利用しC++で記述(左下:shieldtest参照)されています。Arduino IDEにこのライブラリを追加しさえすれば簡単に基板の動作確認ができ、ソース変更も容易です。しかし、これを対象マイコン用に変更するのは、簡単ではありません。API変更とC++が問題です。

Adafruit TFT shieldtest Sketch running
Adafruit TFT shieldtest Sketch running

2.SW4STM32付属デモソフト

SW4STM32には、TFTシールド基板のデモソフトが付属しています。UM1787にデモファームウェアが紹介されており、利用や変更、修正など開発者が自由に使って良いライブラリです。

TFT Shield Demonstration running (Source:UM1787)
TFT Shield Demonstration running (Source:UM1787)

但しこのデモソフトは、デモの表示画像やテキストの変更は簡単でも、一部機能の切出しや新機能の追加、例えばUART入出力処理の追加などは容易ではありません。また、最新の開発ツールSTM32CubeMXベースで開発されたのもでもなく、エキスパートが自作したものです。

このデモソフトのような既存ファームウェアがあっても、そのまま流用活用しにくいというのは、MCUソフトウェア開発ではよくある話です。既存ファームウェアやライブラリの解析に手間と時間がかかるため、新たな環境で新たなソフトウェアを開発したほうが早く済むこともよくあります。

ナゼか? それは、流用性や資産とすることを念頭に置いてソフト開発をしないからです。MCU処理能力の低さやメモリ量の少なさが主な原因ですが、これらは今後改善されます。MCUソフトも流用性を重視し、ソフトウェア資産、部品化を考慮した開発が今後必要です。

3.STM32CubeMX:初期化Cコード生成ツール

STM32CubeMXは、STM32シリーズの全MCUに対して、GUIでパラメタを設定しさえすれば周辺回路の初期化Cコードを自動生成するツールです。また、SW4STM32を含め全IDE(TrueSTUDO、MDK-ARM、EWARM)で共通に使えるなど守備範囲も広く「STM32ソフトウェア開発の要」です。

UM1718に解説があります。このUM1718のTutorial 2に、MCUはSTM32F4ですが、本開発に使えるSTM32CubeMXの設定方法があります。

関連投稿:STM32CubeMX設定については、コチラの投稿も参照してください。

4.HAL:Hardware Abstraction LayerとBSP:Board Support Package

HALは、文字通りハードウェア隠蔽機能を提供する階層です。CortexコアといえどM0/M0+/M3/M4などハードウェアは異なります。この異なるハードにも関わらずHALが同じAPIを上位層に提供するので、性能不足などでコア変更が生じても同じソフトが流用できる訳です。UM1749に詳しく解説されています。

BSPは、このHALのAPIを組み合わせた評価ボード特有機能のマクロ関数です。評価ボードを制御系にそのまま利用する時に便利です。

HALやBSPを使うとオーバーヘッドも生じます。しかし、流用性向上のメリットの方が大きいと思います。

関連投稿:HALのオーバーヘッドは、コチラの投稿の、“STM32CubeMXの2種ドライバライブラリ”を参照してください。

5.Middleware Components:ミドルウェア:FatFs

FatFsは、MCU向けの汎用FATシステムモジュールでフリーソフトウェアです。MCUハードには依存しないので、どのマイコンでも使えるのが特徴です。FatFs APIを使うと、SDカードなどのファイルシステムに簡単にアクセスできます。

STM32CubeMXでは、MiddleWaresのFatFs、User-definedに☑を入れると使えようになります。

STM32CubeMX MiddleWare FatFs
STM32CubeMX MiddleWare FatFs

6.STMicroelectronicsアプリケーションノート

UM1721は、“Developing Applications on STM32Cube with FatFs”と本開発にはピッタリの内容です。3.3にサンプルソフトがあります。これは、FatFsを使って開発したソフトの単体テストに使えます。

7.STMicroelectronics Communityやネット情報

STMicroelectronics Communityなどのベンダーコミュニティは、開発者同士の情報交換、質問の場です。各ベンダーは、提供ツールのバグ情報や更新方針などもこのコミュニティーから収集していますので、時々閲覧すると参考になります。開発でつまずいた時など解決方法が見つかることもあります。

また、検索エンジンでは様々なネット情報が得られます。最新情報などを取集すると、開発動向の把握も可能でしょう。

開発ソフトウェア構成とイメージ

今回のソフトウェア開発に役立つライブラリ概要を示しました。

直ぐにソースコードを書きたい気持ちを少し我慢して、ほんの少し事前調査をすると、視野が広がり使えそうなライブラリの見当もつきます。使えるモノを流用すれば、より重要箇所に集中できます(前回投稿の「選択と集中」ができます)。

本開発は、SPIシールド基板で追加する3機能毎にSTM32CubeMXを用いてソフト開発し、テンプレートへ追加します。また、流用性を上げるため追加機能毎にファイル化し、単体機能の追加削除も容易な構成とします。これをまとめたのが前回投稿の開発方針図です(再掲します)。

Development policy
初期設定生成ツール:STM32CubeMXや、評価ボード開発支援ライブラリを活用しテンプレートへ機能追加

MCUのライバル

プレッシャーをかけるつもりはありませんが、競合他社のMCUだけがライバルではありません。

ArduinoコントローラやRaspberry Pi 3などのMPUは、後発の利点を活かし、ソフトウェア/ハードウェア開発が、誰でも早く簡単にできる工夫が施されています。どちらも低価格で開発環境が整います。MCU開発者の方は、是非どちらか試して、MCUに比べ開発の簡単さを実感してください。

MCU Rivals_R1
MCUのライバルは、競合他社だけでなく、ArduinoコントローラやRaspberry Pi 3などもある。

制御系

特徴

開発障壁

ソフトウェア流用性

MCU

低消費電力
アナログ/デジタル周辺機能豊富

高い

低い

Arduino/Genuino

オープンソースハードウェア基板
豊富なシールド基板で機能追加が容易

低い

高い

Raspberry Pi 3 B/B+

OS搭載シングルボードコンピュータ
動画再生や複雑な技術計算も可能

とても低い

高い

最新Arduinoの動きとしては、SonyのSPERSENSEなどがあります。また、Raspberry Pi 3 B+では、コア速度やLAN高速化、PoEなどのIoTに向けた性能向上も図られています。

MCU評価ボードにArduinoコネクタの採用が増えたのは、豊富なシールドハードの簡単追加が目的です。また、ARM CMSISもMCUソフト流用性を高める方策の1つです。

関連投稿:ARM CMSISの目標については、コチラの投稿の、“CMSIS”を参照してください。

CMSIS実用化に伴い、MCUソフトウェア開発者も、個人レベルでソフト資産化と各種ライブラリ活用技術を身につけないと、先行するArduinoやRaspberry Piへ顧客が逃げてしまいます。

逆に、ArduinoやRaspberry Piのソフトウェアやライブラリを積極的にMCUへ流用するアプローチも(簡単にできれば)良いと思います。

いずれにしても、MCUソフトウェア開発は、既存ライブラリや様々な資産をより活用して、開発効率化を上げることが必要でしょう。

マイコンテンプレート活用プロトタイピング開発(1)

Adafruit 1.8 Color TFT Shield with microSD and Joystick
Adafruit 1.8 Color TFT Shield with microSD and Joystick (Source: Adafruit)

前投稿で、プロトタイピング開発に、マイコンテンプレートが適すと説明しました。その理由は、テンプレートの既に出来上がった汎用処理へ、顧客要求機能を追加しさえすれば、早期に顧客ソフトウェア開発がほぼ完成するためです。つまり、顧客仕様の開発に、より集中できるのです。

働き方改革と、今後も増える仕事量、このバランスを開発者が保つには、選択と集中です。
集中すべきは顧客独自仕様、それ以外は既存資産をより流用活用するテクニックを身につけることです。

具体的にこのこと説明するため、今回から数回に分けて、マイコンテンプレートと評価ボードに、上図Arduino SPI接続シールド基板を追加する開発例を使って、プロトタイピング開発にテンプレートが適すことを説明します。

テンプレート活用開発例の前提条件

途中、別内容の投稿もありますので、3カ月程度の期間で7~10件程度のシリーズ投稿を予定しております。

STM32F072RB/Cortex-M0コアを用いますが、STM32FxテンプレートのCortex-M3コア/STM32F103RBでも同様です。また、投稿カテゴリーはSTM32マイコンですが、他マイコンのテンプレートを使用中、検討中の方も参考にしてください。

様々なシールド基板がある中で、SPI接続シールドを選択した理由は、マイコンでも従来のGPIOによるLCD表示から、よりリッチなSPI:Serial Parallel InterfaceによるカラーLCD表示に変わりつつあることが背景です。詳細は、コチラの投稿を参照してください。

Arduino SPI接続シールド基板構成

Adafruitの1.8“カラーTFTシールド(128×160ドット)、microSDカードスロットとジョイスティック搭載基板(3,680円)は、秋月電子から入手できます。

Shield Fabrication Print
3ハードウェア機能を追加するSPIシールド基板 (Source:Adafruit)

このシールド基板は、TFT液晶出力、SDカードのデータ入出力、Joystickでの5SW入力、これら3機能を、マイコン評価ボードArduinoコネクタに装着するだけでハードウェアの追加ができます。

そこで、テンプレートへシールド3機能のソフトウェアを追加していきます。これにより、Joystickのみ、SDカードのみ、あるいは全機能の追加などいろいろなバリエーションの開発例を説明します。

サンプルソフト、レファレンスソフト構成と開発方針

本開発に使えるサンプルソフトや既存ライブラリを一覧にし、開発方針を図示しました。

Development policy
初期設定生成ツール:STM32CubeMXや、評価ボード開発支援ライブラリを活用しテンプレートへ機能追加

Arduinoのシールド基板には、C++ライブラリが付属していますが、これはArduinoでの動作が前提なので、マイコンにはそのまま使えません。

上手いことに開発環境SW4STM32には、使用するArduino SPI接続シールド基板のデモサンプルソフトが付属しています。但し、このデモソフトは、エキスパートが自作したExamples and Demosなので、部分的に機能を切出そうとすると、解析や変更に手間取ります。

せっかく初期設定生成ツール:STM32CubeMXや、評価ボード開発支援ライブラリのBSP:Board Support Packageがあるのですから、これらツールやライブラリを活用しない手は無いでしょう。
そこで、図示したようにデモソフトは、レファレンスとして活用し、極力STM32CubeMXやBSPを使ってエキスパート自作ソフトと同じものを、初心者でも開発できることを開発方針とします。

シリーズ投稿の予定内容

実際に着手しないと投稿内容は確定しませんが、一応の目安として、下記内容の投稿を目標、予定しています。

第1回、シールド基板、サンプルソフト、レファレンスソフト構成と開発方針(←今回の投稿)
第2回、BSP、FatFs、STM32CubeMX、デモソフト、アプリケーションノートなどの活用/流用可能ソフトウェア概要
第3回、Joystick機能のテンプレート追加:Joystickのみ追加希望の方は、ココまでで開発できることを目標にします。
第4回、SDカードリード/ライト機能のテンプレート追加:SDカードのみ追加希望の方は、ココまでで開発できることを目標にします。
第5回、TFT表示機能のテンプレート追加:TFT表示のみ追加希望の方は、ココまでで開発できることを目標にします。
第6回、SPIシールドテンプレート構成:シールド3機能全てを追加する場合のテンプレート構想
第7回、SPIシールドテンプレート開発:シールド基板活用のTipsなどの資料も含むテンプレート化を目指します。

このように、現在のGPIO LCDを使ったテンプレート応用例Baseboardテンプレートに加えて、最終回にはSPIシールドテンプレートとして発売できれば完成です。ご期待ください。

Yano E plus 2018.5にHappyTech掲載

シンクタンクの矢野経済研究所様の月刊誌Yano E pulsの2018.5、注目市場フォーカス:MCU(マイコン)市場の6-7に、弊社HappyTechが掲載されました。MCUの現状、2021年までの市場予測、ベンダー各社動向などがまとめられたレポートです。お近くに冊子がある場合には、ご覧ください。

汎用マイコンかアプリケーション特化マイコンか

大別するとマイコン:MCUには、汎用マイコンとアプリケーション特化マイコンの2種類があります。

弊社は、下記理由から汎用マイコン:General Purpose MCUを主として扱います。

  1. 対象ユーザとマイコンが多い
  2. 低価格で入手性の良い評価ボードが多い → オリジナルハードウェア開発にも役立つ
  3. 無償開発環境:IDEでもマイコンソフトウェア開発ができる
  4. 応用範囲が広い汎用マイコン開発の方が、顧客、開発者双方にとって有益である

汎用マイコンとは何か?に対しては、マイコンベンダ各社サイトのGeneral PurposeのMCUを指します。一方、アプリケーション特化マイコンとは、モータ制御、ワイヤレス制御、5V耐性などが代表的です。

かつては5Vマイコンが普通でしたが、現在は3.3V動作以下です。その結果、5V耐性がアプリケーション特化マイコンにカテゴライズされました。このように、時代や多数派に合わせて汎用の定義は変わります。高度なセキュリティや無線通信が必須のIoTマイコンも、いずれこの汎用マイコンにカテゴライズされると思います。

本投稿は、4番目の理由の追風となる記事を見つけたので紹介します。

汎用マイコンの動向記事

  1. “G”と”L”で考える発展途上の産業エレクトロニクス市場、2018年3月13日、EE Times Japan
  2. 産業FAは「汎用」「多数」の時代に、国産マイコンが変化を支える、2018年2月5日、TechFactory

最初の記事の”G”は、Global、”L”は、Localを意味します。マイコンベンダも、マイコンを使うユーザも、どのマイコンを使うかは暗中模索で混迷しているが、いずれはLocalからGlobalへ移行すると筆者は考察しています。

2の記事は、産業用FAが専用、少量装置から、AI:人工知能を利用した汎用、多数装置の時代に入ったと分析し、ルネサスRZ/AシリーズにAI機能を組込んでこの時代変化に対応すると宣言しています(関連投稿のSTMはコチラ、ルネサスはコチラを参照)。

どちらの記事も、アプリケーション特化マイコンより汎用マイコンの方が、より多く利用されると予想しています。マイコンベンダにとっても、汎用品で大量生産ができ供給コストも下げられます。

お勧めはプロトタイピング開発

FPGAにソフトウェアIPを組込み、より柔軟制御を目指したことや、高分解能ADCマイコンで精密測定などの開発も行いましたが、技術的に得るものは多くても開発時間が予定より長くなり、結局収支は赤字だった経験があります。

パソコンCPUと同様、汎用マイコン処理能力やセンサ能力も半導体製造技術とともに年々向上します。特に処理能力が必要なIoTマイコンは、コア動作速度を上げる、ディアルコアを採用するなど、ここ数年で急激に向上しています(PSoC6は、Cortex-M0+ 100MH動作、Cortex-M4 150MHz動作)。

弊社も今後の組込開発は、汎用マイコンを使い、より早く低コストで装置化する方が、顧客、開発側双方にとって有益だと考えます。開発期間が長いと、その間により高性能マイコンが発売されたりするからです。つまり、プロトタイピング開発をお勧めします。

プロトタイピング開発した装置が仮に能力不足であった場合は、その不足部分のみに改良を加える方がリスクも低く、確実に目的を達成できます。プロトタイピングの意味は、この能力不足部分を明確にし、低コスト低リスクで成功への道筋を探すことも含まれています。

汎用マイコンテンプレート

開発の立ち上げを早くすることがプロトタイプ開発の第1歩です。弊社マイコンテンプレートは、

  • 汎用マイコンの評価ボード上で動作確認済み
  • 複数サンプルソフトウェアをそのまま使った時分割の並列処理可能
  • 開発のつまずきを防ぐ豊富なTips満載のテンプレート説明資料添付

などの特徴があります。汎用マイコンテンプレートを活用し、効率的なプロトタイピング開発ができます。