読者です 読者をやめる 読者になる 読者になる

Lynx-EyEDの電音鍵盤 新館

広帯域制御屋の駄文とか

Cortex-M0 Arduino互換環境 eXodusinoとブートローダの改良

eXodusino LPCXpresso

前回紹介したeXodusino[エクソダシノ]量産先行品はブートローダを改良しました。
XMODEMを廃止し、無手順UARTによりバイナリを書き込むシンプルな方式です。

eXodusinoプロジェクトはgithubから一式をダウンロードできます。
http://github.com/lynxeyed-atsu/eXodusino/
注意:プロジェクトに含まれているBootloader.axfは評価版扱いです。書き込みファイルサイズに15kB制限があります。
特別な事情がない限りeXodusinoに出荷時に書き込まれているブートローダをご利用ください。なお、書き込みにはLPCXpressoやSWDに対応しだデバッガが必要になります

※制限はなくなりました

  • eXodusinoを使うのに用意する機材
    • eXodusino本体
    • Windowsかubuntuが動作するPC
    • XBee Series2 2台(お互いが透過モードで通信できるように、あらかじめX-CTUなどで設定しておいて下さい。速度は9600baudです)
    • XBee エクスプローラ、MARY-XBボード、XBee FRISKなどPCとXBeeをシリアル接続できるデバイス1台
    • バイナリファイルがシリアルで送信できるターミナル(TeraTerm,ハイパーターミナルなど)
    • LPCXpresso IDE4
  • 基本的にXBeeを接続して使う
    • 書き込みやデバッグメッセージ送信など、基本的にXBee経由で行います。用意した2台のXBee Series2を一方はeXodusinoに、他方はXBeeエクスプローラでPCと接続して下さい。
    • ターミナルソフトとは9600baud 8bit,ノンパリティ,ストップビット 1で接続してください。
  • ソフト
    • 基本的にLPCXpresso IDEを使います。CUIerな方々はarm-none-eabi-gccリンカスクリプトを調教してコンパイルするのもいいと思います。

開発のスナップショット...(クリック→オリジナルサイズを表示で拡大します)
f:id:Lynx-EyED:20120204161539p:image

ご覧のとおり、Arduino語で開発が可能です。写真のツリーの/src/user_application.cppがAdruinoスケッチ(.pde)に相当する部分です。コンパイルはメニューのProject→Build allで可能ですが、ショートカットキーの[Ctrl]+[B]の方が使いやすいです。

  • 書き込み
    • まず、eXodusinoにUSB mini-Bケーブル、または他の方法で給電します。
    • ターミナルソフトを使います。例ではTeraTermを使っています。
    • eXodusinoのCPUリセットボタンを押します

f:id:Lynx-EyED:20120311224839j:image

    • TeraTermの画面でキーボードの[z]を押し続けます。(連打ではなく、押し続けます)
    • リセットボタンから手を離してから、[z]キーからも手を離します

するとこんな画面が出てくるはず
f:id:Lynx-EyED:20120204163014p:image
これでプログラム待ち受け状態になりました。
CUTECOMなど、キーを押したときだけ1文字送信するタイプのターミナルをお使いの方へ:eXodusinoはリセット後、約1秒間待機状態になります。この間にzを1文字入力すればBootloaderモードに遷移します。

  • バイナリファイルを書き込む
    • TeraTermでは[ファイル(F)]→[ファイル送信(S)...]でバイナリを選択できます。

f:id:Lynx-EyED:20120204163015p:image

    • Releaseフォルダの[exodusino.bin]を選択し一番下のオプションメニューの[バイナリ(B)]に必ずチェックを入れます

f:id:Lynx-EyED:20120204163919p:image

    • しばらく書き込みを待ちます。256バイト書き込むごとに[o]の文字が羅列されていきます。もしこれが[x]と表示された場合、書き込みが失敗しています。書き込んだファイルが正しいか確認して下さい。

f:id:Lynx-EyED:20120204163920p:image

最後の[Program end. Rebooting...]というメッセージが少し遅れて(2,3秒程かかる)表示されます。これは続くデータが無いかの確認と、チェックサムを計算しているためです。
f:id:Lynx-EyED:20120204163921p:image
マイコンは自動で再起動します。例ではボード上のカラーセンサーS9706からデータを読み出しています。

なおこのチェックサムが失敗しているか、マイコンが再起動時にキーボードから[z]キーを押していると、再起動時に再び[Welcome to eXodusino..]が表示されます。ご注意下さい。