twitter icon   twitter icon   rss icon

Linux.com Japan

Home Linux Jp チュートリアル ARM mbed を使った組み込み開発

ARM mbed を使った組み込み開発

原文はこちらです。
 
mbed
マイクロコントローラーは、プロセッサ、メモリ、および外部接続用のコネクターを持っています。マイクロコントローラーを使って、サーボ モーターを制御したり、ボタンとスクリーンを追加して個人用カレンダーを作ることができます。マイクロコントローラーは、オペレーティング システムを動作させることはできませんが、簡単なプログラムを電源投入直後に開始することができます。
 
Mbed プラットフォームは、オープン ソース環境で ARM Cortex-M ベースのマイクロコントローラー ボード用の制御プログラムを C/C++ で開発することができます。
 
BeagleBone Black (訳注: 日本語訳はこちら) などのシングル ボード コンピューターに使用されている ARM CPU は、0.5 から数 G バイトのメモリを持ち、Linux のような完全なオペレーティング システムを動作させることができます (詳しくは、著者の Linux.com における Linux を動かせる ARM ベース コンピューターに関するレビューを参照)。それに対して、ARM Coretex-M はマイクロコントローラー レベルのチップで、16-100MHz で動作し、2-100K バイトの内蔵 RAM とフラッシュ メモリを持ちます。フラッシュ メモリに実行プログラムを蓄えます。
 
Mbed プラットフォームを使うことで、Linux マシン上に ARM ベースのマイクロコントローラー用のプログラム開発環境を構築できます。mbed IDE は、ウェブ ブラウザでアクセスしたり、Linux デスクトップ上にダウンロードして使用することができます(以下の説明を参照)。
 
マイクロコントローラーを使用する組み込み開発者は、mbed をセットアップすることでさまざまな利便を受けます。多数の読者は Arduino 環境に慣れるでしょうし、Atmel 328 マイクロコントローラーも使うことでしょう。mbed プラットフォームは、用途に最適なマイクロコントローラー ボードと、プロジェクトに最適なコンパイラーを教えてくれます。
 
たとえば、3 から 4 ピンのシングル SPI バスのみが必要な小さなプログラムであれば、経済的なチップが適当でしょう。一方、スクリーン、DSP コードが必要なプログラムを開発する場合は、もっと強力な CPU と 100K バイトのメモリを持つボードが必要になります。mbed を使うと、用途に合った適切なマイクロコントローラーを選択することができます。

プログラム開発

Mbed IDE は、ウェブ ブラウザーから使用します。ログインして、目的のボードを選択します。プログラムを開くか、作成し、コンパイルして、バイナリをダウンロードしてハードウェア上にインストールします。mbed マイクロコントローラーを Linux デスクトップに接続すると、1 つ以上のストレージ デバイスが出現します。このデバイスは、USB フラッシュ ドライブと同じに見えます。複数のデバイスが表示された場合、1 つは非常に小さな容量で、他方は、mbed ハードウェアが持つフラッシュ メモリのサイズと同じ容量になっています。
 
mbed を使い始めた時、考えたことは、他のハードウェアのサポートです。Arduino の長年の広がりにより、各種周辺ハードウェア用のライブラリが充実してきました。最初に Nordic Semiconductor rf24 チップをテストしてみました。mbed は、このチップ用に多数のライブラリを用意しています。その中には、Maniacbug's nRF24L01+Arduino ライブラリがあります。
 
最初、rf24 を動かすためにかなりの時間を費やしました。2 台の Nucleao F401RE ボードを持っていましたが、関連のウェブ サイトには、ファームウェアを更新しろと出ていました。ファームウェア更新用のページを見てみましたが、問題に関係するような情報はありませんでした。とりあえずファームウェアを更新してみると、rf24 は問題なく動作しました。しかしその時点では、Linux から ST Nucleo F401RE のファームウェアを更新する方法はありませんでした。
 
次にテストしたのは、RePaper display のバージョン 1 ボードです。Nucleo F401RE の最初のテストの時、1 つの表示はできましたが、2 つの表示はできませんでした。NXP LPC1768 ベースの Arch Pro ボードでは、最初のイメージすら描画できませんでした。BeagleBone Black のドライバーで、同じ display を使用すると、問題なく動作しました。つまり、ハードウェアと epaper ライブラリの相性のようです。

Linux デスクトップ上で IDE を利用する

たいていの開発は、オンライン IDE を使ってできますが、好みのエディターを使いたい場合や、ウェブ ブラウザーを使いたくない場合があります。
 
ローカルで開発するときは、GCC ARM Embedded toolchain をダウンロードします。たとえば、gcc-arm-none-eabi-4_9-2014q4-20141203-linux.tar.bz2 をダウンロードし、/usr/local に展開します。PATH に /usr/local/gcc-arm-none-eabi-4_9-2014q4/bin を追加します。オンライン IDE からプロジェクトをローカル マシンにダウンロードします。まず、プロジェクトを右クリックし、使いたいボードを選択します。GCC (ARM Embedded) をツール チェーンとしてエキスポートします。これで zip ファイルが作成されるので、ウェブ ブラウザーでダウンロードできます。
 
zip ファイルを適当なディレクトリで展開し、トップ ディレクトリへ cd します。トップ ディレクトリの名称は、ダウンロードしたプロジェクトの名称と同じです。GCC ARM を使って、make コマンドでバイナリをビルドし、ハードウェアにバイナリをコピーします。
 
大事なファイル (訳注:ボードのピン対応表) として、たとえば、mbed/TARGET_NUCLEO_F401RE/TARGET_STM/TARGET_NUCLEO_F401REw/PinNames.h があります。TARGET ディレクトリの名称は、使用するボードにより異なります。F401RE の場合、Auduino のピン D2 が PA_10 に対応し、LED1 から LED4 が PA_5 にマップされることを覚えておくと、プログラムを記述する時に役立ちます。

ハードウェアと根気

SPI、TWI、デジタル、アナログ入出力のための API が mbed に用意されています。デジタル入出力の文法は、Arduino IDE のそれと比べて簡単です。mbed では、簡単にピンの入出力を切り替えできます。モードが必要な場合には、ピン オブジェクト自体が切り替えメソッドを持っています。mbed は、threading や、HTTP、Web Sockets、NTP、SMTP の各クライアントを含む TCP/IP 通信機能を持っています。
 
mbed は、多数のマイクロ コントローラーをサポートしているので、新しく mbed 互換のボードを手早く使用できます。ST Nucleo F401RE のようなハードウェアは、$10 ちょっとで購入できるため、組み込みに使用するのに最適です。ePaper display で、いろいろありましたが、どのようなプラットフォームを使うにせよ、ハードウェアをいじくることは、多少の根気が必要です。
 
図 1 オープン ソース環境である mbed プラットフォーム。多数の ARM Coretex-M ベースのマイクロコントローラー ボードに、C/C++ で開発したプログラムを書き込める。
Linux Foundationメンバーシップ

30人のカーネル開発者

人気コンテンツ

  1. Today's Linux 2018/04/11 2018年 4月 10日
  2. Today's Linux 2018/04/16 2018年 4月 15日
  3. Today's Linux 2018/04/17 2018年 4月 17日
  4. Today's Linux 2018/04/19 2018年 4月 18日
  5. Today's Linux 2018/04/20 2018年 4月 19日

Linux Foundationについて

Linux Foundation はLinux の普及,保護,標準化を進めるためにオープンソース コミュニティに資源とサービスを提供しています

 

The Linux Foundation Japan

サイトマップ

問い合わせ先

サイトに関するお問い合わせはこちらまで

Linux Foundation Japan

Linux Foundation

Linux Training

提案、要望

Linux.com JAPANでは広く皆様の提案、要望、投稿を受け付ける予定です。

乞うご期待!