フラッシュ書込み

フラッシュ書込み

mbed に対応したプラットフォームが増えてきたので、 mbed interface チップが付いていないマイコンへ書き込む方法。

シリアルブートローダーまたはSWDを使う方法があります。

USBブートローダーを内蔵しているものもありますが、ここでは省略。

シリアルブートローダー

マイコンに内蔵されたブートローダーを起動して、パソコンのシリアル(USBシリアル等)をUARTへ接続して書込みます。

PCLPC1768LPC11U24LPC810LPC1114FN28
RXD---[100R]---P0.2P0.19P0.4P1.7
TXD---[100R]---P0.3P0.18P0.0P1.16
DTR---|<|---RESETRESETRESETRESET
RTS---|<|---P2.10P0.1P0.1P0.1
GND---------VssVssVssVss

RTS と DTR は逆流防止のダイオード等をはさみ接続します。(自動リセット用)
RTSを接続できない場合は GND につなぐ。

※シリアルは3.3Vへのレベル変換がされてるものとします。 FT232等のUSB=シリアル変換が便利です。

ISP書込み 補助ツール

コマンドライン型のフラッシュ書込みソフト lpcsplpc21isp をGUIで簡単に操作できるツールを作りました。
Flash Magic のコマンドラインにも対応しました。(対応デバイスが増えます)
HexTool に対応しました。(objcopyがないときに)

/media/uploads/okini3939/lpcwrt.png

ダウンロード (2020/03/25 更新)

  • [Browse]ボタンで各ファイルのあるパスを指定しておいてください。
  • [Convert and Write]ボタンで書き込みます。(lpcspはhexのみ対応なので、元がbinならhexへ変換します)
  • [Convert]ボタンは.binを.hexへ変換します。(チェックサムやCRPもこのとき処理します)
  • リセット端子やISP端子を自動的にコントロールでき、手動でブートローダーモードにする必要がありません。
  • bin ファイルへチェックサムを付加できます。(gccなどから生成された.binファイル用)
  • bin ファイルへ CRP (Code Read Protection) 情報を付加できます。
  • arm-none-eabi-objcopy.exe (GCC ARM, Sourcery G++ Liteなどに含まれる) があれば bin ファイルを hex ファイルへ変換できます。
  • arm-none-eabi-objcopy.exe は、Arduino IDEに含まれる avr-objcopy.exe でも使えます。
  • TeraTerm を起動して PC Serial へ出力された文字を表示できます。printfデバッグに便利です。
  • TeraTerm を開いたまま書込みをしようとしたときは、COMポートを解放するため自動的にTeraTermを閉じます。
  • 新たに接続されたCOMポートを知らせるようにしました。(PortPopのマネ)

Flash Magic

http://www.nxp-lpc.com/images/Flash_Magic.png

http://www.flashmagictool.com/

.bin ファイルから .hex ファイルへの変換は bin2hex を使うとできます。

シリアルワイヤデバッグ (SWD)

CMSIS-DAPデバッガになる LPC-LINK2 を使って、SWDから書込みます。

http://www.nxp-lpc.com/lpc_boards/lpc-link2/

※他にも、LPCXpressoを使って書込むこともできる。

CoFlash

CMSIS-DAPに対応したフラッシュ書込みツールです。

http://www.coocox.org/software/CoFlash.php

ダウンロード

http://www.coocox.org/images/Coflash/F_Q2.jpg



7 comments on フラッシュ書込み:

10 Jan 2015

LPCWRTを使ってLPC1114FN28にプログラムを書き込むことは出来たのですが、LPCWRTからteratermを開いてもteratermが[未接続]VTとなり、「ファイル」->「新しい接続」から接続しなおそうとするとLPC1114が止まってしまいます。解決する方法があれば教えてください。

04 Feb 2015
04 Feb 2015

Ryota Yamada さん

書込み補助ツールのzipに、ファイルを一つ入れ忘れていました。お手数ですがもう一度ダウンロード して上書きしてください。

原因は、TeraTermで普通に起接続すると、DTR/RTSがLowに固定されてしまい、CPUがリセットされたままになるためです。 このツールでは、マクロを読み込ませてDTR/RTSをHighにしているのですが、そのファイルを忘れていました。

04 Mar 2015

Suga Koubou 様

分かりました。ありがとうございました。

28 Jun 2016

Suga koubouさん LPCWRTをいつも便利に使わせて頂いてます。ありがとうございます。 本題ですが、以下2点 質問させて下さい。

1. ドラッグアンドドロップでファイル選択を可能にするなど、改造をしてみたいのですがLPCWRTはオープンソース化  されないでしょうか?

2. teratermを開いている状態での書込(Convert and Writeボタンを押す)が、lpc21ispとlpcspで 挙動が違うようですが、  こちらは仕様でしょうか?(なお事実上ほぼ、不便さは感じていませんので、このまま放置でも何も問題ないと思っています) lpcsp: teratermが閉じられ、書込がスタート lpc21isp: 1回目の書き込みボタンでteratermが閉じる。2回目の書込ボタンで書込が始まる。

14 Jul 2016

> ohtsuka さん

フィードバックありがとうございます。
1. エクスプローラー等からのドラッグ&ドロップに対応しました。
2. teratermを閉じてcomポートが開放されるまでのタイミングにより、書込み時にcomポートがオープンできていないのかもしれないので、teratermを閉じてから書込みを起動するまで少し時間を空けるようにしてみました。

ソースコードは汚いのでオープンにするのははばかられるのですが、もしご入り用でしたら個別にお送りします。(開発環境は Delphi です)

25 Oct 2021

FTDI のUSBシリアル変換(FT232R等)をWindowsで使用するとき、次の記事を参考に待ち時間の設定を変更すると、書き込み速度が大幅に早くなります。 https://blog.goo.ne.jp/jh3kxm/e/7f13cb3d84a623947b4608a84fe2035a (by jh3kxm)

Please log in to post comments.