ARMマイコンはじめました。

いかづちSqueak

2016年05月28日 14:43

はじめました。2013年6月頃に。なぜ今頃書くかというと、9割書き上げて放置されていたのを今発掘したためだ。

その頃、LPC810というARMマイコンがでた。
8ピンDIPなのでブレッドボードに直接挿せるという。

これが秋葉原のマルツに入荷したというので早速買いに行った。

売り切れだった。

しかし上位種のLPC812は残っていたのでこれを買ってきた。
LPC812はピン数やメモリ容量、周辺機能といった全ての面でLPC810を上回っており、値段もあまり変わらない。今見ると25円差。当時もたぶんそれくらいだったと思う。
ただ1つだけ重大な欠点があり、パッケージがDIPではなくSOPで扱いづらい。
ハーフピッチのユニバーサル基板でピッチ変換してみたが、後悔した。めっちゃめんどい。

秋月でちょうどいい変換基板が80円で売られているのでお勧めだ。

さてこの石はPICやAVRと違って専用の書き込み機が必要ないので出費が少なくて嬉しい。

書き込み用の接続は開発環境が無くても試せるのでまずこれを試す。

用意する物はシリアルポートと7404(NOT)か何かとあと抵抗。
自分はこんなこともあろうかとシリアルポート付きのPCを買っているが、きっとUSB-シリアル変換ケーブルでも大丈夫だと思う。
7404は要するに論理を反転できればいいので7400(NAND)とか7402(NOR)でもよい。自分が使ったのもNANDだ。
シリアルポートとの接続はこのページを参考に直結した。
軽く説明すると、シリアルポートの受信側インピーダンスは3kΩ~7kΩらしいのでそのための4.7kΩと、電圧が高いので電流を落とすための100kΩである。

この回路をLPC812のUSART0ポートに接続、そしてブートローダーを立ち上げるためにPIO0_1をGNDに落とす。
以上で準備は完了。

電源を繋ぎ、適当なターミナルソフトからデータ8bit、パリティなし、ストップ1bit、速度任意の設定で「?」の1文字を送信する。
成功すれば「Synchronized」が表示されるはずだ。


接続に成功したので次は開発環境のLPCXpressoIDEをいれる。登録とか要るのでまあ適宜なんとかする。
さらに書き込みソフトのFlashMagicをいれる。

IDEを立ち上げる
左下に「Quickstart Panel」があり、その中の「Start here」の中に「Import project(s)」
Examplesフォルダが開いてるのでその下から
\NXP\LPC800\NXP_LPC8xx_SampleCodeBundle.zip
のようなものを探してあとは適当に全部入れる。
Project Explorerを見ると色々入っている。BlinkyというモノがLEDを点滅させてくれそうだ。してみるとこれだけ入れればよかったか。まあいいや。
Blinkyを選んだ状態でメニューからProject→Build Projectを選択。
すると何やら動きだし、デバッグビルドができたようだ。リリースビルドの方が良かったかと切り替えてみたら何やらエラーが出た。まあデバッグで困ることもないしいいや。
さてビルドができたのでFlashMagicから書き込もうとしてみるが、できたファイルはaxfで書き込むためのファイルはhexのようだ。
調べてみるとどうやらaxfファイルはIDEから直接書き込んでデバッグとかするためのファイルのようで、hexファイルを出力するにはaxfから変換する必要があるようだ。めんどい。
http://support.code-red-tech.com/CodeRedWiki/OutputFormatsを参考に
下のバーの右手側にあるというプロジェクト名を探したら左側にあったが、気にせずCtrlクリック。
intel形式のhexファイルにしたいので
arm-none-eabi-objcopy -O ihex blinky.axf blinky.hex
を実行。失敗。ファイルが無いと言われる。
パスが違ってた。こうだな
arm-none-eabi-objcopy -O ihex debug/blinky.axf blinky.hex
今度は成功。思っていたところの1階層上に出力されたがまあいいや。

あとはFlashMagicで適に設定して書き込み。これは難なく成功した。


ブートローダー設定用のGNDに落としたピンを外して電源を入れると
…動いた!

3つのLEDが順番に消灯する。多分順番に点灯するべきなので、+-を間違っているようだがまあいいや。

その後TVにカラー出力など試していた

が、命令プリフェッチの関係かクロック数がどう数えても合わないので力尽きた。
より困難な(プリフェッチ幅が広く、I/O命令が遅い)LPC1114でNTSCカラー出力を実現したPancake(IchigoJam周辺機器)はすごいと思う。尊敬する。

関連記事