組み込みLinux・Cyclone編Cortex-M7編Cortex-M編Cortex-A編RTOS編マガジンVOLUME.19(IoT特集)深層学習の研究者が語る、SPRESENSETMの魅力。モノづくりの現場から採取した大量のデータを、GPUやクラウドといった高性能な演算リソースを活用して日々解析をしている。彼らがエッジデバイスとして着目したのは...世界のソニーが掲げる、IoT時代の新戦略。技術の粋を集めたSPRESENSETMの挑戦「ビジネス×オープンプラットフォーム」ソニーセミコンダクタソリューションズ株式会社100社あれば100通りのカスタマイズ要求が生まれるIoTビジネスの時代をリードするため、技術のソニーが掲げた戦略は、オープンコミュニティの最大活用。これまでに培った技術力を集約し、人工衛星などの極地環境にも対応できるIoT向けボード...走り始めた“AIシューズ”。STM32マイコンが楽しさを加速。STマイクロエレクトロニクス株式会社モノの認証で“トラスト”なシステムを実現。IoT時代に安心できる社会を目指す東芝デバイス&ストレージ株式会社ハイパワー化で可能性の広がるPoE。無線+μC3で給湯器IoTを実現。イー・フォース株式会社VOLUME.18(AI特集)秒間32兆回の演算で日本の課題を解決。Xavierがつくる、AI製品成功までの確かな道筋。NVIDIACPUやDSPに比べて圧倒的なコア数を有する「GPU」。このGPUの性能を日々進化させることにより、クラウドからエッジまで、世界中のシステムに革新を起こしてきた「NVIDIA」。DNNDK:自動車をはじめ数多くの実績が証明。エッジを中心にAIニーズに応える。ザイリンクス株式会社ArmNN:新たな世界を牽引する、ArmのAI/MLプラットフォーム。アーム株式会社VAB-820:VIAとMicrosoftが一致協力、AI時代に向けた新たな取り組みを開始。Japan株式会社DeLTA-Family:超小型FPGAを深層学習に活用、LeapMindの開発ソリューション。LeapMind株式会社SPRESENSE:マルチコア×超低消費電力、エッジAIの最有力を目指した新たなる挑戦。Tabletが小型・高効率化を実現。VicorVOLUME.17(IoT特集)半導体メーカ発、CBMソリューション。日本の産業IoTの課題の一つである「マシンメンテナンスにおけるCBM(状態基準保全)」には、機器の振動解析が欠かせない。アナログ・デバイセズは、「ソリューション・プロバイダ」として、高精度MEMSセンサー、エッジ・コンピューティング、ワイヤレス・ネットワーク、ゲートウェイ、クラウド、ソフトウェア・パッケージまでを包括したパッケージ・ソリューションを“日本主導”で提供する。ソフトバンクとSTが拓くIoT。LPWAエコシステムを相互活用STマイクロエレクトロニクス株式会社Mbedデバイスからサービスまで。困難を伴うマイコン移行の決め手は、確かな統合開発環境と安心サポートIARシステムズ株式会社MEMS、24GHz/60GHzレーダー、ToF。ジャパン株式会社VOLUME.16(産業ソリューション特集)OPC-UA導入を迅速かつ容易に実現。日本の産業IoTを牽引するソリューションベンダ、マクニカ株式会社マクニカ半導体商社として長年培ってきた技術力と知見を有するマクニカが、FA分野に向けてIoTやAIを活用した新規事業の立ち上げに挑んでいる。工場内の振動などの各種センサやコントローラで取得したデータを分析し、工作機械やロボットなどの生産設備の予知保全や異常検知などを行うシステムを構築している。データ分析に利用するAIの開発や、装置への組み込みも支援する。電源設計でもう失敗しない。音声入力と再生をコンパクトに実現。LiteがUIをスマートに東芝デバイス&ストレージ株式会社CPUまでの1インチを解消。KKSnapDragonでAI・4K市場に攻勢。インフィニオンがモータ制御の常識を変える。ジャパン株式会社ベクトル制御などの最新の制御理論に基づいたアルゴリズムや電力効率に優れたインバータ回路を実装しなければならず、さらに、モータの諸元や動作仕様に応じたチューニングも必要である。ジャパン株式会社は、白物家電やドローンなどを対象に、小容量モータのターンキーソリューション「iMOTIONTM」を提供している。LoRa無線モジュールを開発した村田製作所。STと協力して評価ボードを提供STマイクロエレクトロニクス株式会社ACサーボモータ制御の最適解。マイコンを求めシリコンラボを採用。交換なしの電池駆動1年を実現。シリコンラボラトリーズ加速度センサーの常識が変わる!?ADIの新MEMSセンサーアナログ・デバイセズ株式会社SPRITZERがIoTを拓く。ソニーが新しいプラットフォームを提案ソニーセミコンダクタソリューションズ株式会社VOLUME.14(プロセッサ特集)Arm+Linux+クラウド+ミドルウェア+量産ボード。一括供給で産業分野に攻勢をかけるルネサスの底力。Linuxプラットフォーム」は、プロセッサ、Linux、開発環境、ミドルウェア、ボードからなる包括的なソリューション。これを利用すると、産業用機器の開発期間を40%削減できる。ここでは、本プラットフォームの概要や既存のLinuxサポートとの違い、今後の取り組みについて話を聞いた。SemiconductorsIoTへのショートカット。東芝デバイス&ストレージ株式会社オーディオ専用のSigmaDSPで高音質サウンドを手軽にデザイン。アナログ・デバイセズ株式会社IoTセキュリティ、信頼性は担保されているか。株式会社DTSインサイトVIAがサイネージやIoT向けに、3.5インチSBC「VAB-630」を発売。Japan株式会社RTOS、マルチコア、機能安全でIARと日立超LSIがタッグ。IARシステムズ株式会社VOLUME.13(マイコン特集)さらなる高みへ。MCU約1,100ラインアップ。シナジー効果の最大化へNXPセミコンダクターズ2015年12月、NXPセミコンダクターズと旧フリースケール・セミコンダクタ(以下、フリースケール)は経営統合し、一気に売上高および製品ラインアップを増やした。統合後の会社名は、NXPセミコンダクターズ(以下、NXP)である。現在、メモリメーカーを除く半導体メーカー別シェアランキング世界第5位(米IHS社発表)であり...LoRaにも対応しIoTをリード。マイコンとセンサーに強いST。STマイクロエレクトロニクス株式会社ADIが目指すIoTエコシステム。東芝マイクロエレクトロニクス株式会社SIGFOX社のリファレンスとして採用。仏での成功、次は日本のIoTを牽引シリコンラボラトリーズPSoC、FMマイコン、無線通信製品。日本サイプレス株式会社インフィニオンから産業用マイコン。ジャパン株式会社VOLUME.12音楽の可能性を広げるハイブリッド・カホン。EC-10」が登場した。生みの親はシンセサイザーやBOSSブランドのエフェクターなどで知られるローランドである。太陽誘電Wi-SUN無線モジュールにシリコンラボEFM32が採用シリコンラボラトリーズALABの多彩な技術と製品開発を支えるAtmelのMCU&プロセッサアトメルジャパン合同会社JapanTaxiのタクシー業務IoT基盤開発。新しいTXZファミリ登場。東芝マイクロエレクトロニクス株式会社アルテラSoCをさらに使いやすく国産SOMと国産RTOSが強力タッグ日本アルテラ株式会社ドローン、IPカメラ、ロボット、VR。SoC」の採用がオートモーティブを筆頭に広がっている。した躍進の陰には、設計支援やコンサルテーションを通じて顧客システムのTTM(Time-to-market)を支援する、Xilinxのアライアンスパートナーの存在がある。VOICEでは...太陽光発電用パワコンのデジタル電源回路をSTM32F303で構成。ーMPPTとFRTに対応した高度なアルゴリズムを実装ーSTマイクロエレクトロニクス株式会社Cortex-M0を搭載した東芝のカスタムチップを採用。最新のFAコントローラに「アルテラSoC」を採用。組み込みOSに最適なのは?リアルタイムOSとLinuxの違い組み込みOSに最適なのは?リアルタイムOSとLinuxの違い組み込みシステムにおけるリアルタイムOSとLinux組み込みシステムの構成を考えていく上で、どのOSを採用するかは、開発初期段階においてとても重要です。時間的な制約を中心に考えるのか、使用するミドルウェアなどのソフトウェアを中心に考えるかで、大きく異なります。一般的には、時間的制約があるシステムの場合はリアルタイムOSが向いていると言われています。ネットワークやファイルシステム、高度なグラフィカル表示が必要な場合はLinuxが向いていると言われています。要件によってどこまで妥協できるかは、コストや開発期間など、一概に決められない要因もたくさんあり、正解もありません。有償無償のソフトウェアの組み合わせを考えると、必ずしも上記の構成をとるとは限りませんし、混在することも増えてきています。リアルタイムOSの場合、CPUやCPU周りの性能向上により、ワンチップでできることがだいぶ増えてきました。Linuxの場合、当然大きなメモリやストレージに相当する記憶装置(フラッシュROMやeMMCなど)が必要ですが、今後の拡張や共通プラットフォームという考え方も普及しているので、コストメリットの享受も。基板のサイズなども選択肢に入りますが、このあたりは製品の形状・デザイン・仕様により大きく異なると言えるでしょう。高精度な計測をしながら、グラフ描画を行うさて、ここからは、上記の条件で組み込みシステムの構成を考えていく場合、リアルタイムOSかLinuxかを決める簡単な指針を考えてみたいと思います。計測は、1ms以内に10000サンプルデータを取る必要がある。2デバイスドライバ計測したデータは、100サンプルのデータを平均化して、ストレージに保存する。3処理速度ストレージに保存されたデータからグラフ表示を行う。いった場合、高速なマイコンを使った方がいいんじゃないかと、なんとなく思うのではないでしょうか?そう思わせるのは、「ある時間以内の処理」が明記されているからだと思います。これをリアルタイムOSで実装していく場合の考え方と、Linuxなどのシステムで実装していく場合の考え方を、それぞれの指針ごとに見ていきましょう。1処理速度まずこの条件に見合った処理を行うには、1サンプルデータあたり、100ns必要であると言うことが分かると思います。1つのプログラム実行サイクルが、100ns以上かかってしまうシステムでは、すぐに破たんしてしまうと言うことが分かります。ちなみに、100nsは、10MHzで動作することが最低限の条件になります。このあたりだと、まだマイコンでも十分です。Cortex-M0では40MHz近辺で動作するものも多いので、1クロック当たり25nsになるので、このあたりでもなんとか動かせるところですね。これをLinuxのシステムで動かすとなると、40MHzでLinuxを動かすのは・・・現実的ではありません。少なくとも数100MHzの動作環境が必要で、最低でもCPU400MHz以上のシステムにしないとLinuxを動かすことが難しいことは、想像できそうです。MMUを搭載しないタイプのLinuxであればもっと遅いクロックでも何とか動くかもしれませんが・・・あまり現実的ではないですよね。最低条件での見積もりなので、実際には他に重なる条件などもあり、これだ!という断定はできませんが、あえて提示すると、下記のようになるかもしれません。1データサンプリングして計算するなら、Cortex-M3/4で40MHz以上で動作するもの(いっぱいありそうですね)。2Linux前提だと、Cortex-A系400MHz以上が前提。3デュアルコアやヘテロコアで使うのもあり。【補足】たくさん選択肢がありそうなら、次の選択基準は「省電力」やペリフェラルの数であると言うことは言うまでもありませんよね?上手に選んでいきましょう。2デバイスドライバ次に着目すべきは、デバイスドライバですね。最近では、Armマイコン系を中心にCMSISのドライバがほぼ標準で用意されています。ペリフェラルのドライバが重要であると言うことは、どのデバイスベンダーさんもわかっていますね。便利になったと思います。昔は、自分で作ったりしていましたが、今はあまり作っていないですね。デバイスドライバが重要なのか?ということをわざわざ語る必要はありませんが、SoCに搭載されているDMAをうまく活用することが一つのシステム性能向上につながるからだと思っています。DMAを活用できれば、CPUの負荷を分散しながら、高いパフォーマンスを発揮することができるのです。さきほどの1サンプル100nsの時間でデータ処理を行う場合でも、DMAが指定したメモリにサンプルしたデータを転送してくれれば、CPUのクロックはもっと遅くても間に合います。Linuxのドライバがなかったら。デバイスベンダーさんが用意しているかどうかで変わってきます。ここ近年はドライバを用意していないことは少ないですが、すべてのシステムに対応できるかどうかは別の話です。メモリマップは、ボード構成によって変わってくることが考えられます。DMAを使いこなすうえでも、このあたりは理解しておく必要があり、レアケースかもしれませんが、デバイスドライバに手を加えなければいけない状況になることもあり得ます。ほとんどのペリフェラルは、DMAに対応していることがほとんどなので、作りこむ必要はあまりないのかもしれませんが、完全に実装できているかどうかは別の話です。割り込みのタイミングとなるFIFOの制御も、アプリケーションで指定したりするはずなので、ドライバがあれば何でもOKというほど簡単ではありません。1から作るよりは、ぐっと楽なはずです。APIをただ呼び出すだけではなく、そのソースコードを熟読した上で、提供されたドライバを使うようにしましょう。リアルタイムOSで実装した場合、リアルタイムOS側でドライバを用意していることもありますが、特殊なペリフェラルほどドライバがないのが現状です。リアルタイムOSはカーネルが動作するための最低限のドライバは用意していますが、それ以外はユーザ実装となっています。自由に組める代わりに、その労力も必要になってくるわけです。すると、デバイスベンダーが用意したドライバを使うことになりますが、リアルタイムOSとの連携は考慮されていないので、手を加えながら実装することになると考えておいた方がいいでしょう。デバイスドライバはペリフェラルによって、キャラクター型デバイスであったり、ブロック型デバイスだったりしますので、自分のシステムに合うかどうか、ソースコードを読み込む時間も設計時には考慮しておくといいですね。描画処理だったらLinuxを選択した方が、楽だろうな?と誰もが思うことでしょう。Qtを使う方法や、Web系のリソース(HTMLとCSSやJavaScript)などを使う方法もありそうですね。専用のGUIツールやミドルウェアも世の中には存在します。簡単な表示だけなら、ミドルウェアを使わない方法もたくさんあると思います。一口に描画と言っても、いろいろな切り口がありますが、一番重要で描画に必要なリソースは、メモリです。フラッシュROMのメモリではありません。ワーキングエリアで使用するSRAMやDRAM(DDR)です。表示は見た目が大事なので、いかに早く描画するか?が重要になってきますし、商品価値を高めることに繋がります。そのため、通常は表示する画面サイズとほぼ同じ要領のメモリを最低でも2つ持ち合わせるなどの方法で、高速な描画を実現させることになります。その場合、それなりにメモリが必要です。モノクロVGA表示の場合、640x480のサイズなので640x480÷8=38.4Kと計算できます。モノクロでも38.4KBytesが2つ分必要です。R,G,Bのカラー表示の場合、8ビット(256階調)として、640x480x3=460.8Kとなり、460.8KBytesになります。画面バッファだけでも、1MBytesになりそうです。最近では、大容量SRAMを搭載したマイコンが増えてきましたが、プロセッサと外部SPIフラッシュとDDRのBOM価格と、大容量SRAM搭載ワンチップマイコンと比べると、大きな差はなくなりつつあるようです。ハードウェア的な差がなくなってくるとすれば、Cortex-A搭載のSoCが選択肢として優位です。メモリも、DDRなど高速なメモリを使えると、もっと大きな画角の表示も可能です(参考:画角別メモリサイズ一覧)。QVGA320x240x3(RGB)=230.4KBytesVGA640x480x3(RGB)=460.8KBytesXGA1024x768x3(RGB)=2.36MBytesWXGA1280x768x3(RGB)=2.95MBytes1280x800x3(RGB)=3.07MBytes1366x768x3(RGB)=3.15MBytesFullHD1920x1080x3(RGB)=6.22MBytes4K3840x2160x3(RGB)=24.88MBytesこうしてみると、表示するにもかなりのメモリが必要になることが分かりますね。システム上では、「フレームバッファ」という扱いでこれらのリソースが確保されているのではないかと思います。Cortex-A系を選択すると、リアルタイムOSのバリエーションが一気に少なくなるのが難点です。対応しているソリューションはいくつかありますが、有償系が多くを占めてきます。Cortex-Aを無償のリアルタイムOSで使える例は、一部のTRON系カーネルに絞られていると考えていいと思います。マイコンなどのCortex-M系を選択すると、リアルタイムOSは選択肢としてありえますが、描画処理およびライブラリが不十分であることが懸念されます。マイコンによっては、描画エンジンを搭載しているものもあります。表示するだけであれば、LCDパネルのコントローラにデータを投げ続ければ表示はしてくれるので、上の表で示したようなメモリはなくても表示はできます。滑らかな表示や高速な描画を行うには、表示サイズと同じメモリサイズを使用し、DMAでデータを送り続ける処理を行うのが重要なので、これもデバイスドライバの性能によって変わってきます。最近では、LCDコントローラ内蔵タイプのマイコンも増えていますので、描画処理も点や線などの簡単なライブラリであれば、それほど実装は難しくはないと思います。ハードよりの話になりすぎたのでソフトよりの話をすると、グラフ表示する場合は動かさない軸を描画して、表示すべきデータを一定間隔で更新することが重要です。この間隔が細かいほど滑らかの描画が実現できそうですが、もたついてしまうとがっかりな表示になってしまいます。このバランスが非常に難しいところだと思いますが、全体を再描画するよりは、負担はぐっと減りそうです。描画すべき領域を指定して、その部分の更新データを定期的に書き換えていくことで、グラフ表示の実装ができるようになります。更新すべきメモリ領域を絞り、描画すべきデータを書き換えるというのが、一般的な手法です。グラフ表示する場合は、表示領域内でプロットする位置や座標を等間隔で動かしたり、線をつないでいくことになります。レイヤ機能があると、このあたりの描画も設計しやすいですね。結局リアルタイムOSとLinuxのどちらを選択したら良いのか?長々と書いてきましたが、もうどちらを選んでいいかわからなくなりました(笑)。APS的に簡潔にまとめると、こんな指針でどうでしょうか?●マイコンでリアルタイムOSを使う場合は、クロックが速く、外部外付けメモリを増やす。可視化し解析するサブコアとメインコアをシームレスにデバッグ。高機能IoTアプリケーションを効率的に開発、解析する方法とは深層学習の研究者が語る、SPRESENSETMの魅力。世界のソニーが掲げる、IoT時代の新戦略。走り始めた“AIシューズ”。STM32マイコンが楽しさを加速。モノの認証で“トラスト”なシステムを実現。IoT時代に安心できる社会を目指すハイパワー化で可能性の広がるPoE。無線+μC3で給湯器IoTを実現。reserved.お問い合わせ会社概要プライバシーポリシーポイントとは?。