演習で学ぶ ARMマイコン移行のチェックポイント:「そろそろARMかな」というマイコンユーザー必見!
「ARMコア搭載のFMファミリに移行したいが、どうしたらうまくいくのか?」。このような質問が急増している。スパンションやARM、横河ディジタルコンピュータが連携して行っているマイコン開発キットを用いた「ハンズオンセミナー」から、課題解決のヒントになりそうなチェックポイントをいくつか紹介する。
ARMコア搭載スパンションFMファミリのマイコンに移行したいが、どうしたらうまくいくのか?
組み込みシステム設計者から、このような質問が急増しているという。アーキテクチャが異なる他のマイクロコントローラ(以下、マイコン)に切り替えたとき、過去のソフトウェア資産を有効に活用しようとしても、コンパイラで最適化を行った際に、アーキテクチャの違いなどから開発ツール任せではシステムが動作しないこともあるからだ。そこで、システム設計者が抱える不安や悩みを少しでも解消してもらおうと、スパンションやARM、横河ディジタルコンピュータが連携して、マイコン開発キットを用いたハンズオンセミナーを開催している。
ARMプロセッサコアをベースとしたプロセッサやマイコンは、世界中でさまざまな用途に採用されている。ARMによれば、「ARMコアを搭載したプロセッサやマイコンは、2013年だけで100億個以上のチップが出荷されました。」という。これまでの携帯電話機向けに加えて、デジタルカメラやMFP(マルチファンクション・プリンタ)、車載電装システム、産業機器などさまざまな組み込みシステム向けの用途が急速に拡大しているからだ。
スパンションは、ARM Cortex-Mシリーズを搭載した32ビットマイコン「FMファミリ」を用意するなど、ARMマイコンを供給する有力ベンダーの1社となった。動作周波数が最大200MHzの高性能な製品から超低消費電力製品までカバーし、既に700品種を超える製品群となっている。
組み込みシステム向けに本格的な需要の広がりを見せるARMマイコンだが、日本市場ではそれ以外のマイコンも幅広い用途で利用されている。こうした中でスパンションやARM、横河ディジタルコンピュータは、FMファミリへの切り替えを検討している開発者に向けて、さまざまな技術サポートを行っている。そこで今回は、FMファミリの導入を検討している技術者向けに開催されたハンズオンセミナー「スパンションFMファミリとMDK-ARMで学ぶARM開発の基本」を体験受講してきた。本稿ではその概要を紹介する。
タイミング設計は適切か
現在使用中のマイコンから、新しいアーキテクチャのマイコンへ切り替える際に、注意しなければならない点が幾つかある。当然だが、1つは設計環境が変わることだ。特にコンパイラや統合開発環境は、機能や操作性が大きく異なることが多い。もう1つはマイコンに合わせて初期化コードとデバイスドライバを新規に開発することが必要となる。そして最も重要な項目の1つとして確認しておかなければならないのが、移植対象製品のタイミング設計が適切かどうかである。
「開発済みプログラムのソースコードを一部変更して、再利用することは可能だが、その際に、コンパイラの最適化を行うと、ARMマイコン上で動作しなくなることがよくある」という。ARMマイコン以外のマイコン用に開発されたプログラムを、ARMマイコン用にコンパイルした時だけでなく、「ARMコンパイラであっても旧バージョンで最新マイコン向けにコンパイルすると、同様な問題が生じることもある」とし、組み込みシステム特有の「タイミング」に起因することが多いらしい。
プロセッサの動作モードは?
プログラムを開発する上で、FMファミリとそれ以外のマイコンの動作モードの違いを理解しておくことも必要となる。
例えば、ARM Cortex-Mシリーズは、プロセッサ動作モードとして、「ハンドラモード(特権状態)」と「スレッドモード(特権・非特権状態の選択が可能)」をサポートしている。これによって、OSをハンドラモードで、アプリケーションをスレッドモードで動作させることが可能だ。他のマイコンではこうした動作モードを備えてない製品もあるので、プログラムを再利用する時には注意しなければならない。また、Cortex-M4搭載マイコン「FM4ファミリ」でFPU(浮動小数点演算ユニット)を利用する場合、リセット状態ではFPUのアクセス権がないため、事前に利用可能な状態に設定しておくことが必要となる。
割り込み処理、異なる優先レベルの考え方
割り込み処理も、ARM Cortex-Mシリーズ搭載マイコンと他のマイコンでは異なる。例えば、ARM Cortex-M3/M4の割り込み優先度は8ビット(実装依存で演習用は3ビット)で設定することができる。また、多重割り込みはネスト型ベクター割り込みコントローラで判定する。優先レベルは最高位が「0」、最低位が「255」となるなど、最低位を「0」とする他のマイコンとは優先レベルの考え方が異なっていることもあり、事前に理解しておく必要がある。
この他、ポインタのキャストを行った場合に発生する例外や、構造体ポインタを用いてバッファをアクセスする場合の注意点、エンディアンモードの違いなどについても、セミナーでは紹介された。
最適化でコードサイズは16ビットマイコン以下に
さらに、組み込みシステム用のマイコン選びで、重要な要因の1つとなるコードサイズについても実際のデータに基づいて比較した。このデータによれば、ARMコンパイラで最適化したところ、競合製品に比べて「FM3ファミリ」のコードサイズは標準的に25〜28%小さくなり、16ビットマイコンと比べてもコードサイズはやや小さくなることが分かった。さらに、消費電力も比較した。同じ動作周波数(80MHz)で、スリープモードがオフの状態とオンの状態の消費電流を比べたところ、FM3ファミリはスリープモード時に消費電流をほぼ半分に低減することができた。
演習で理解を深める
セミナー会場では、MDK-ARMマイコン開発キットを用いたFM3チュートリアル演習にも多くの時間が割り当てられた。例えば、「最適化設定によるコードサイズの変化、およびrev()関数のアセンブリコードの比較」、「FM3ファミリマイコンのベースタイマーと多機能タイマーを使った割り込みレベルの設定、および修正と動作確認」、「電力削減に向けたPLLランモードとPLLタイマモードの動作確認」といった演習を通じて、参加者はARMマイコンに触れ、ソフトウェア開発についての理解を深めたようだ。
今回のハンズオンセミナーは、スパンションやARM、横河ディジタルコンピュータが連携して、ARMマイコンへの移行を検討している技術者向けに開催されたものである。これとは別に、ARMの正規代理店であり、認定トレーニングセンターでもある横河ディジタルコンピュータでは、初級者向けの基礎講座から上級者向けの応用講座まで、ARMマイコンに関するさまざまなトレーニングコースを用意して、技術者のスキルアップに貢献している。このような各種セミナーへの参加やトレーニングコースの受講が、ARMマイコンを使いこなすための早道である。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:Spansion Inc.(スパンション)
アイティメディア営業企画/制作:EE Times Japan 編集部/掲載内容有効期限:2014年4月18日