初歩から学ぶ、マイコン開発とARMプロセッサー:「mbed」で始めるARMマイコン開発入門(1)(2/2 ページ)
組み込みの世界では最も成功したプロセッサの1つ「ARM」を用いたマイコン開発にチャレンジします。クラウド開発環境「mbed」を使い、プログラムを書きながら回路をブレッドボードに実装、動作を確認しながらさまざまな内蔵デバイスの使い方をマスターしていきます。
「LPC1114」概要
ターゲットマイコンであるLPC1114について説明しておきましょう。仕様的にいうと以下の特徴があります。
- ARM Cortex-M0搭載 低消費電力32bitマイコン
ARMはさまざまな用途向けにプロセッサのIPを提供していますが、LPC1114が搭載する「Coretex-M0」はその中でも、最も低コストでエントリーレベルのシリーズです。低消費電力ですが処理能力的にはあまり高くないので、OSを搭載したり、マルチメディア用途には向きませんが、用途を限定すれば十分に活用できます。
とはいえなんと32bitなんですよね。筆者が組み込みを始めた四半世紀前は8bitマイコンが主流でしたから、最初から32bitのプロセッサで組み込み開発を始められるなんて、読者の皆さんがうらやましい限りです。
- 最大50MHzのクロックスピード
昔の8bitマイコンのクロックスピードは1MHzや2.5Mhz、速くても4MHz程度でしたから、これも比較すれば圧倒的なパワーですね。しかもARMはRISC(Reduce Instruction Set Computer)と呼ばれる命令処理の手段を採用しています。RISCは1つ1つの命令長をそろえることで、パイプラインという高速化手法を効果的に利用できます。そのため大部分の命令を1クロックで実行するという特徴を持ちます。
ちなみにRISCと対比して語られるCISC(Complex Instruction Set Computer)は、単純な命令と高機能の命令が混在しており、命令のバイト数や実行するクロック数が命令によって異なります。
- 十分なメモリ領域
LPC1114にはさまざまなバリエーションがあり、DIPタイプの「LPC1114FN28」では、32KBのFlashメモリと4KBのSRAMメモリを備えています。
Flashの32KBというのがプログラムを書き込むために用意されたメモリ領域で、外部から書き込み器を使うと何度も書き直すことが可能です。しかしLPC1114で動作するプログラムからは(一般的に)これらの領域を書き換えることはせず、電源を切ってもこの領域のデータは保存されています。またSRAMの4KBというのがデータ領域です。プログラムの中で使う変数や、スタックが使う領域となります。この領域はプログラムから自由に読み書きできますが、電源を切ると内容は保存されません。
SRAMの4KBというのは少し頼りない気もしますが、これも用途次第といったところでしょうか。プログラム領域の32KBはCやC++などのコンパイラ言語を使って組み込み用途として生成するコードには十分な容量といえるでしょう。
図4がLPC1114シリーズのメモリマップです。4GBのメモリ空間の中にこの2つのメモリ領域と周辺デバイス(ペリフェラル)のレジスタが割り当てられています。これはノイマン型アーキテクチャーと呼ばれています。これに対してマイクロチップテクノロジーのPICやATMELのAVR(Arduinoに採用されたマイコン)などはプログラム領域とデータ領域のメモリ空間を分けたアーキテクチャを採用しています。これはハーバードアーキテクチャと呼ばれ、メモリ空間が別々のため命令の読み出しとデータのアクセスを同時に行いパフォーマンスを向上させるメリットがあります。ARMシリーズの中にもこのハーバードアーキテクチャを採用したものもあります。
このような高性能かつ使いやすいマイコンが登場する以前はどうだったかというと、これらのメモリはすべて外付けで、プログラムを格納する領域には「EPROM」がよく使われていました。このメモリの内容を書き換えるときはEPROMの表面に開いた窓に紫外線を照射して初期状態に戻す必要がありました。
この窓を開けたままにしておくと、日光や蛍光灯によって中のデータが消えてしまうこともありました。そのため出荷時にはこの窓を銀色のシールなどで塞いだものです。当時はプログラム修正を頻繁に繰り返すと、照射する紫外線で部屋の中がオゾン臭くなったものでした。その後、記録されたデータを電気的に消去できる「EEPROM」が登場してからはオゾン臭に悩まされることはなくなりました。
- 内蔵RCオシレータ(12MHz、1%精度)
デジタルコンピュータはステートマシン(有限な数の状態(ステート)の間を行き来するタイプの論理回路。同時に複数の状態を取ることはできず、任意の時点で必ずある1つの状態を取る)の中で最も成功した例ともいえるでしょう。
ステートマシンである以上、全ての回路が同期を取るためのクロックが必要です。確かにハイパフォーマンスコンピューティングの世界では、クロックに同期しないで命令を逐次処理するアーキテクチャも研究されていますが、その話はさておき、一般的なコンピュータはこれがなければ全く動きません。
LPC1114の場合クロックを生成するために外付けクリスタルもつけることも可能ですが、クロックを内蔵しているのです。水晶発振とは異なり抵抗とコンデンサで発振させているため多少精度には難がありますが、あまり正確なタイミングを必要としない用途に十分です。
- 豊富な周辺機器
図5にLPC1114のブロックダイヤグラムを示します。シリアルポートやSPI、I2C、ADC、タイマーなど数多くの周辺機器がこの1パッケージに納められています。図6にこれらの周辺機器からの入出力ピンの割り当ても示しています。今回の連載ではこれらの周辺機器を1つ1つつプログラムから制御する方法を紹介していくつもりです。
豊富な周辺機器を備えますが、皆さんがよく使うPCでおなじみのUSBやイーサネット、HDMIなどは含まれていません。それはPCがインターネットなどのネットワークにつながる事と、人を相手にする事を前提に作られたコンピュータだからです。
LPC1114のようなクラスの組み込みマイコンが単独で高速・広域のネットワークにつながることはまれで、組み込まれた機器の中で人知れず動くことが使命なのです。ですからキーボードもディスプレイも必要ない場合が多いのです。
おわりに
今回はマイコン開発の大まかな流れや用語解説、それとターゲットマイコンであるLPC1114についてお話しました。次回からは開発環境についてお話します。マイコンの開発自体はクラウド環境で行いますので、Webブラウザさえあればできますが、手元のマイコンにできあがったプログラムを書き込む作業は皆さんのPC上で行う必要があります。というわけで次回は皆さんのPCで準備しなければならないことについてお話します。お楽しみに。(次回へ続く)
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ルネサス、Cortex-A9採用ボードでmbedプロジェクトに参加
ルネサスがARM mbedプロジェクトに参加する。ARM Cortex-A9をCPUコアとするRZ/A1グループを搭載した対応ボードを用意し、2014年末より販売を開始する予定だ。 - ARM「mbed OS」の現在地
ARMが発表したIoT向けOS「mbed OS」は2015年10月のリリースを目指して作業が進められており、その意図するものもある程度は見えてきた。Bluemix連携やMUCの55mmシフトなどトピックの多いmbed OSの「いま」を解説する。 - ARM開発環境準備の第一弾、書き込み器を用意する
この連載では、組み込みの世界では最も成功したプロセッサの1つ「ARM」を用いたマイコン開発にチャレンジします。今回は開発環境準備第1弾として、「書き込み器」の用意をします。 - ESP8266にmbedマイコンを接続してM2Mを実現する
話題の技適モジュール「ESP8266」を使ってIoTを手作りするこの連載、今回はESP8266にmbedマイコンを接続してM2Mの実現を図ります。 - クラウド開発環境「mbed」の使い方とターゲットマイコンへの書き込み
この連載では、組み込みの世界では最も成功したプロセッサの1つ「ARM」を用いたマイコン開発にチャレンジします。今回は開発環境準備第2弾として、クラウド側の開発環境設定と、バイナリの書き込みまでを進めます。