組み込み開発におけるARM入門

組み込み開発におけるARM入門

組み込みシステムにARMを実装するメリット、デメリット

組み込みシステムにARMを実装する際のメリットとデメリットを、環境面と技術面それぞれの視点で解説していきます。ARMを利用した組み込み系のシステム開発を行う技術者なら、ぜひ知っておくべき項目です。

  • Date: 2014年3月29日
  • Author: EIPC

組み込みシステムとは

組み込みシステムというものについて、今一度おさらいしておきましょう。組み込みシステムとは、家電製品や産業機器、デジタル製品、その他身の回りのあらゆる製品に搭載されているコンピュータシステムです。パソコンのような汎用システムとは違い、要求されている機能や性能が限定されています。その上、コスト制限上の理由から利用可能な資源も制限されているのが特徴で、比較的安価なCPU、少ないメモリ、プログラムを内蔵したROM、という構成がほとんどです。電気・電子機器の高性能化や、メモリの性能単価が下がったことにより、さらに広い分野で組み込みシステムは採用されており、今後もシェアは拡大していくでしょう。こういった特徴を持つ組み込みシステムだからこそ、ARMの持つ特徴やメリットが生きてくるわけです。

組み込みシステムにARMを実装する環境的メリット

では、まず組み込みシステムにARMを使う環境的メリットから解説します。ARMはとにかく幅広いシェアを持っています。これまで独自のCPUアーキテクチャで戦ってきたFreescaleやRenesasなどのCPUメーカーも、ARMコアの製品をラインナップに加えています。また、FPGA(製造後、購入者または設計者による構成の設定が可能な集積回路)にARM CPUのハード・コアを内蔵したSoC FPGAもAltera、Xilinx、Microsemiから登場しましたし、スマートフォンの普及に伴って爆発的に販売数を伸ばすSpreadtrum、Rockchip、RDAといった新興中国メーカー製のSoCも当然ARMです。

汎用マイクロコンピュータ市場においても、ARMプロセッサコア採用のARMコア搭載マイコンの需要が高まっており、日本製のARMコア搭載マイコンが世界でも実績を伸ばしています。ちなみに、プロセッサコアとはマイクロプロセッサの中核のことです。

これまで国産CPUの独壇場だった自動車や家電向けのプロセッサもARMに切り替わりつつあります。スマートフォン以外での組み込みCPU開発も、これからはARMが主流になっていくことは疑いありません。組み込みシステムにおけるARMのシェア拡大にともなって、ARM開発は組み込み技術者の必須スキルとなるのではないでしょうか。

また、これだけ普及し、これからもシェア拡大していくCPUアーキテクチャであるため、開発事例や対応するソフトウェアライブラリも豊富になっていくことでしょう。周辺のデバイスやOSなどの関連するミドルウェア、製品、基板などのあらゆるものに関して、ARMサポートの優先順位が高くなり、CPUとしてARMを採用するだけで選択肢が広がります。

同時に、それは特定メーカーの部品に対する依存率を下げる設計が可能になり、東日本大震災やタイ大洪水の時のような地域的な調達リスクを下げることに繋がります。

組み込みシステムにARMを実装する技術的メリット

これまでも述べてきたとおり、ARMの長所は低消費電力です。低消費電力向けのCPUではARMのメリットが最大限に生かせます。また、ARMはARM6からCortex-A57まで目的別にラインナップが細かく複数種類存在し、それぞれ製品として販売されているので、要求機能・要求性能に合わせて多様な選択が可能です。

また、同じグレードの他のアーキテクチャのCPUより設計がシンプルなのも特徴です。そのため、低消費電力が実現するとともに性能あたりの消費電力比率は他のアーキテクチャと比較して有利です。

ARMを採用しているデバイスの開発キットや評価ボードでは、デフォルトのOSとしてLinuxを採用している例が多く、Linux用のBSP(特定のハードウェアプラットフォーム上で、OSを実行可能にするソフトウェアコンポーネントのこと)も用意され、無償かつ迅速に実装したい場合には非常に便利です。BSPで用意されていないドライバでも、ディストリビューションやデバイスベンダ(CPUメーカー)でサンプルドライバが入手できる可能性があり、開発期間短縮・コスト削減の有効な手段となります。

開発環境を複数種類から選べるのも特徴です。国産メーカー製のマイコンではベンダ提供の環境が必須でした。一方で、ARMの開発環境は商用の有償なものから無償までいくつかあり、それぞれ制限が違うので、必要に応じて選択できます。

FPGAやASICの内部設計の話に限りますが、チップ内部バスの規格やARMの定めた通信規格(AMBA)がデファクトスタンダードになりつつあり、AMBAに対応したIPや設計資産が増えています。これらを最も利用しやすいのもARMアーキテクチャということになります。

ARMを利用する環境的デメリット

逆にARMを利用する際の環境的デメリットとしては、携帯電話やスマートフォン以外の組み込み技術者にとっては、これまであまり縁がなく、取っ付きにくいことでしょう。やはり国内メーカー製のCPUに比べると、日本語のドキュメントは整備されておらず、サポートも厚くありません。自分でくまなく調べ、必要に応じて海外のベンダに英語で問い合わせることになります。しかし、逆にその壁さえ乗り越えれば、スケールメリットを活かして、英語のオープンコミュニティやナレッジデータベースで豊富な情報を引き出すことができます。

ARMを利用する技術的デメリット

また、ARMアーキテクチャは、癖があると言われています。全ての命令の実行前に条件判断を行うことができる、論理演算命令以外の命令(算術演算や転送など)でもビットシフトを行える、そして割り込み対応のためのレジスタ・バンクを複数持つなど、CISC的要素があるため、チューンナップで高速化する余地があるものの、技術者にとって馴染むまで時間がかかるでしょう。キャッシュ管理や拡張命令についても、他のアーキテクチャよりわかりにくいと言われています。

以上の問題は、ハードウェアの性能をフルに活かそうとすると問題になるかもしれませんが、LinuxやμITRONなどの既存OSを使用してパフォーマンスをギリギリまで追求しないのであれば、技術者にとって特に気にする必要はありません。

コンピュータホビイストにとってのメリット

組み込みシステムにARMを利用する際のメリットとデメリットの主な点を、これまで2つの側面から説明してきました。しかし、ARMを利用するメリットは他にもたくさんあります。とりわけ、コンピュータホビイストにとっては以下の点が利点です。

例えばARMマイコンは、優れたコンパイラが使用可能です。コンパイラとは、プログラムのソースコード(原始コード)を、機械語またはバイトコードなどによるオブジェクトコード(目的コード)に変換するプログラムのことをいいます。マイコンでの開発には、基本C言語を使いますが、プログラムのソースコードを書いたとき、マイコン上で動かせるようにするためコンパイル(翻訳)作業が必要です。オープンソースで開発されたフリーのコンパイラ「gcc」は、マイコンごとにコンパイル性能や対応度がまちまちです。しかし、中でもARM用のgccは開発スピードが早く、新型コアにも素早く対応します。有償のコンパイラには及びませんが、商用の開発にも使用できるくらいの性能を持っているのです。

また、フリーのデバッガがあるのも特徴です。デバッガとは、デバッグを行うためのソフトウェアのこと。デバッガを使用することで、マイコン上のプログラムを1行ごとに実行したり、その実行中に好きな位置で停止させることもできます。停止させた時点での各種変数の中身やメモリの内容も確認できます。デバッガは非常に便利なものですが、何しろ価格が高いのがネックです。しかし、ARM用にはオープンソースのデバッガが存在します。GNUツールのひとつ「gdb」と、同じくオープンソースのソフト「OpenOCD」を組み合わせれば、無償ツールのみでデバッグができてしまいます。

以上のことから、コンピュータホビイストにとってもARMはメリットが大きいものなのです。

ARMを使ってみよう

このようにARMアーキテクチャは一度利用して知見がありさえすれば、そこまでリスクが高いものではありません。とはいえ初回開発においては、ARMならではの癖を技術者が習得するまでに少々苦戦が予想されます。とはいえ、今後の組込み業界に目をやったとしてもARMは重要なキーワード、技術要素の1つとなりますので、マスターしていきたいところです。