概要
LPCXpresso LPC1768 評価ボードに書き込めなくなりました。症状としては、LPCXpressoでProjectをBuild後、[Debug 'periph_blinky' [Debug]]ボタンを押しても、以下の様になって書き込めません。
LPCXpresso評価ボードに書き込む際エラーが出る、LPCXpress IDEのスクリーンショット |
//一番上に出てくるダイアログ
02: Failed on connect
02: Failed on connect
Cannot find selected MEM-AP (check target power)
Emu(0): Conn&Reset. Was: None. DpID: 2BA01477. Info: HID64HS12
//二番目に出てくるダイアログ
Error in final launch sequence
Failed to execute MI command:
-target-select extended-remote | crt_emu_cm3_nxp -msg-port=61865 -g -mi -2 -pLPC1769 -vendor=NXP -e0 -wire=hid
Error message from debugger back end:
Remote communication error. Target disconnected.: No error.
Remote communication error. Target disconnected.: No error.
//LPCXpressoのConsole
LPCXpresso Debug Driver v6.0 (Sep 10 2013 00:02:23 - crt_emu_cm3_nxp build 1208)
Looked for chip XML file in D:/nxp/LPCXpresso_6.0.2_151/lpcxpresso/bin/LPC1769.xml
Looked for vendor directory XML file in D:/nxp/LPCXpresso_6.0.2_151/lpcxpresso/bin/nxp_directory.xml
Found generic directory XML file in D:/nxp/LPCXpresso_6.0.2_151/lpcxpresso/bin/crt_directory.xml
Failed on connect: Em(01). Cannot find selected MEM-AP (check target power)
Conn&Reset. Was: None. DpID: 2BA01477. Info: HID64HS12
環境は
IDE : LPCXpresso v6.0.2 [Build 151]
OS : Windows 8
LPCXpresso 評価ボード : LPC-Link取り外しておらず、USBハブを通じてケーブルで接続
そもそもなんでFailedになるのか
そもそもMEM-APってなんだよ?と云う話ですが。Memory Access Port (MEM-AP), which is designed for connection to memory bus system with address and data controls.詳細はADIv5とかの長いPDFを読まないと分からないんですが、Cortex-M*コアをデバッグする際の、メモリにアクセスする部分が、LPC-Linkから見つからないよといった感じでしょうか…。
因みに、エラーメッセージで検索すると、code_redのFAQページが出てきます。
DebugErrors - ** Code Red Support Site **
どうやら、TIのLM Flash Programmerというツールを使って、Flashを"mass erase"するみたいです。ただ、LPCXpresso評価ボードについての話じゃないようなので、ちょっと正しいのか疑問です。
このFAQによれば、
One thing that can happen is that certain code configurations can make it difficult (or impossible) for the debugger to communicate over JTAG or SWD. Things like programming JTAG/SWD signals to GPIO, or the setting the system clock to an invalid or out-of-spec value. Since the debugger takes some time to connect and a little bit of code always gets run when connecting, it becomes a race to connect before the bad code gets (http://support.code-red-tech.com/CodeRedWiki/DebugErrorsから引用)だそうです。つまり、プログラムのせいでJTAG/SWDのポート機能を書き換えてしまったとか、内部クロックの設定を間違えたのが原因の1つみたいです。
あまり他にこのエラーになった方はいないようですが、LPCWareを見てみると、こんな投稿がありました。
Code enters DeepSleep, now I can't connect debugger | www.LPCware.com
GPIO経由でFlashMagicを使うみたいですね。
14/3/18 書き込んでBlinkyまで確認しました。
LPC-Link部分とLPCXpresso部分は分離しなくても良い…?
LPCXpresso LPC1768の回路図を見たところ、次のように書かれていました。http://laboratorios.fi.uba.ar/lse/tools/2012-ide/LPCXpressoLPC1768revA.pdfより。 |
既に切り離されたLPCXpresso… |
FlashMagicで書き込む
1)公式サイトからFlashMagicをDLし、インストールします。2)Serial to USBか何かを用意し、そのポート番号(COM **とか)をチェックします。
ISPモードでUART経由で書き込むので、PCにシリアルポートが無い場合は、FT232などVirtual COM機能を持ったICでUART→USB変換をします。私は秋月のFT232モジュールを使いました。
3)