IDEを使わずにLPCXpresso LPC1768のプログラムを開発する

overview

mbedかLPCXpressoのどちらかを選べといわれたら、初めてなら迷わずmbedをおすすめします。一方LPCXpressoは、code_red社のLPCXpresso用IDEが使えます。デバッグも含めた開発環境が整っています。デバッグは便利ですが。ひとしきりmbedで遊んだら、より安価なLPCXpressoに挑戦してみるのもいいでしょう。ただし、code_red社のLPCXpresso用IDEは、無料バージョンには、コードサイズ128KB制限があったり、C++に対応していなかったりで、いまいち使い勝手が良くありません。

そこでIDEに頼らない開発環境を構築します。OSはUbuntuを使用します。もちろんWindows上でVMware内で走らせてもOKです。

配線

LPC-Linkは使用できませんので、ブートローダモードでプログラムを書き込みます。そのためにLPCXpressoにシリアルポートを接続します。

【転載】http://ecrafts.g.hatena.ne.jp/Lynx-EyED/20100810

下記PDFの様に配線します。

配線例 (PDF)

接続テスト

P2_10ピンをGNDに接続して、リセットスイッチを押し、シリアルターミナルから9600bpsで接続し、「?」をタイプすると、「Synchronized」という文字列が帰ってきたら成功です。

synchronized

OSの準備

パッケージの豊富さのメリットを享受するため、Ubuntuを採用します。

apt-getかSynapticを使って、g++-4.5-arm-linux-gnueabiをインストールします。

g++

VMwareを使用する場合は、シリアルポートをVMwareに認識させる必要があります。

書き込みツールをインストール

lpc21ispをインストールします。

http://sourceforge.net/projects/lpc21isp/ からソースコードをダウンロードしてmake。

$ make
$ sudo cp lpc21isp /usr/local/bin/

クイックスタート

とりあえずLEDを点滅させてみます。

blink.tar.gz

シリアルポートが /dev/ttyS0 に接続されていると仮定します。

$ tar zxvf blink.tar.gz
$ cd blink
$ make
$ make write

次のような表示になれば成功です。

write

P2_10のジャンパピンを外して、リセットボタンを押したら、LEDが点滅します。

LPCXpressoでmbedの真似をする

ubuntu 11.04のための訂正 (2011-08-07)

執筆中

TODO

制限事項

arm-elf-gcc開発環境を構築

Ubuntu上で作業します。

以下のファイルをダウンロードし、作業用ディレクトリに展開しておきます。

gmp

soramimi@vm-ubuntu:~/develop/arm-elf$ cd gmp-5.0.2
soramimi@vm-ubuntu:~/develop/arm-elf/gmp-5.0.2$ mkdir build
soramimi@vm-ubuntu:~/develop/arm-elf/gmp-5.0.2$ cd build
soramimi@vm-ubuntu:~/develop/arm-elf/gmp-5.0.2/build$ ../configure --prefix=/usr/local --disable-shared
soramimi@vm-ubuntu:~/develop/arm-elf/gmp-5.0.2/build$ make
soramimi@vm-ubuntu:~/develop/arm-elf/gmp-5.0.2/build$ sudo make install

mpfr

soramimi@vm-ubuntu:~/develop/arm-elf$ cd mpfr-3.0.1
soramimi@vm-ubuntu:~/develop/arm-elf/mpfr-3.0.1$ mkdir build
soramimi@vm-ubuntu:~/develop/arm-elf/mpfr-3.0.1$ cd build
soramimi@vm-ubuntu:~/develop/arm-elf/mpfr-3.0.1/build$ ../configure --prefix=/usr/local --disable-shared --with-gmp=/usr/local
soramimi@vm-ubuntu:~/develop/arm-elf/mpfr-3.0.1/build$ make
soramimi@vm-ubuntu:~/develop/arm-elf/mpfr-3.0.1/build$ sudo make install

mpc

soramimi@vm-ubuntu:~/develop/arm-elf$ cd mpc-0.9
soramimi@vm-ubuntu:~/develop/arm-elf/mpc-0.9$ mkdir build
soramimi@vm-ubuntu:~/develop/arm-elf/mpc-0.9$ cd build
soramimi@vm-ubuntu:~/develop/arm-elf/mpc-0.9/build$ ../configure --prefix=/usr/local --disable-shared --with-gmp=/usr/local --with-mpfr=/usr/local
soramimi@vm-ubuntu:~/develop/arm-elf/mpc-0.9/build$ make
soramimi@vm-ubuntu:~/develop/arm-elf/mpc-0.9/build$ sudo make install

binutils

コンパイルが終わったら、arm-elf-gccのシンボリックリンクarm-elf-ccを作成しておいてください。これを忘れるとnewlibのコンパイルに失敗します。

soramimi@vm-ubuntu:~/develop/arm-elf$ cd binutils-2.21.1
soramimi@vm-ubuntu:~/develop/arm-elf/binutils-2.21.1$ mkdir build
soramimi@vm-ubuntu:~/develop/arm-elf/binutils-2.21.1$ cd build
soramimi@vm-ubuntu:~/develop/arm-elf/binutils-2.21.1/build$ ../configure --target=arm-elf --prefix=/usr/local/arm-elf --enable-multilib --with-gmp=/usr/local --with-mpfr=/usr/local --disable-werror
soramimi@vm-ubuntu:~/develop/arm-elf/binutils-2.21.1/build$ make
soramimi@vm-ubuntu:~/develop/arm-elf/binutils-2.21.1/build$ sudo su
root@vm-ubuntu:/home/soramimi/develop/arm-elf/binutils-2.21.1# make install
root@vm-ubuntu:/home/soramimi/develop/arm-elf/binutils-2.21.1# cd /usr/local/arm-elf/bin
root@vm-ubuntu:/usr/local/arm-elf/bin# ln -s arm-elf-gcc arm-elf-cc

gcc前半

CとC++を有効にしてconfigureしますが、まずCコンパイラだけインストールします。

soramimi@vm-ubuntu:~/develop/arm-elf$ cd gcc-4.5.3
soramimi@vm-ubuntu:~/develop/arm-elf/gcc-4.5.3$ mkdir build
soramimi@vm-ubuntu:~/develop/arm-elf/gcc-4.5.3$ cd build
soramimi@vm-ubuntu:~/develop/arm-elf/gcc-4.5.3/build$ ../configure --target=arm-elf --prefix=/usr/local/arm-elf --with-float=soft --disable-shared --with-newlib --enable-languages=c,c++ --enable-multilib --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local --with-system-zlib CFLAGS_FOR_TARGET="-Os -mthumb -msoft-float"
soramimi@vm-ubuntu:~/develop/arm-elf/gcc-4.5.3/build$ make all-gcc
soramimi@vm-ubuntu:~/develop/arm-elf/gcc-4.5.3/build$ sudo make install-gcc

newlib

コンパイルの時(一般ユーザ)とインストールの時(root)両方で export PATH=/usr/local/arm-elf/bin:$PATH をします。

soramimi@vm-ubuntu:~/develop/arm-elf$ cd newlib-1.19.0
soramimi@vm-ubuntu:~/develop/arm-elf/newlib-1.19.0$ mkdir build
soramimi@vm-ubuntu:~/develop/arm-elf/newlib-1.19.0$ cd build
soramimi@vm-ubuntu:~/develop/arm-elf/newlib-1.19.0/build$ export PATH=/usr/local/arm-elf/bin:$PATH
soramimi@vm-ubuntu:~/develop/arm-elf/newlib-1.19.0/build$ ../configure --target=arm-elf --prefix=/usr/local/arm-elf CFLAGS_FOR_TARGET="-Os -mthumb -msoft-float"
soramimi@vm-ubuntu:~/develop/arm-elf/newlib-1.19.0/build$ make
soramimi@vm-ubuntu:~/develop/arm-elf/newlib-1.19.0/build$ sudo su
root@vm-ubuntu:/home/soramimi/develop/arm-elf/newlib-1.19.0/build# export PATH=/usr/local/arm-elf/bin:$PATH
root@vm-ubuntu:/home/soramimi/develop/arm-elf/newlib-1.19.0/build# make install

gcc後半

C++コンパイラをインストールします。

soramimi@vm-ubuntu:~/develop/arm-elf$ cd gcc-4.5.3
soramimi@vm-ubuntu:~/develop/arm-elf/gcc-4.5.3$ cd build
soramimi@vm-ubuntu:~/develop/arm-elf/gcc-4.5.3$ make
soramimi@vm-ubuntu:~/develop/arm-elf/gcc-4.5.3$ sudo make install 

LCDをつなぐ

ledlcd

lcd

サンプルプログラム

ledlcd.tar.gz

コンパイルが終了したら、P2_10ピンのジャンパピンをショートして、リセットスイッチを押してから、make writeするとLPCXpressoに書き込みが行われます。

tar zxvf ledlcd.tar.gz
cd ledlcd
make
make write

書き込みが終わったら、ジャンパピンを外して、リセットスイッチを押すと、LEDが点滅しながら、LCDの数値がカウントアップします。