LPC810のプログラムをUbuntuで開発する


  • LPC810の公式開発環境LPCXpressoは、Linux版が用意されている。無料版のLPCXpressoは開発できるプログラムの大きさに制限があるが、コンパイラの最適化に制限はない。
  • 公式の開発環境を使用しないでもプログラムを作成することができる。
  • LPC810にプログラムを書き込むにはlpc21ispを使用する。
  • Ubunt上に開発環境をセットアップして、実際にLEDをチカチカさせるプログラムで動作確認を行った。

2014-01-13_2

先日秋月のWebページを散歩していたら、Androidに使われているのと同じアーキテクチャのARMマイコンコーナーにたった8ピンしかないARMマイコンLPC810を見つけました。たった8ピンのDIPパッケージとはまるでPICマイコンかタイマーICの555みたいです。それにおもしろいことにLPC810には内蔵機能を使うための関数がROMとして初めから組み込まれています。これならフラッシュ領域以上の働きをするプログラムを作成できます。しかし、その時は「へー」で終わっていました。

ところが昨日本屋さんに寄ったら、その8ピンARMマイコンLPC810が付録になっているトランジスタ技術を見つけました。ちょうど年末から電子工作に目覚めてLEDをチカチカさせて遊んでいる所だったので、週末ちょっと遊ぶには良いかもとオマケのLPC810目当てにトランジスター技術を買って来ました。

今回はUbuntu(Linux)で開発環境を整えて、動作確認のためにLEDをチカチカさせるところまでやってみました。

LPCXpressoをインストール

Windows向けに無料の開発環境があるのは当たり前になっていますが、Ubuntu(Linux)環境でソフトを開発するにはコンパイラ等のツールを準備するのが大変かなと覚悟していました。しかし案ずるよりは産むが安し、Windowsと同じLPCXpressoがLinux向けに提供されていました。なので開発環境を準備するには、公式ページからLinux向けのインストーラをダウンロードしてインストールするだけでした。

tar zxf Installer_LPCXpresso_6.1.2_177_Linux-x86.tar.gz
./Installer_LPCXpresso_6.1.2_177_Linux-x86

LPCXpressoをインストールするには管理者権限が有無を言わせず要求されます。sudoを付けないで起動すると、ダイアログが表示されて管理者権限を取得するパスワードの入力を求められました。

無料版のLCPXpressoは、開発できるプログラムサイズに制限がありますが、コンパイラの最適化などに制限はないようです。インストール後にアクティベーションをするとプログラムサイズの上限が256KBに引き上げられます。もっともLPC810のプログラム領域は4KBなのでアクティベーションをしなくても困らないと思います。

GUIが不要ならば

もしどうしても公式のGUI開発環境を使いたくないということであれば、GNUツールを使っても開発は可能です。

開発に必要なGCCは次のようにインストールします。

sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install gcc-arm-none-eabi

もしかするとLPCXpressoのコンパイラー(これもGCC)をコマンドラインから使えるかもしれません。

プログラムを書き込むツールをインストール

出来あがったバイナリー(hexファイル)は、lpc21ispというプログラムを使ってコマンドラインから書き込みます。このコマンドがシリアル回線を使ってプログラムをLPC810に書き込んでくれます。

lpc21ispのインストールは次のように行います。Ubuntu 13.10ならば既にレポジトリにlpc21ispが登録されているので直接installに進めます。

sudo add-apt-repository ppa:kamalmostafa/lpc21isp
sudo apt-get update

sudo apt-get install lcp21isp

Switch Matrixツール

今回のテストには不要ですが将来LPC810の各ピンに割り当てられている機能を変更する場合、設定にはWebベースのツールLPC Initializer and pinmuxが使えます。

動作確認にLチカ

LEDを点滅させるLチカ用プログラムは、ただの動作確認なのでGithubに公開されているLPC810 CodeBaseを使うのが便利です。

git clone https://github.com/microbuilder/LPC810_CodeBase.git

このプロジェクトをLPCXpressoにインポートしてビルドするか、srcディレクトリーに移ってmakeしてLチカプログラムのhexファイルを作成します。

回路の組立

LPC810 CodeBaseはPIO0_2(4番ピン)にLEDを接続する事を想定して書かれているので、それに合わせて次のような回路を組み立てます。

2014-01-13_1

LPC810のデータシートを確認するとPIO0_2とPIO0_3はIOHが最低20mAと他(4mA)に比べてドライブ能力が高いのでH出力でLEDが点灯するようにしても大丈夫です。LEDは何でもいいのですが、私はお手軽な抵抗内蔵LEDを使っています。

また電源電圧が最高3.6Vということにも注意が必要です。お手軽安定電源であるUSBの5Vをつなぐと壊れます。今回のテスト程度ならば、USB-シリアル変換モジュールの3.3V出力を使えるかもしれませんが、今後を考えると3.3Vの電源を確保しておくことが必要です。

Lチカを書き込む

作成したプログラムは、次の手順で書き込みます。

  1. ISPモードにするため、5番ピンをGNDに落とした状態でリセットします。
  2. 次のコマンドでプログラムを書き込みます。
    sudo lpc21isp blinky.hex -term /dev/ttyUSB0 115200 12000
    

    -termオプションでプログラム書き込み後にターミナルモードに移行し、LPC810で実行されるLチカプログラムの出力を待ちます。通信速度を変更しても書き込みに問題はありませんが、Lチカプログラムからの出力が文字化けします。

  3. ISPモードから抜けるために、5番ピンをオープンにしてリセットします。問題無ければプログラムが実行されてLEDが点滅して、ターミナルには「Hello, LPC810!」という文字列が次々に表示されます。
  4. ESCを押すとlcp21ispが終了します。

参照

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です