マイコンテンプレートのサイト立上げのお知らせ

マイコンテンプレート関連の情報を、1ページにまとめた専用サイトを2つ立上げました。

ブログは、マイコンテンプレートの開発情報や開発経緯、Tipsなどを時系列で記載します。
ブログを最後まで読んでいただく手間を省くため、重要内容を抽出し再編しました。
紆余曲折の検討結果が、最新版テンプレートの状況になり、専用サイトにまとめられたと考えてください。

マイコンテンプレートサイト

マイコンテンプレート専用サイト
マイコンテンプレート専用サイト

記載マイコンテンプレートは、下記です。

  • Cortex-M0/LPC111xテンプレート
  • Cortex-M0+/LPC8xxテンプレート
  • S2/S3コア RL78/G1xテンプレート
  • Cortex-M0+/Kinetis Eテンプレート

サイトの「もくじ」をクリックすると、記載位置へジャンプします。スマホなどの小さい画面でも観やすいように、解像度の高いテンプレート動作中写真も掲載しております。

アプリケーション開発手順サイト

マイコンアプリケーション開発手順サイト
マイコンアプリケーション開発手順サイト

マイコンアプリケーションの開発手順を1ページにまとめました。
マイコンテンプレートを使ってアプリを開発する時の、10手順と、2補足を掲載しています。

IoT向けの無償ARMマイコンOS

弊社、販売中のLPC8xxテンプレートLPC111xテンプレートのライバルが、ARMから無償提供されます。ARM mbedの組込みOS「mbed OS」がそれです。

mbed OSとは

mbed OSに関する記事、「ARMがIoT向けにOSを無償提供開始」と、「ARMは「mbed」フラットフォームでIoT時代を実現させる」によると、ARM社が提供し(つまり、CMSISのOS版になるかも…)、

Cortex-M0/M0+向け、モジュラー構成で必要に応じて選択組込み可能、セキュリティ機能あり、イベントドリブン型OS、mbed Device Server(こちらは有償)との通信によりクラウドサービス利用可能、現在はα版で2015年10月に正式版の予定、NXP/freescaleなどのmbedベンダも参加、オープンソース開発、などなどIoTデバイス開発コスト低減化に効果あり。

かなり強力ライバルです(勝手にライバル視しましたが、ARM社様、ご容赦を…)。今後、ウオッチを続けたいと思います。

組込みマイコンのマルチタスク化

確かに組込みマイコンに多くの機能を実装する時、OSがあれば楽だと思うことがしばしばあります。Windowsデスクトップアプリ開発などを経験すると、より一層感じられることで、IoT時代のマイコンにはmbed OSなどの組込みOSが、必須プラットフォームになるでしょう。

ただ、OSを利用しようとすると、それなりの基礎知識が必要になります。有名な組込みマイコンOS:FreeRTOSなども、使い始めのステップが結構高く、大規模/多人数ソフト開発なら便利でしょうが、普段使いには躊躇します。

さらに、ベンダや機種毎に異なる基礎知識、商用Windowsの例では、OS更新時の手間など、実アプリ開発着手の前段階、メンテで労力を使い果たしてしまいます。これらに関しては、mbed OSで統一されれば、明るい見通しはあります。

マイコンテンプレートの市場

そんな背景で開発したのが、マイコンテンプレートです。簡易マルチタスク化、デバッグ容易、サンプルソフト流用得意、などの特徴があります。イメージ的には、以下の範囲での適用が市場です。

テンプレート市場と対応マイコン
テンプレート市場と対応マイコン

先の記事に、ARM mbedとIntel市場の違いをKris Flautner氏が説明されていましたが、(勝手に無断)引用させて頂くと「mbed OSは非常にハイエンドのモノで、それに対して弊社テンプレートがフォーカスするのは、無償IDEで開発できるプログラムサイズの低価格な組込みマイコンの市場。両者は全く異なる。」と言えます。

販売中のテンプレートの骨格説明と、一覧はコチラをご覧ください。

RL78/G1xテンプレートVersion3販売

RL78/G13とRL78/G14の習得、アプリ早期開発に使えるテンプレートがVersion3に進化しました。販売価格は、従来版と同じ1000円(税込)です。

RL78/G1xテンプレートVer3(第3版)の特徴

Ver3は、テンプレート動作環境を、「4種CPUボードとRL78/G1x開発推薦ボードの2種類」とし、CPUボードには、「シンプルテンプレート」を、推薦開発ボードには、「メニュードリブンテンプレート」を適用したものをセットで販売します。

テンプレート適用例を、CPUボード実装ハードのみを動作させるシンプルなテンプレート適用例と、RL78/G1x開発推薦ボードへ、組込み機能をほぼ全て盛込み、UARTメニューで処理選択できるメニュードリブンテンプレートの2例を示すことで、Ver2に比べ、よりテンプレート動作が解りやすくなり、テンプレート機能の応用、流用が簡単になりました。

RL78/G1xテンプレート対応ボード一覧

Ver3対応ボード 名称 ボード実装制御ハード
CPUボード RL78/G13 Promotion Board LED
RL78/G14 Promotion Board LED x2, SW
QB-R5F100LE-TB LED x2, SW
QB-R5F104LE-TB LED x2, SW
推薦開発ボード BlueBoard-RL78/G13_64 LED, トリマ, SW, ブザー, LCD, UART, など

 

テンプレート説明資料

テンプレート説明資料のP1とP2を示します。

テンプレート説明資料P1
テンプレート説明資料P1
テンプレート説明資料P2
テンプレート説明資料P2

説明資料には、もくじの内容を記載しております。これもVer1/2のご購入者様のご意見、ご質問などの内容から、解りにくい箇所を加筆修正し、より解りやすくブラッシュアップいたしました。

本テンプレートが、皆様のRL78/G1xマイコン習得、アプリケーションの早期開発や評価のお役に立てれば幸いです。

購⼊ご希望の⽅は、メール(宛先:info@happytech.jp)にてお知らせください。銀⾏振込⼝座を返信いたしますので、この⼝座へ代⾦の1000円(税込)を振込でください。振込確認後、本テンプレートVer3⼀式(4種CPUボード別のシンプルテンプレート + 推薦開発ボードのメニュードリブンテンプレート + テンプレート解説全ページ、ZIP圧縮合計約3MB)をメールにてお送りします。

CubeSuite+が2つのCS+へ分離

10月1日発行のRunesas Tool Newsによると、CubeSuite+が、新しい製品名CS+になり、バージョンがV3.00.00となりました。同時に各種ツールもバージョンアップされましたので、マイナーチェンジではなく、フルモデルチェンジ相当の変更です。

この新CS+で販売中のRL78/G1xテンプレート動作の確認を行い、問題なく動作しました。また、これを機にテンプレートの動作環境を見直し、従来の「市販CPUボード4種+ブレッドボードに外付けハード」から、「推薦評価ボードと市販CPUボード4種」の構成に変更します。

新CS+の構成

CS+は、78K、RL78、V850開発用の「CS+ for CA, CX」と、RX、RH850開発用の「CS+ for CC」の2つのIDEに分割されました。アップデートは、旧CubeSuite+のアップデート・マネジャで行えますが、RL78開発をする方は、「CS+ for CA, CX」のみをUp対象にし、使わないRXやRH850用のツールは、統合アンインストーラで削除すると、より少ないディスク容量で環境構築ができます。

ニュースには様々な変更内容が記載されていますが、私はCS+ for CA, CXが、旧CubeSuite+と同じに見えました。IDEの2分割と既知の問題修正で、新バージョンの3にしたと思います。対応マイコン種類が増えたので小回りが利くように分割し、今後は、各IDEで個々にUpする方針だと推測します。

新CS+での動作確認

前回Up時に発生したコード生成パラメタが新環境へ引継がれないという不具合もなく、Win7/8.1ともに、あっさりと新CS+ for CA, CXを使ってコード生成→プロジェクト再ビルド→ダウンロード→実行確認に成功しました。

但し、CS+起動時、セキュリティソフト(Avast)が無用なファイル解析をしてCS+の起動が遅くなるのは、私の環境だけの問題でしょうが…。

RL78/G1xテンプレートの動作環境

これまでは評価ボード:RL78/G13 Promotion Board(RL78/G13スタータキット)にLEDやSW、LCDなどをブレッドボードで外付けし、動作環境を作っていました。この方法は、テンプレート購入者様がブレッドボードにハードを追加する手間が必要で、結線ミスなどが発生することがありました。

この手間を省くため、LPC111xやLPC8xxテンプレートでは、評価ボードとLCD等が実装済みのBaseBoardを使い、極力配線なしでテンプレート動作環境を構築しました。

RL78/G1xテンプレートでもRL78/G13推薦評価ボードをテンプレートの主動作環境とします。そして、RL78/G13 Promotion Board、RL78/G14 Promotion Board、QB-R5F100LE-TB、QB-R5F104LE-TBの4種CPUボードは、ボード実装のLEDを1秒毎に点滅させるシンプル動作のテンプレートを実装します。

つまり、RL78/G13推薦評価ボード:BlueBoard-RL78/G13_64に色々な機能を追加したメニュードリブンテンプレートを、それ以外のCPUボードはシンプルテンプレートを適用したものをパッケージ化し、これをRL78/G1xテンプレートVersion 3(第3版)とします。

BlueBoard-RL78/G13_64は3800円ですので、CPUボードにLCDやSW、UARTドライブなどをブレッドボードで追加するよりも安価にテンプレート動作環境が構築できます。

既にRL78/G1xテンプレート第2版をご購入済みの皆様は、第2版のBlueBoard-RL78/G13_64サブプロジェクトは、第3版と同じです。その他CPUボード対応のサブプロジェクトが、LEDの1秒点滅のみに変更(簡易化、単にLEDドライバのみ実装に変更)されたと考えて頂ければ間違いありません。近日中に、RL78/G1xテンプレート第3版発売を発表する予定です。

マイコンと無線モジュールの接続速度

トラ技2014年3月号の特集で、マイコンとスマホを接続する2つの方法が解説されています。USBで直接接続する方法と、無線モジュールで接続する方法です。今回は、この無線モジュールでスマホと接続する時の「マイコンシリアルポートの接続速度」について考察します。但し、スマホ側は、既に対応アプリが完成していると仮定します。

マイコンとスマホの接続2方法比較

Android端末とマイコンをUSB経由で接続する時には、マイコン側にアンドロイド・アクセサリ通信プロトコルを実装する必要があります。ルネサスのアプリケーションノートR01AN1965JJ0100にも詳細な解説がありますが、大変そうです。

一方、無線接続は、Wi-Fi/Bluetoothモジュールを、UARTのTXD/RXDと3.3V/GNDの4本を接続すればマイコン基板が動作するので、USB経由よりは簡単です。大変なスマホとの通信処理は、無線モジュールが代行するので、マイコンは、この無線モジュールとのUART送受信処理をすれば済むからです。

マイコンと無線モジュールの接続
マイコンと無線モジュールの接続

そこで、この無線モジュールを使ったスマホ接続を検討します。

Wi-FiとBluetooth比較

Wi-FiとBluetoothを比較します(トラ技掲載表に加筆修正、価格は、秋月電子HPから抜粋)。

モジュール メリット デメリット 代表的モジュール価格
Wi-Fi ・ネット経由で通信距離制約なし
・通信セキュリティ高
・通信速度≦数10Mbps
・直接通信形態対応のスマホは少ない
・無線LAN設定が必要
XBee Wi-Fi(S6B):3680円
Bluetooth ・初期設定不要で使用可
・周波数ホッピング機能でWi-Fiよりも正確なデータ通信
・通信距離:10~30m程度
・通信速度≦240kbps
RN42XVP-I/RM:2200円

 

注目すべきは、Bluetooth無線モジュールが、特別な初期設定なしでスマホと接続できる点です。Wi-Fi無線モジュールのXBeeは、http://www.tunnelsup.com/videoなどで接続方法が紹介されていますが、Bluetoothの方が簡単です。但し、その分、通信速度がスレーブモード最大240kbps、通信距離も30m程度となりますが、マイコンUARTに接続して使うには丁度良い通信速度です。

というのは、マイコンUARTの速度は、任意に設定できる訳ではなく、CPU動作クロック速度を決めるとUARTに利用できる速度は限られた選択肢になるからです。その中で、Bluetooth通信速度をなるべく活かせる速度を選ぶことが効果的です。例えば、RL78/G1xテンプレート/32MHzの場合には、38.4kbps、LPC8xxテンプレート/30MHzの場合は、115.2kbpsなどです。テンプレート対象のマイコンでは、Wi-Fi速度を活かせないのです。

コード生成で選択できるUART速度
コード生成で選択できるUART速度

マイコンと無線モジュールの接続速度

マイコンUARTは、これまで主にPCとの接続に使ってきました。その速度は、9600bpsや19200bpsが多かったと思います。しかし、今後は、Bluetooth無線モジュールとの接続を考慮し、115.2kbps程度のより高速なUART接続が望まれます。

マイコンテンプレートの骨格

Wordには、名刺、カレンダー、パンフレットなどアプリ毎のテンプレートが用意されています。マイコンテンプレート開発時に悩むのが、どのようなアプリを意識してテンプレートを作るかです。できるだけオールマイティなテンプレートが目標です。

今回は、弊社マイコンテンプレートの骨格について説明します。

テンプレートの骨格

弊社マイコンテンプレートは、

(1)無償IDEのプログラムサイズ

(2)時分割の処理起動

(3)RAMでの関数間パラメタ渡し

(4)UARTメニュードリブン

の4つの骨格を持ちます。

(1)無償IDEのプログラムサイズ:弊社テンプレートは、IDE無償版で開発できるプログラムサイズを対象とします。これは、この程度が個人や少人数で開発/デバッグできる限界と考えるからです。これ以上大きくなると、開発/デバッグが指数的に困難となり、開発を収束させるために、例えばリアルタイムOSなどの別手段が必要になります。

最近は、無償版でも256KB程度の十分大きなサイズも開発できるようになりました。これは、IDEツールが高機能になり、API関数の自動生成や、既存ライブラリを簡単に使えるためです。これらIDE生成関数は、バグなしの完成品ですが、個人でカスタムメイドできるサイズは、今も昔もあまり変わらないと思います。経験的に無償IDEで開発できるサイズがこの上限サイズです。

(2)時分割の処理起動:マイコンは、CPUと周辺回路が「ハード的に並列動作」します。従ってCPUソフトを、周辺回路起動と処理完了確認の2つで関数化すると、複数の周辺回路を簡単に並列動作させることができます。起動から処理完了までの処理時間は、周辺回路毎に予想できますので、その間に別処理、例えばSleepをすれば電力効率もアップします。これらの処理を時分割で起動するのが弊社テンプレートです。

(3)RAMでの関数間パラメタ渡し:カスタムメイド関数のパラメタは、内蔵RAMを使って外部と入出力します。これで関数単体デバッグが簡単になります。RAM値をデバッガで確認/修正すれば、関数動作が把握できるからです。さらに、関数の中身が未完成の時でも、入出力値をRAMに設定しさえすれば、結合デバッグができるメリットもあります。

(4)UARTメニュードリブン:シリアルポートUARTを持たないマイコンはありません。Wi-FiやBluetoothモジュールをこのUARTへ接続すれば、ワイヤレス制御もできます。シリアル-USB変換ケーブルでマイコンとPCを接続し、メニュー形式で処理を選択するメニュードリブンをテンプレートに採用する理由は、2つあります。1つが、この「UARTが必ずあり、応用範囲が広い点」です。

もう1つが、メニュードリブンで開発すると「処理の移植が容易な点」です。テンプレート利用者は、メニューで示された処理のうち、必要な処理のみを簡単にテンプレートソースから見つけることができます。所望処理がUART受信コマンド解析関数から始まるからです。

そして、発見した関数(または関連関数)を、丸ごとご自身のソースへコピーすれば、動作させることができます。テンプレートは、多くの場合、この処理単位でファイル化していますので、ファイルを丸ごとコピーしさえすれば、必要な処理をテンプレートから抜き出すことも可能です。

評価ボードで実動作確認

入手性が良く低価格な評価ボードで、これらの骨格をもつテンプレートをボードへ実装し、動作確認を行い、詳細な説明資料付きで販売します。説明資料付きのテンプレートと評価ボードの組合せは、効率的に対象マイコンを習得でき、新規アプリ開発と評価に役立ちます。

販売テンプレートと開発テンプレート

現在、2種のテンプレートを販売中で、2種を年末までに開発、発売予定です。開発経過などを本ブログに記載しますので、ご参照ください。価格は、各1000円(税込)/1コピーです。

テンプレート名 ベンダ マイコン 動作確認評価ボード
RL78/G1xテンプレート Ver3 ルネサス RL78/G1x
(32MHz)
・RL78/G13 Stick
・RL78/G14 Stick
・QB-R5F100LE-TB
・QB-R5F104LE-TB
BB-RL78G13-64 (弊社推薦ボード)
LPC8xxテンプレート NXP LPC81x
Cortex-M0+
(30MHz)
・LPCXpresso LPC812  +  mX-BaseBoard
LPC1114テンプレート NXP LPC1114/5
Cortex-M0
(50MHz)
・LPCXpresso LPC1114  +  mX-BaseBoard
Kinetis/Eテンプレート(開発中) freescale Kinetis Eシリーズ
Cortex-M0+
(40MHz)
・FRDM-KE02Z40M  +  mX-BaseBoard

RL78/G1x開発役立ち4ドキュメント

2014/6/20ルネサス発行のRL78/G1x開発に役立つ資料を4つお知らせします。このページ一番下、その他に分類されている資料で、NEW!マークが付いた以下4タイトルです。

1.RL78ファミリ用CコンパイラCA78K0R SADDR領域とCALLT命令の使用

SADDR領域とCALLT命令の効果を解りやすく解説しています。

販売中のRL78/G1xテンプレートも、SADDR領域は使っていますが、CALLT命令は、コードサイズは小さくなるものの、速度が遅くなるので使いません。RL78/G1xは比較的大きなROMを持つマイコンなので、コードサイズよりも速度を優先して設計したためです。

有効なSADDR領域ですが大きさに限りがあるので、コンパイルオプションのROM/RAM使用量を表示し、上限に近い場合には、配置変数の選択も必要でしょう。

2.RL78ファミリ用CコンパイラCA78K0R データフラッシュへの定数の配置方法

ROM、RAM、データフラッシュの3領域を持つRL78/G1xデバイスで、データフラッシュ領域へconst定数を配置する方法を記載しています。

RL78/G1xテンプレートは、データフラッシュライブラリを使い4KBデータフラッシュ領域をEEPROM的に使っています。このような使い方が不要な場合には、巨大テーブルの定数配置などで解説の方法も使えそうです。

3.スタック領域の変更方法

4.リンク・ディレクティブの説明

どちらの資料もROM、RAMへのセグメント配置に関する基本的な解説です。文章や図にすると、説明が長くなるのが欠点ですが、まとまっているので理解し易いでしょう。

RL78/G1xテンプレートでは、コンパイラ領域がRAM内で連続するように、データフラッシュライブラリの占有領域を決めるリンク・ディレクティブ設定を行っています。また、作成する関数間インタフェースは、基本的に関数引数を使わずRAMを使います。従って、関数単独のデバッグが容易で、スタック使用量も引数利用に比べ少ないのが特徴です。結果として、スタック領域の配置は、コンパイラにお任せでも問題なく動作します。

RL78常設セミナテキスト改版

2014年5月30日発行のルネサスサポート情報 vol.197で、ルネサス常設セミナテキストの改版がレポートされました。レポートでは、「新規公開」とありますが、ダウンロードして旧版と比較した結果を示します。

セミナテキスト改版内容

コース名 レポート記事 旧版との比較結果
R8Cマイコンコース テキスト新規公開 2012年3月21日 Rev. 2.20と同じ
RL78マイコンコース テキスト新規公開 2013年12月18日 Rev. 1.30へ改版
RL78コンパイラコース テキスト新規公開 2014年3月13日 Rev. 1.07へ改版
RL78リアルタイムOSコース テキスト新規公開 2014年3月31日 Rev. 1.02へ改版

※R8Cマイコンコーステキストは、改版内容が不明で、公開テキストは前版と同じでした。

テキストの変更履歴がないので、具体的にどこを変更して改版したのかは不明です。しかし、どのテキストも内容が濃く、一読に値します

テキストですので、重要項目を1~10まで記載しています。初心者には、読むだけで大変で、理解にかけられる労力が不足することも多いと思います。そんな時は、各テキストの最重要箇所のみを抽出したコレに先ずザット目を通してください。特に、コンパイラコースのその1~3を理解した後に、テキストに戻ると理解が捗ると思います。

テンプレート活用のマイコン開発

限られた時間で効率的にマイコンを習得するには、手軽に用意できる開発環境と、テンプレートを活用するのも一つの方法です。ワードやパワーポイントには多くのテンプレートが提供されますが、組込みマイコンのテンプレートは少ないようです(サンプルソフトは、あくまでサンプルでテンプレートとは、別物です)。

そんな時は、販売中のRL78/G1xテンプレートを活用下さい。業務に使えて、テキストの重要箇所エッセンスをプログラムへ盛り込んだテンプレートになっています。世界標準のARM 32ビットマイコンLPC8xxテンプレートも販売中です。

LPC820 vs. RL78/G13 割込みコントローラ比較

NVICとRL78/G1xの割込みコントローラ比較

LPC820やCortex M0/M0+マイコンは、割込み処理性能を強化した新しいNVIC: Nested Vectored Interrupt Controllerを持っています。RL78/G1xは、4バンク構成の従来型割込みコントローラです。NVICは、これまでソフトで行っていた割込み 処理を、殆どNVICハードで行います。頻繁な割込みに対する効率化(テール・チェイン)などにより、割込み応答時間が均一になり、高速処理が可能です。

CPU LPC820 RL78/G13、RL78/G14
割込み回路 NVIC: Nested Vectored Interrupt Controller Interrupt Controller
レジスタバンク なし 4バンク(RB0/1/2/3)
レジスタ待避場所 スタック バンク
バンク使用時はスタック
PUSH/POP動作 ハード:NVIC処理(ソフト比、応答時間が均一で高速 ソフト処理
多重割込み受付 デフォルト許可 デフォルト禁止(受付はソフトでEI設定要)
テール・チェイン機能 あり なし
割込み優先レベル 4(高0/1/2/3低)、デフォルトレベル0 4(高0/1/2/3低)、デフォルトレベル3
ISR記述 規定ISR名でCソース記述(オーバーライド可能) __interruptを付加し、規定ISR名記述(オーバーライド不可)

 

割込み起因のバグは、再現性が低く、デバッグが厄介なものです。定量的な評価はできませんが、NVICの謳い文句やこの比較表以上に、割込み処理に対して、有効になると思います。

LPC820 vs. RL78/G13 I2C API比較

マイコンによるI2C APIの差

API比較
API比較

マイコンのI2CにEEPROMを接続する例でAPIを比較します。RL78/G13、RL78/G14、LPC820のI2C関連APIの関数名だけを抜き出して列挙しました。太字は初期化関数です。

RL78/G13とRL78/G14は、CubeSuite+のコード生成を使うと、両マイコンとも同じAPI関数でEEPROM制御ができますが、ここでは、あえて出典のアプリケーションノートを使った場合を示しました。これらアプリノートは、最近リリースされたものです。

この表からマイコン、メーカでAPIとアプリの切り口が、かなり異なることが判ります。例えば、RL78/G13の場合は、SCLのHigh/Low出力など、プリミティブなAPIがあります。RL78/G14は、上位/下位の2階層構成(_EepMdl_と_Drv_で分離、各層に初期化があるので太字関数は2つ)で、マルチスレーブが容易です。LPC820は、3つの中では最もシンプルなAPIでCubeSuiteのコード生成出力に近いものです。

一方、最もアプリに近いAPIは、似ています。例えば、R_EEPROM_R、R_IIC_EepMdl_Read、I2C_MstReceiveやR_EEPROM_W、R_IIC_EepMdl_Write、I2C_MstSendなど。

このように比較的よく使われるEEPROM接続でも、APIは様々です。従って、APIを利用するアプリケーションも、残念ながら異なるものとなります。マイコン選定に当たって、デファクトスタンダートや、開発者の経験で選ばれる理由がここにあります。

テンプレートは、市販の入手容易なボードと無償ツールを使って、結局はオーダーメードになるマイコンアプリの初期立ち上がりを加速するためのものです。人気のあるマイコン機種と使い方を厳選し、トリッキーな手法なしに、素のマイコン性能を引出せるテンプレートを目指します。テンプレートに対するご意見、ご希望などは、info@happytech.jp へお寄せください。