« 薄型CRT(続) | メイン | EWB for ARM »
2007年10月26日
OlimexのLPC-H2888のブートまでの長いストーリー
OlimexのLPC-H2888に触手を伸ばしてみる。調子に乗って、ARM標準のJTAGアダプタにも触手を伸ばしてみる。
が、買ってみたら、OpenOCDからは使えないことが判明。がちょーん。事前の調査不足。
でも他のNXPのARMであるLPC21**とかだと、UART経由で書き込みができることを思い出す。
が、LPC2888のアプリケーションノートの、Getting Started(AN10548_1.pdf)によると、LPC2888はUART書き込みができない、とのこと。がちょーん。でもUSB書き込みができるらしい。
で、LPC2888用書き込みutilityがあることを知る。NXPからget(flash.utility.mass.dfu.lpc2888.zip)。
こいつの書き込みのファイル形式は、*.ebnという形式だが、
↑に付属のHostcryptv2.exeによってバイナリファイル→*.ebnに変換ができるようだ。
そこで、コンパイラ(IAR EWB)の出力ファイル形式を、*.elfから*.binに変更する。(EWBのProject -> OPtions -> OutputConversion / Output format: intel-standard (*.hex)をチェック
*.hexまでこれば、xeditなどで*.binに変換できる。
早速、EWB付属のsampleのLPC-H2888用の、LEDが点滅するサンプルをmakeする。Getting Started.hexができる。こいつを*.binに変換後、*.ednに変換。
早速、LPC-H2888をUSB接続し、↑の書き込みUtility(MassDFUApplication.exe)を起動するが、Bus Topology上に現れず。そういえば、USB接続したときにドライバも要求されない。
そういえば、と思って、LPC-2888のデータシートのChapter3: Boot Processを読み返すと、デフォルトは内蔵Flashからの起動、で、USBからの書き込み時には、P2.3/Mode2ピンを1にして電源を入れないといけないことを発見。
Olimex LPC-H2888で、このピンはどこだ?と探すと、回路図によれば、R16をショートさせればよいようだ。どこだ?と探すと、基板の裏側の、部品がついていないR16のところをショートさせればよい、ことになる。残念ながら、ショーtピンのようなものは立っていないので、ジャンパ線を半田付けし、クリップでつまむようにする。ちゃんとやるときは、ショートピンかなにかを立てたほうがよさそうだ。
このR16をショートさせて、USB接続すると、めでたくドライバを要求される。なぜかドキュメントに出ているデバイス名と異なる名前が出てくるが、↑のUtility内にあるドライバを指定すると、予定通り"USB Device with DFU Capabilities"となる。めでたい。
この状態で、書き込みUtilityを起動して、Bus Topologyを設定すると、めでたくデバイスが見つかるので、↑の*.ednを指定し、Programモードに移って、自動書き込みを指定すると、めでたく書き込まれる。デバイスをはずせ、といわれるので、いったんはずし、R16のショートをはずして内蔵Flash起動モードにして、再度USB接続(給電)するが、LEDが点滅しない。なぜだ。
もしや?と思い、EWBに戻ると、Projectの設定が、iRAMになっている。きっと内蔵RAMのことだろう。プログラムが内蔵RAMに入っていては、電源をいったん落としたら消えてしまうから、動くはずがない。
そこで、Projectの設定をiFlashに変更し、再度make→*.hex→*.bin→*.ednと変換し、再度書き込み。書き込み後、R16のショートをはずしてUSB接続をやりなおすと、LEDが点滅。めでたい。
もしかして、と思って、内蔵RAM用の*.ednを書き込み後、電源を切らずに内蔵Flash起動モードにしてLPC-H2888のリセットを押しても、残念ながら動作しないようだ。この部分は、今後の課題としよう。
ふう。つかれた。
投稿者 akita : 2007年10月26日 22:36
コメント
けっこう大きめ(規模が)のマイコンですね。
何に使うんだろ。こんどこっそり教えてください。
投稿者 まつむら : 2007年10月27日 14:24
ごにょごにょ・・・というほどのものでもなくて、
・やや高速なI/O操作ができて、
・1MBぐらいのRAMがあって、
というあたりで選びました。SH2でMES2も選択肢に入れていたのですが、あまり芳しくなく・・・
具体的には、CMOSイメージセンサをつついたり、外部A/D変換器をつついてデータを多めにためこんだりしようともくろんでいます。
投稿者 akita : 2007年10月27日 20:02
hosoさんから情報をいただく。OpenOCDからLPC2888を認識する方法、というのは、↑のフォーラムのどこかで、まだないので人柱募集、みたいなことが書いてあったような気がする。
----
ARM-USB-TINYはOpenOCDから使えています(5月に入手)。付属CDでドライバをイン
ストールしたあと、ARM-USB-OCD用 cfg ファイルで、
ft2232_device_desc "Olimex OpenOCD JTAG TINY A"
ft2232_vid_pid 0x15BA 0x0004
と変更すればOKです(2行目はWindowsから使う場合は不要)。
ただし、LPC2888を認識できるかはわかりません。
投稿者 akita : 2007年11月07日 20:26
ROMブートの時、CON2-5 とCON2-20 をつなげて、USB起動したら、HPの内容の事ができました。
ここの記事があったお蔭で非常に助かりました。
投稿者 あつしぃ : 2007年12月12日 14:04
あつしぃさん、はじめまして。多少でもお役に立ててうれしいです。
投稿者 akita : 2007年12月12日 14:52