ラベル LPC810 の投稿を表示しています。 すべての投稿を表示
ラベル LPC810 の投稿を表示しています。 すべての投稿を表示

2014年2月27日木曜日

LPC800-MAXでトラ技ARMライタを使う



LPC800-MAXでLPCXpresso LPC1347ボードを使うと同じくLPC800-MAXに載っているLPC812を無効にする。

上の写真のようにSWDのSWCLKを配線する。(XP24⇔J1-5 D13)

LPC800-MAX用の公式ファームウェアでもCMSIS-DAPだけは出来るであろうが、
mbedのようにドラッグアンドドロップ書き込みしたいのでLPC800-MAXのファームウェアを変更する。
lpc11u35_lpc_if.bin
ソースコード:https://bitbucket.org/va009039/lpc1347_cmsis-dap

mbedオンラインコンパイラのEA LPC11U35 QuickStart Boardのバイナリーが使えるようになります。
ターゲットのシンボルは TARGET_LPC11U35_401 です。

***

更に、トラ技ARMライタにも同じファームウェアを書込むと、
LPC810,LPC1114FN28,LPC1347,LPC1768のmbedインターフェースにもなります。
target LPC11U35 トラ技ARMライタ LPC800-MAX
SWDIO P0_8 CN1-6 J1-6 D12
SWCLK P0_7 CN1-8 J1-8 D10
nRESET P0_2 CN2-19 J2-2 D6

LPC810への配線例。


(2014/2/27)
---

2014年2月7日金曜日

LPC810専用のISP書込みPythonスクリプト

LP800シリーズのISP(In-System Programming)を理解するために
Python + pySerial でフラッシュ書込みスクリプトを作ってみました。

Write to RAMコマンドはLPC1114シリーズとは違い、バイナリーデータを変換しないで送るだけです。
ユーザマニュアルには "OK" が返ってくるように書いてあるが、試してみたところ何も返ってこなかった。

使用例:
c:\python27\python lpc81isp.py lpc810_helloworld_LPC812.bin --port=COM27

参考:
LPC800 User manual

ソースコード:

(2014/2/7)
---

2013年12月29日日曜日

mbedオンラインコンパイラでLPC810を使う

LPC812(LPC800-MAX)とLPC810ではRAM容量が違う。LPC812のバイナリーではLPC810は動かない。

次のプログラムをリンクするとリセットハンドラーを既存のコードに上書きします。
スタックポインタ(SP)を 0x10001000 から 0x10000400 に変更します。
__main()の4バイト先から実行しているのはスタックポインタが再設定されるのをスキップするためです。


プログラミング例:
lpc810_helloworld

実行例:


(2013/12/29)
---

2013年11月29日金曜日

LPC810でLPCOpenを使う



LPCOpenサイトからLPC800-MAXのアーカイブをダウンロードする。
http://www.lpcware.com/content/nxpfile/lpcopen-platform
http://www.lpcware.com/system/files/lpcopen_2_01_lpcxpresso_lpc812max.zip

LPCXpresso IDEにインポートする。


LEDがLPC810のP0_0に接続している場合は、board.c の ledBits を変更する。


MCUをLPC812からLPC810に変更する。


NO_BOARD_LIB を定義する。


コードサイズを抑えるために最適化する。


コードサイズを抑えるためにRedlib(none)を使う。


ビルドする。

(2013/11/29)
---

2013年11月28日木曜日

LPC1114FN28とLPC812とLPC810のフラッシュアルゴリズム

例えば、mbedmicro/CMSIS-DAP/interface/target/hal/DBG_NXP/ DBG_LPC1768/target_flash.h の代わりにインクルードしてビルドする。

LPC812/LPC810の場合はセクターサイズは1Kバイト。LPC1114FN28は4Kバイト。
LPC1768/LPC1769の為にプログラムの64Kバイト以上の領域はセクターサイズ32Kバイトで書き込む。(未確認)
書き込む時にセクターを消去。target_flash_erase_chip()ではセクター番号0だけを消去。

注意:mac,safariは書き込んだプログラムを読みだして再書き込みしているようなので動かないかもしれない。(未確認)
target_flash_erase_sector()を使う書き込みは未確認。

(2013/11/28)
---