投稿記事の表示、検索方法

本ブログは、マイコン:MCU関連情報をWordPressというソフトウェアを使って投稿しています。今回は、WordPressブログ投稿記事を効率的に表示、検索する方法を3つ示します。

※WordPressは、ブログサイト制作時に便利なツール。機能追加が容易なプラグインや、外観を簡単に変更できるテーマが多数あるので、カスタマイズも容易で、運営者が投稿のみに専念できる。

カテゴリ選択

各投稿の下には、カテゴリとタグ(キーワード)が表示されています。

投稿カテゴリーとタグ
各投稿の下に表示されるカテゴリーとタグ

カテゴリ選択は、1つのMCU投稿をピックアップして表示する最も簡単な方法です。

例えば、カテゴリのRL78マイコンをクリックすると、日付の新しい順にRL78関連投稿のみが表示されます。PCなどの大画面表示の時は、左端にカテゴリ一覧が表示されるので選択が簡単になります。

PCのカテゴリ表示
MCU毎の投稿を簡単にピックアップできるPCのカテゴリ表示

カテゴリ選択でブログを表示すると、興味のあるMCU投稿がまとまるので便利です。投稿数が多い時は、複数ページに渡りピックアップされます。表示ページ一番下に複数ページへのリンクが表示されます。

複数ページのリンク
カテゴリ投稿数が多い時に表示される複数ページのリンク

ページ番号が大きい、つまり日付の古い投稿は、そのMCUの選択理由や、IDE:統合開発環境インストール方法など最も基本的でMCU開発初期に必要となる情報が記載されています。古い順に読むとより容易にMCU理解が進むかもしれません。

タグ選択

カテゴリとは別に、投稿下にタグと呼ばれる、いわゆるキーワードが示されています。

投稿のタグ(キーワード)
各投稿の下に表示されるタグ(キーワード)

投稿内容で興味が湧いたキーワード(例:リアルタイムOS)がこのタグ内にある場合は、タグをクリックすると、キーワードにより投稿記事がまとめられます。タグ検索は、複数カテゴリに跨った横断的な検索方法です。

自分の興味があるMCUと他社MCU比較などに使うと便利です。

検索窓

ブログ右上にあるSearch:検索窓を使っても投稿の検索ができます。

検索窓
検索窓による投稿記事検索

タグに無いキーワードや、2018年4月など時期を検索窓に入力してクリックすると関連投稿が表示されます。

まとめ

ブログ投稿記事を効率的に表示、検索する方法を3つ示しました。

  1. カテゴリ選択:MCU毎の投稿まとめに最適
  2. タグ選択:キーワードでの横断的な複数MCU比較や理解に適す
  3. 検索窓:タグ以外のキーワードや、投稿時期での検索に適す

本プログは、複数MCUの内容を、時系列で投稿するので、興味ある対象が様々な雑音で読みにくくなる可能性はあります。この場合には、上記3方法で投稿をまとめると読み易くなると思います。

また、手動で関連する投稿を添付する場合もあります(関連投稿を自動選択するWordPressプラグインもありますが使っていません)。

但し、技術者リスク分散の点からは、雑音も耳に入れておくのも良いと思います。どの投稿もチョットした空き時間で読めるように、A4で1~2ページの文章量です。本ブログをご活用いただき、MCU情報整理やプロトタイプ開発に役立つマイコンテンプレートに興味を持っていただければ幸いです。

関連投稿:ルネサスのIDE買収とリスク分散:技術者個人のリスク分散必要性の章参照

Windows 10 1809更新とマイコンIDE

Windows 10 1809更新

Windows 10のRed Stone最後の大型更新RS5 、Windows 10バージョン1809配布が始まりました。

1809更新2方法

Windows Updateで更新

Windows Update更新プログラムのチェックで1809への更新が開始されます。
但し、これは運が良ければの話で、PCの更新準備が整っていても「最新の状態です」が表示され更新を待たされる場合があります。

手動で更新

Windows 10 October 2018 Updateの今すぐアップデートをクリックし、アップデートツールをダウンロードすると、手動で1809更新開始ができます。

1809更新時間と操作

どちらの方法でも、1809プログラムのダウンロードとインストールに1時間、その後、再起動して新しいWindows 10 1809の自動設定に1時間、合計約2時間程度かかります(PCや通信リンク速度によって異なりますので目安です)。

ダウンロードとインストール中は、通常のPC操作やソフトウェア開発は可能です。再起動は、自動的に始まります。
つまり、何らかの操作を行っている場合は、再起動前に終了しなければなりません。

新Windows 10自動設定中は、PC操作はできませんし、操作不要で設定完了します。
つまり、再起動したら1時間は待つしかありません。

Windows 10 1809の各社マイコンIDE動作

ブログ掲載中マイコンIDE(ルネサス:CS+、NXP:LPCXpresso、Cypress:PSoC Creator、STM:SW4STM32)は、私のWindows 10 1809では正常に動作しました。

ルネサスのIDT買収とリスク分散

ルネサスエレクトロニクス(以下ルネサス)が米)IDT買収を発表したことは9月13日投稿済みです。
この買収にはいろいろな憶測が報じられています。これらをまとめ、技術者個人でのリスク分散を考えます。

ルネサスのIDT買収関連記事(2018年9月28日現在)

どの記事もルネサスのIDT買収を、社長兼CEO呉文精氏コメントのように肯定的には捉えていません。むしろリスクの方が大きく、買収が成功するかを危ぶむ声さえあります。

IDT技術のルネサス車載MCUへの応用/流用よりも、むしろNVIDAやインテルなど大手半導体メーカーの自動車半導体市場介入に対する衝突回避/防衛が真の買収目的だ、が各記事の主張です。

私は記事内容から、なぜ回避や防衛ができるのかはイマイチ理解できません。ただ巨大な買収額が、経営的な足かせとなる可能性があることは解ります。半導体業界の巨額買収は、ルネサスに限った話ではありません。

かなり昔、デバイス間通信にIDTの2ポートRAMを使った経験があり便利でした。IDT買収の日の丸MCUメーカー最後の生き残り:ルネサスエレクトロニクスには頑張ってほしいと思います。

技術者個人のリクス分散必要性

動きの激しいMCU半導体製品を使う技術者個人が生き残るには、リスク分散が必要だと思います。

例えば、業務で扱うMCU以外の開発経験を持つのはいかがでしょう。万一の際にも通用する技術を個人で準備しておくのです。その際には、手軽で安価、しかも実践応用もできることが重要です。

弊社マイコンテンプレートは、下記大手4メーカー6品種の汎用MCUに対応中です(各1000円税込)。

  • ルネサス)RL78/G1xテンプレート
  • NXPセミコンダクターズ)LPC8xxテンプレート
  • NXPセミコンダクターズ)LPC111xテンプレート
  • NXPセミコンダクターズ)Kinetis Eテンプレート
  • サイプレス・セミコンダクター)PSoC 4/PSoC 4 BLE/PRoCテンプレート
  • STマイクロエレクトロニクス)STM32Fxテンプレート
    ※各テンプレートに紹介ページあり

テンプレートを使うと新しいMCU開発を実践、習得できます。経験が有るのと無いのとでは雲泥の差です。
リクス分散の1方法としてご検討ください。

MCU統合開発環境の後方互換性検証

MCU統合開発環境は、後方互換が重要です。数年前に開発したプロジェクトを改良・改版する際には、最新の開発環境(IDE)でも開発当時と同じ動作が求められるからです。

ベンダー各社もこの点に留意してIDE改版を行っているハズです。ただ、リリースノートにも具体的な互換性説明などは見当たりません。そこで、MCU最新IDEの後方互換性を検証します。

本稿は、ルネサスエレクトロニクス(以下、ルネサス)の最新IDE:CS+に、弊社2015年開発のRL78/G1xテンプレートプロジェクトを適用し、発生するメッセージなどを示し、開発当時と同じ動作をするかを確認します。もちろん、これはあくまでも一例にすぎませんが、開発中にIDE更新に遭遇した際などの安心材料になれば幸いです。

ルネサス統合開発環境CS+

2018年9月最新ルネサスIDE CS+は、Ver.: V7.00.00(2018/07/20リリース)です。CS+は、業界標準のEclipseベースIDEではなくルネサス独自開発のIDEです。

好都合なことにWindows 10 1803をクリーンインストールしたので、まっさらなWindows 10へ最新CS+をインストールした条件で検証ができます(1803クリーンインストール顛末はコチラを参照)。

CS+ダウンロードサイトでカテゴリ:無償評価版を選び、分割ダウンロードか一括、CS+ for CCかCS+ for CA,CX のどれかのパッケージをダウンロード後、実行すれば必要なツール全てがWindowsへインストールされます。

統合開発環境CS+パッケージ
統合開発環境CS+パッケージ(一括ダウンロードの例)

関連投稿:CS+ for CCとCS+ for CA,CXの違い

既存プロジェクトを新しいCS+で開いた時のメッセージ

以下CS+ for CCの例で示しますが、CS+ for CA,CXでも同じです。

既存のプロジェクトを開く
既存のプロジェクトを開く。BB-RL78G13-64.mtpjをクリック。

CS+ for CCを起動し、既存のプロジェクトを開くでRL78/G1xテンプレートプロジェクトのCC-RLを選択すると、最初に警告メッセージが表示され、出力パネルにその内容、プロジェクト開発当時と新しいCS+での「プロジェクトの差分情報」が表示されます。

既存プロジェクトを開いた時に表示されるメッセージとその内容
既存プロジェクトを開いた時に表示されるメッセージとその内容

※“プロジェクト差分情報”は、新規CS+をインストールした時だけでなく、プロジェクト開発中にCS+更新に遭遇した際にも表示されます。

黒字の “デバイス・ファイルが更新……”は、CS+がサポートするMCUデバイスが増えたために発生します。あまり気にする必要はありません。

青字の “プロジェクト差分情報”は、新しいCS+を用いた結果、既存プロジェクトに生じた差分、影響のことです。

例えば、CS+のCC-RLコンパイラが改良・改版され、開発当時のコンパイル・オプションには無かった [間接参照を1バイト単位で行う] 選択肢が発生し、これに関しては、「いいえ」を選択したことなどが解ります。

これらの選択は、基本的に既存プロジェクトに影響が無い(少ない)方をデフォルトとしてCS+が選びます。このデフォルト選択が、CS+の後方互換を実現している鍵です。

後方互換の検証:プロジェクトビルド成功と評価ボードの動作確認

そのままビルド(B)>ビルド・プロジェクト(B)を実行すると、サブプロジェクトを含め全プロジェクトがリビルドされます。出力パネル青字は警告:Warring、赤字はエラー:Errorを示します。

全プロジェクトビルド結果
全プロジェクトビルド結果

出力パネルに赤字が出るのは問題ですが、青字内容に問題がなければ、新規CS+でもプロジェクトが正常にビルドできたことを示します。

そこで、ターゲット評価ボードへビルド出力をダウンロード、既存プロジェクト開発当時の動作確認ができ、最新CS+で後方互換が検証できました。

CS+の便利機能

ルネサスCS+には、プロジェクトと開発ツールをパックして保存する便利な機能があります。

CS+の便利機能
CS+の便利機能。プロジェクト開発時の環境を丸ごとそのまま保存できる。

この開発ツールとは、使用中の統合開発環境のことで、文字通りプロジェクトとCS+、デバイス・ファイル情報などのプロジェクト開発時の環境を丸ごとそのまま保存し、復元もできます。
但し、当然OS:Windowsまでは保存しなので、年2回の大規模OS更新やWindows 7サービス終了などには開発者自ら対応する必要があります。

後方互換とプロジェクト開発方針

IDEの後方互換は、開発者にとっては当然のことです。ただし、改良・改版された最新コンパイラ性能を、既存プロジェクトで最大限引き出しているかは疑問を持つ方もいるでしょう。個人的には、この点について以下のように考えます。

  • プロジェクト開発時、使用する統合開発環境のコンパイル・オプションは、最適化も含めてデフォルト設定で開発。
  • サイズ優先や速度優先の設定は、開発の最終段階で必要性がある時にのみ最小限設定し、その設定をソースに明記。

例えば、弊社マイコンテンプレートは、1つを除いて全て上記方針で開発しています。除いた1点とは、NXPのLPC8xxテンプレートのLPC810(ROM 4KB/RAM 1KB)の小ROMデバイスの1段最適化のみです。テンプレート(ひな形)の性質上、いろいろなプロジェクトへの適応性が高いのもこの方針の理由です。また、デフォルト設定と最小限設定なので、結果的に最新統合開発環境への後方互換も取りやすいと言えます。

経験上、コンパイル・オプションを操作して開発したトリッキーなプロジェクトは、設計段階(MCU選択やプログラム構成)の失敗だと考えています。個人的には、デフォルト設定で十分余裕(50%程度)がある設計がお勧めです。これを確かめるためにも、プロトタイプ開発は重要だというのが私の考えです。

MCU統合開発環境、後方互換のまとめ

MCU統合開発環境(IDE)とWindows環境の年間メジャー更新スケジュールは下図です(2018年7月9日投稿の再掲)。

主要開発環境の年間更新スケジュール
主要開発環境の年間更新スケジュール

プロジェクト開発中にこれら更新に遭遇することは少なくないでしょう。本稿は、ルネサスCS+を例に最新IDEの後方互換性を確認しました。EclipseベースのIDEでも同様です。まとめると、

  • IDE更新後、最初に既存プロジェクトを開く時の差分情報で、プロジェクトに生じた差分、影響を分析し、後方互換を検証
  • コンパイル・オプションはデフォルト設定が、更新された統合開発環境の後方互換を取りやすい

ことを示しました。

ARMが考えるIoTの3課題と4施策

ARMはMCUコア開発会社ですが、製造はしません。開発したコアのライセンスをMCUメーカーへ供給し、このコアに自社周辺回路を実装し各メーカーがMCUデバイスを製造販売します。コア供給元のARMが考えるIoTの3つの課題記事を紹介します。

ARMの課題と施策

本ブログ掲載MCUでは、NXP、STM、CypressがARMコア、ルネサスがNon ARMコアです。いまやARMコアがMCU世界のデファクトスタンダードです。つまりARMの考えは、MCUメーカー各社に多大な影響を与えると言うことです。

ARMが考えるIoTの課題が、「デバイスの多様性」、「エンドツーエンドセキュリティ」、「データの適切な利用」の3つです。そしてこれら課題に対して、「Cortex」、「Mbed OS」、「Mbed Cloud」、「PSA:Platform Security Architecture」の4つの施策で対応します。
課題と施策の内容は、Arm、IoTプラットフォーム「Arm Mbed Platform」アピールの記事に説明されています。

上記記事で、最も印象に残ったのが、ARM)ディペッシュ・パテル氏の下記コメントです。

「専門知識がないユーザーでも、デバイスメーカーが提供するデバイスを購入して、Mbed OSを使えばすぐに利用できる。重要なことはシンプルであることだ。」

MCU開発者の課題と施策

さて、これらARMの施策に対してエンドポイントMCUソフトウェア開発者である我々の課題と施策は何でしょうか?

ARMの課題「デバイス多様性」や「セキュリティ」には、Cortexコア習熟や、セキュリティ理解などが必要です。また、最近更新が盛んなMbed OS習得も加わるでしょう。

記事記載の市場規模は大きくなっても、開発時間はこれまで以上に短く、また、顧客要求も多様化、複雑化するハズです。

従って、従来のような開発方法よりむしろ、スピード重視のプロトタイピング開発が求められると思います。これには、既存ライブラリやサンプルソフト流用、活用技術を磨く必要があるでしょう。前々から言われるソフトウェアの部品化開発手法です。

流用する中身に多少不明な点があっても気にすることはありません。パテル氏コメントの「シンプルであること」を常に念頭に置きながら開発を進めることが重要です。シンプルであれば、様々な状況変化へも対応できます。開発が終わった時に振り返ると、不明内容はおぼろげながら見えるものです。

具体的な手段

弊社は、プロトタイピング開発への具体的な実現手段として、ARMコアのNXP、STM、Cypress各社、およびNon ARMコアのルネサスに対してマイコンテンプレートを提供中です。テンプレートと評価ボードを使えば、早期開発着手と汎用開発部分の使いまわしも簡単で、プロトタイピング開発に最適です。

汎用処理が出来上がったテンプレートへ、顧客要求実現の開発部分を組込めばソフトウェア全体がほぼ仕上がる仕組みです。

また、Mbed OSの仲間であるFreeRTOSを例に、マイコンRTOS習得ページもテンプレートサイトに掲載しております。ご活用ください。

IoTデバイス向け高速軽量改ざん検出技術

NECが、IoTデバイス向け軽量改ざん検出技術を開発しました。以下の特徴があります。

  1. 機器動作に影響を与えない⾼速改ざん検知(2KB実装サイズ機能を、約6msecで検査)
  2. 改ざん検知機能⾃体の保護と軽量実装の両⽴(Cortex-M23/33のTrustZone活用、4KB以内で実装)

TrustZoneのSecure World

セキュリティ強化のARMv8-MプロセッサCortex-M23とCortex-M33には、TrustZoneと呼ぶメモリ保護領域:Secure Worldの作成機能があります。このSecure Worldがあることが前提条件です。

2KBサイズ機能を6msecで検査できるのは、検査領域の絞り込みと実行コードのみのシンプルな監視方法のためで、遅延がゆるされない搬送ロボットなどのIoT機器にも適用できるそうです。

高速改ざん検出(出典:NECサイト)
高速改ざん検出。2KB実装サイズ機能を、約6msecで検査可能。(出典:NECサイト)

Secure World内へ、改ざん検出機能、ホワイトリスト、サーバ通知機能合わせて4KB以内に実装できるので、メモリ容量が少ないIoT機器にも適用できるそうです。

改ざん検知機能⾃体の保護と軽量実装(出典:NECサイト)
改ざん検知機能⾃体の保護と軽量実装。改ざん検出機能、ホワイトリスト、サーバ通知機能合わせて4KB以内に実装できる。(出典:NECサイト)

高速かつ軽量のため、低電力消費で24時間監視とリアルタイム改ざん検出の結果、IoT機器の信頼性を高めることができます。

ARM Cortex-M23/33のTrustZoneを活かしたセキュリティ強化機能です。検査機能限定の実装方法などは、全てのMCUソフトウェア開発へも応用できます。

Secure World領域があってこその技術ですが、TrustZone無しのCortex-M0/M0+/M3へも使えれば嬉しいです。Intelは、古いCPU向けのSpectre対策パッチは提供しないそうですが、既に稼働済みのCortex-M0/M0+/M3機器に向けて、せめてものセキュリティ強化策として使えるかもしれません。

関連投稿

ARM Cortex-M23の特徴

Eclipse IDEベース統合開発環境のプロジェクトImport、Renameの方法

統合開発環境のデファクトスタンダードがEclipse IDE。本ブログ対象ベンダのNXP)MCUXpresso IDE、ルネサス)e2studio、Cypress)PSoC Creator、STM)SW4STM32など全てこのEclipse IDEをベースとした統合開発環境です。

ベンダやマイコンが変わっても殆ど同じ操作でエディットやデバッグができるので、慣れが早く、本来のソフトウェア開発に集中できます。但し、オープンソース開発なので、毎年機能追加や変更があり、2018年は6月にバージョン4.8、コードネームPhoton(光子の意味)への改版が予定されています。

本投稿は、2017年版Eclipse IDEバージョン4.7、Oxygenベースの各社IDEプロジェクトインポート、リネームの方法を説明します。
弊社マイコンテンプレートを使ってソフトウェア開発をする時、これらの操作を知っているとテンプレート:ひな型活用のプロジェクト開発がより簡単です。

IDEの例としてSW4STM32を用います。IDEは、Workspace:ワークスペースと呼ぶフォルダ単位で機能します。ワークスペース内には複数プロジェクトが存在でき、2重起動ができます。

プロジェクトImport

マイコンテンプレートは、テンプレートの具体的な応用例にシンプルテンプレートプロジェクトやBaseboardテンプレートプロジェクトをArchives形式で提供します。Archives形式は、配布に都合が良くEclipse IDEの標準方法ですので、IDEダイアログに従って操作すれば「複数の方法」でプロジェクトインポートができます。

このArchiveプロジェクトの「最も簡単」なワークスペースへのインポート方法が下記です。

  • Windowsで、Archiveを適当な場所で解凍 → 事前に作成したIDEワークスペースへ解凍フォルダ毎コピー
  • IDEで、File>Import>General>Existing Projects into Workspace実行 → インポートProjects選択
Import Existing Projects into Workspace
Import Existing Projects into Workspace。プロジェクトをインポートする方法は、マルチプラットフォーム対応のEclipse IDEの場合、複数ある。

IDEで直接Archivesプロジェクトを解凍しワークスペースへインポートすることもできますが、フォルダ選択などのダイアログ操作は面倒です。マルチプラットフォーム対応のEclipse IDEたるゆえんですが、WindowsかmacOSの上で使うのであれば、この方法が簡単です。

プロジェクト名Rename

※Rename後、Renameプロジェクトの再ビルドが失敗する場合があります。Rename前に、ワークスペース毎バックアップするなどの事前対策を実施後、Renameを実行してください。

ワークスペースに複数プロジェクトが存在するには、別々のプロジェクト名が必要です。例えば、シンプルテンプレートを使って開発したプロジェクトが既にあるワークスペースへ、もう一度シンプルテンプレートを使って新たなプロジェクトを追加作成する場合を考えます。

開発したプロジェクト名は、SimpleTemplateのままです。これをRenameしないと新たにシンプルテンプレートをインポートできません。この時は、開発したプロジェクト選択後、右ボタンクリックで表示されるメニューからRenameを選択し、別プロジェクト名に変更します。

Rename Project Name
Rename Project Name。元々のEclipse IDE守備範囲外のファイル名は、手動リネームが必要。

注意点は、この操作でプロジェクト名変更をIDEは認識しますが、IDE以外のツールで作成したファイル名などは、そのままとなる点です。図はSTM)SW4STM32の場合です。Debugフィルダ下の.cfg/ioc/pdf/txtの4ファイルがそれらです。これらファイルは、手動でのRenameが必要です。これを怠るとRenameしたプロジェクトの再ビルドやデバッグが失敗します。

これら手動Renameが必要なファイルは、各社のAPI生成ツールなどに関連したファイルで、他社IDEでも同様です。元々のEclipse IDE守備範囲外のこれらファイルは、プロジェクト名Rename時、手動Renameが必要ですので注意してください。

Rename後、再ビルドが成功することを確認してください。再ビルドが失敗する場合には、プロジェクトフォルダ毎コピー&ペーストを実行し、ペースト時にRenameしたい別プロジェクト名を設定する方法でRenameを試してください。

別プロジェクトファイルのコピー、ペースト

別プロジェクトファイルを当該プロジェクトへコピー、ペーストする方法は、同じワークスペース内であれば簡単です。ファイル選択後、コピー:Ctrl+Cとペースト:Ctrl+Vでできます。

ワークスペースが異なる場合は、IDEの2重起動を使うとファイル選択ミスがありません。

IDEは、起動中でももう1つ同時起動が可能です。IDE起動時に、異なるワークスペース選択をすれば、コピー対象プロジェクトのファイルをIDEで目視しながら選択できます。もちろん、Windowsエクスプローラでファイルを直接選択しペーストも可能ですが、普段IDEで見慣れたファイル表示で選択する方がミスは少ないです。同一ファイル名の上書き前の確認も行います。

エクスプローラでファイル表示をすると、普段IDEで見慣れないファイルなども見られます。これらが選択のミスを生みます。IDEは、必要最低限のファイルのみ表示しているのです。

IDE画面のリセット

デバッグやコンソールなど複数Perspectiveを表示するIDE画面は、時に隠したPerspectiveを表示したくなります。PerspectiveをIDE初期状態に戻すのが、Window>Perspective>Reset Perspectiveです。

Reset Window Perspective
Reset Window Perspective。IDEの初期状態ウインド表示に簡単に戻せる。

この方法を知っていると、使わないPerspectiveを気軽に非表示にできるので、画面の有効活用ができます。

まとめ

Eclipse IDEベースの各社開発環境で知っていると便利な使い方をまとめます。

  • プロジェクトインポート:IDEのExisting Projects into Workspaceを使うと簡単
  • プロジェクト名リネーム:自動リネームはEclipse IDE関連のみ。API生成ツール関連ファイルは手動リネーム要。
  • 別プロジェクトファイルのコピー&ペースト:IDE2重起動を使い、ファイル選択ミスを防ぐ
  • IDE画面リセット:利用頻度の低いPerspectiveを非表示にし、画面有効活用
Eclipse Base IDE Project Import and Rename
Eclipse Base IDE Project Import and Rename

マイコンテンプレート活用の最初の段階が、テンプレートプロジェクトのワークスペースへのインポートです。これらインポートしたテンプレートへ変更を加え、開発プロジェクトにします。

この開発プロジェクト名をリネームし、同じワークスペースへ、再びテンプレートプロジェクトをインポートします。ワークスペース内は、リネームした色々な既成開発プロジェクトから成り、様々なプロトタイピング開発へも応用できるでしょう。

ワークスペースが異なるファイル操作には、IDE2重起動でファイル選択のミスを防ぎます。

これらのTipsを知っていれば、既存資産を流用、活用し、本来のソフトウェアに集中しミスなくプロトタイピング開発ができます。

マイコンソフト開発の基礎知識と初心者、中級者向け開発方法(最終回)

前回までで初心者、中級者向けマイコンソフトの基礎知識と開発方法に、俯瞰視野でサンプルソフトを選び、サンプルソフト初期設定とループ内処理をライブラリとして評価ボードで動作確認しながら開発するサンプルソフトファーストの方法を述べました。

この方法は、サンプルソフトをジグソーパズルのピースとし、各ピースを弊社マイコンテンプレートへ入れさえすれば開発できるので、楽しくラクにマイコンソフトウェア開発ができます。

サンプルソフトを組合せるマイコンソフトウェア開発
サンプルソフトを組合せるマイコンソフトウェア開発

日本人は、サンプルソフトのコメントや概要記述の英語が苦手です。最終回は、ソフトウェアに使われる英語、特にサンプルソフト英語の扱い方を示し、本開発方法を総括します。

マイコンサンプルソフトの英語コメントは重要

初期設定+無限ループ内の1周辺回路制御という構造:フォーマットが決まっているマイコンサンプルソフトは、英語圏開発者によるものが殆どです。

彼ら彼女らにとって母国語英語ベースのC言語サンプルソフトは、ソースコードだけでも理解に支障はありません。また、関数をモニタ1画面(80字x 25行)以内の行数で記述する傾向もあります。ページスクロールせずに関数全体が見渡せるからです。

C関数の行数
C関数の行数

このような英語圏開発者があえて追記するコメントは、重要事項のみです。数行にまたがるコメントならなおさらです。つまり、なぜコメントしているかを理解することが大切です。といってもソースコードのコメント英語は、解り難いのも事実です。

英語コメントはブラウザ翻訳で日本語化

ブラウザアドレス窓に「翻訳」と入力すると、ブラウザ上で翻訳ができます。長い数行の英文でも瞬時に日本語になります。

ブラウザ翻訳
ブラウザ翻訳

サンプルソフトの英語コメントが解り難い時は、ブラウザ翻訳を使い日本語で読むと内容理解に効果的です。

マイコンソフト開発の基礎知識と初心者、中級者向け開発方法(総括)

従来のマイコンソフトウェア開発は、マイコンデータシートなど理解が先、次に理解した情報のプログラミングという順番でした。この方法は正攻法ですが、初心者、中級開発者には、限られた開発期間で理解対象が多いため開発障壁が高く、プログラミングの時間も相対的に短くなります。

マイコン応用製品の早期開発には、プログラミングを先にする方法へ見直すことが必要です。

それには、初心者、中級開発者が元々持つ俯瞰視野とサンプルソフト、ライブラリ、評価ボード、ブラウザ翻訳などの既存資産を上手く利用すれば良いのです。Arduinoシールドを使えば評価ボードへの機能追加も簡単で、製品版に近い開発環境でのプログラミングも可能です。

本投稿は、初心者、中級者向けのマイコンソフト開発の基礎知識として、サンプルソフト資産が多数あること、多くのサンプルの中から対象を絞り、一種のライブラリとして動作確認しながらソフト開発をするサンプルソフトファーストの方法を示しました。

IoT時代は、RTOSやセキュリティ知識など、より多くの情報を取り込んだマイコンソフトウェア開発になります。個々の情報の相対的な重要性さえ理解していれば、情報内容の理解よりも開発するソフトウェアへ組込む能力の比重が、ますます高まるでしょう。

開発者がこだわるべきは、短い期間内で開発するソフトウェア出力です。情報理解は、開発後でもOKです。

マイコンソフト開発の基礎知識と初心者、中級者向け開発方法(第2回)

第1回では、初心者、中級者はデータシートから開発着手せず、元々持っている俯瞰視野を忘れずにマイコンソフト開発をすることが重要だと述べました。
今回は初めにまとめを示し、次にその経緯や理由を説明、どうすれば初心者中級開発者が俯瞰視野でソフト開発できるかを示します。

第2回マイコンソフト開発の基礎知識と初心者、中級者向け開発方法のまとめ

  • サンプルソフトファースト:典型的な使用例、解り易さ重視、ソフトウエア開発立場のサンプルソフトから開発着手
  • サンプルソフトは、タイトルや概要のみを読み周辺回路の要求仕様に近いものを選ぶ
  • 開発の致命的ミスを避けるため、選定サンプルソフトから使用マイコンを再評価
  • サンプルソフト処理理解より、初期設定と無限ループ内処理の記述場所でライブラリとしての流用性を重視
  • ライブラリをマイコン評価ボードで動作確認後、要求仕様へカスタマイズ
  • 選出した複数サンプルソフトを、組み合わせて1パッケージ化できるツールあり

サンプルソフトファースト

マイコンソフトウエア開発は、ソフトウエア以外にもハードウエア、半導体など多くのことを理解した上で開発するのがBestです。しかし、限られた開発期間で全てを理解するのは、対象が多くしかも広すぎるため困難です。そこで、初心者、中級者がゴール(=開発完了)を目指すのに「必要最低限」な対象のみに絞り、ゴールインできるBetterな方法がサンプルソフトファーストです。

必要最低限の対象に絞る時に使うのが、マイコンのサンプルソフト(ベンダによってはアプリケーションノート、Code Examplesとも呼ぶ)です。サンプルソフトは、そのマイコンの「典型的な使用例」を「解り易さ重視」で「ソフトウエア開発の立場」から示す資料です。

「典型的な使用例」「解り易さ重視」「ソフトウエア開発の立場」で作られ、実際に動作するサンプルソフトを、一種のライブラリとして開発に使うのが本方法の骨子です。

マイコンソフトウエア開発対象の4分類

マイコンソフト開発を、制御する対象で4つに分類し、初心者、中級者がサンプルソフトを探すべき順位付けをしたのが下表です。

マイコンソフトウエア開発対象の4分類
分類(検索順位) 概要 対象例
周辺回路(1 マイコンソフト開発の基本中の基本。
周辺回路毎にサンプルソフト多数あり。
GPIO、ADCなど
通信(2 有線通信のサンプルソフト多数あり。
IoT無線通信プロトコルは、未確定。
USART、BLE、Threadなど
RTOS(3 複数タスクのリアルタイム処理に不可欠。
IoTマイコンには必須になる可能性大。
FreeRTOS、mbed OSなど
セキュリティ(4 IoT端末に不可欠。
処理内容は専門家任せでOK。
暗号化、セキィリティICなど

周辺回路は、GPIOやADCなどマイコン内蔵ハードウエアのことです。通信も周辺回路の1つですが、通信相手や有線/無線などにより制御ソフトがかなり変わり複雑度も増しますので、別項目として抜き出しています。また、IoT端末の場合には、BLE: Bluetooth Low EnergyやThreadなどのプロトコル候補がありますが、現状は未確定です。

RTOSやセキュリティも現状マイコンでは開発対象にはなりませんが、IoTが普及する頃には大きな対象になります。

巷にはセキュリティやIoT無線通信の情報が溢れていますが、当面は不要です。周辺回路(1)と有線通信(2)のみを検索すれば、現状のマイコンソフト開発には十分です。これで、探す対象が半分になりました。

サンプルソフト選定

マイコンには多くの周辺回路が実装済みです。しかし、各回路は独立していて、使う回路のみのソフトを開発すればOKです。周辺回路毎に、多くの典型的使用例、サンプルソフトがあります。

サンプルソフトには、内容概要を説明するタイトルや記述が必ずあります。この「タイトルや概要のみを読んで」要求された開発に使えそうか否かを判断します。判断の正確さに拘る必要はありません。気楽に、面白そうだと思ったサンプルソフトでも良いので、何個かピックアップします。

サンプルソフトに要求仕様の「一部しか含まれていないものでもOK」です。最後に示す、複数のサンプルソフトを組合せて1つにできるツールがあるからです。

概要やサンプルソフトのコメントが英語表記の場合も多いです。この場合は、第3回で示す英語対応方法を参考に対応してください。ここでは、全て日本語表記として続けます。

多くのサンプルソフトの中から、タイトルや概要のみで利用可否を判断するのは、日本語ですので簡単です。この操作で、内容まで目を通すサンプルソフトの対象数は、激減します。

ルネサスのIDE CS+で示されるアプリケーションノート例が下図です。

ルネサスCS+のサンプルソフトタイトル検索例
ルネサスのCS+サンプルソフトタイトル検索例

周辺回路の中で難易度が高いのは通信です。他と同様にサンプルソフトを選んでも良いですが、後回しでもOKです。周辺回路のサンプルソフト内に通信が含まれることも多いからです。さらに、通信は周辺回路の出力通知や遠隔制御に使うことも多いので、まずは周辺回路を開発した後でOKです。

重要なのは、「サンプルソフトの選出にも俯瞰視野を使う」ことです。いきなり細部へ入らず、常に俯瞰視野から多くの情報をふるいにかけ、その後で次ステップへ進むようにしましょう。

選出サンプルソフトから判る、開発仕様とマイコンのマッチング

サンプルソフトは、典型的な使用例です。もし、開発の要求仕様が、部分的にでもサンプルソフトに含まれない時は、サンプルの選び方が間違っているか、または仕様そのものの難易度が高いと言うことです。

もしかしたら、開発に使うマイコン選定ミスの可能性もあります。半導体ベンダは、様々なマイコンを発売しています。仕様に合うマイコンを使うのが開発の第1歩です。マイコン選定ミスは致命的です。

このように、サンプルソフトの概要だけでも要求仕様とマイコンのマッチングの良さ、悪さは判ります。ここでは、マッチングは良い、つまり開発見込みがあるマイコンを選定済みとして続けます。

※残念ながら既定方針で使用マイコンが決まっており、これで仕様を満たすものを開発する例も多くあります。しかし、仕様に近いサンプルソフトが無いということは、開発リスクが高いということです。
同一ベンダから汎用/専用など多くのマイコン機種を提供中なのは、開発リスクを下げるためです。選出したサンプルソフトからマイコン選定を再評価するのは良い方法です。

サンプルソフトはフォーマットから読み(見て)ライブラリとして活用

解り易さ重視のサンプルソフトは、構造にフォーマットがあります。周辺回路の「初期設定」と「無限ループ内での周辺回路制御」です。

初期設定で周辺回路の動作、割込みかポーリングかなどが変わります。サンプルソフトは、初期設定とループ内制御の2つに分けて読み(見)ます。初期設定は、周辺回路の使い方が同じなら、そのまま流用できます。

ループ内制御は、割込みの場合は、割込みサービスルーティン:ISRがそのまま流用できます。ISRで起動されるルーティンと、ポーリング処理は、簡単に理解していれば十分です。

つまり、サンプルソフトの処理理解よりも、処理がある場所で、自分の開発出力への流用性を読む(見る)のです。自分の開発に使えるものは、そのままサンプルソフトをライブラリとして使います。解り易さ重視で作ったサンプルソフトなので、ライブラリとしても使えます。

サンプルソフト抽出ライブラリを評価ボードで動作確認後カスタマイズ

サンプルソフトから抜き出したライブラリで本当に動くかを確かめるため、マイコン評価ボードで実際に動作させ確認します。マイコンは動けば開発は楽しくなります。

サンプルソフトとマイコン評価ボードは、ラクに楽しくマイコン開発を行う必須ツールです。

評価ボードでマイコンを動かし、もしも要求仕様と異なる箇所があれば、その箇所のみカスタマイズするのが初心者、中級者開発者向けにお勧めです。このカスタイマイズ時に、初めてデータシートを参照すれば良いのです。マイコンは動作し始めるまでに手間が掛かります。動作立上げを早くすれば、ラクに開発できます。

※サンプルソフトが提供する機能が要求仕様の一部のみの場合でも、複数のサンプルソフト機能を簡単に組み合わせることができる弊社マイコンテンプレートなどのツールがあります。

つまり、サンプルソフトライブラリを活用しジグソーパズルを組むような感覚でマイコンソフトウエア開発ができます。

2018マイコンベンダ最新ニュース

弊社マイコンテンプレートで扱っております主要マイコンベンダ、NXP、ルネサス、STマイクロエレクトロニクス、Cypress各社の2018最新ニュースとRTOS関連ニュースの中から、ブログ対象MCU関連の情報をピックアップしました。

NXP

MCUXpresso IDEの新バージョン10.1.1_606がリリースされました。また、LPC8xx向けのLPCOpenライブラリv3.02もリリースされましたが、リリースノートを見てもv3.01のバグ解消は未処理のようです。

そのためか、MCUXpresso IDE v10.1.1付属LPCOpenライブラリもv2.19のままで、v3.02添付はありません。近いうちにv3.02の動作を調査する予定です。

ルネサス

インターシル社と完全統合した新生ルネサス誕生(2018年1月1日)。アナログ関連で高いスキルを持つ旧インターシル技術がRL78マイコンへも導入されそうな気配があります。Cortex-M0/M0+コアとの競争に生き残るには、汎用RL78マイコンのアナログ強化、センサ内蔵が方策なのでしょう。

但し、開発環境CS+の先行きには不安要素もあります。6月末提供予定のe2 studioのAI利用無償プラグインはRL78もカバーされますが、果たしてCS+でも同機能がサポートされるのかが気掛かりです。

e2 studio新プラグイン
e2 studio新プラグイン(記事より)

STマイクロエレクトロニクス

既にEWARM、MDK-ARM、TrueSTUDIO、SW4STM32の4種IDEをSTM32マイコン向けに提供中のSTMが、TrueSTUDIOの開発元スウェーデンのAtollic社を買収しました。

現状のEclipseベースTrueSTUDIO無償版もコードサイズ制限はなく、弊社使用中のSW4STM32無償版サイズ制限なしと機能的には同じです。このTrueSTUDIOとSW4STM32を比較し、なぜAtollicを買収したのかを探りたいと思います。

Cypress

最新マイコン評価ボードで紹介しましたCY8CKIT-062-BLE PSoC 6 BLE Pioneer Kitが、サイプレスサイトからも購入できるようになりました。また、サンプルソフト(Code Examples)も豊富に提供されています。

E-ink液晶を使ったArduinoシールドは、汎用性が高そうなので興味を惹かれます。

RTOS

mbed OS 5の新しいバージョンMbed OS 5.7.2 がリリースされました。Amazon FreeRTOSなど、MCU用RTOSの普及も2018年のトレンドになりそうです。

まとめ

2017年の半導体ベンダランキング(速報値)が発表されました。NXPは第10位(前年9位)です。2016年MCUランキングは、NXP>ルネサス>STM>Cypressの順でした。NXPとルネサスがMCUシェアの1/3を占めるのは、今年も変わらないかもしれません。

例年に比べ2018年はMCU各社の動きが早いように感じます。EVや自動運転、コネクテッドカーがMCU開発の動きに拍車をかけているのは間違いと思います。

新たな動向としては、ソフトウエア開発環境の整備です。数億、数十億個とも言われるIoTマイコン時代では、現状のようにオーダーメイドでのソフト開発では時間が掛かりすぎます。より高速で効率的なソフトウエア開発ツールやライブラリ活用術が求められるような気がします。