小ネタ 2013-016

8pin DIP ARMマイコンを試してみる

NXPの8pin DIPパッケージのARMマイコンを試してみた。(2013-06-06)
 
 NXP製 LPC810


1. 用意するもの

 
 LPC810マイコンボード「LPC800-mini」 , (回路図)

 Windows PC

 ソフト(無料でダウンロードできる)
 ・開発用ソフト LPCXpresso IDE
 ・LPC810用サンプルプログラム LPC810_CodeBase
 ・シリアル用Flash書き込みソフト FlashMagic

 USB-UART変換ケーブル FTDI製「TTL-232R-3V3」 (秋月電子などで購入できる)
 


2. サンプルプログラムのビルド

 
 LPCXpresso IDEを起動し、LCP810_CodeBaseというサンプルをOpenして、ビルドする。
 無事にビルドされて、LPC810_CodeBase.binと、LPC810_CodeBase.hexが生成される。

 LPCXpresso IDEのv5.2.4を使った。


3. FlashMagicでマイコンのFlashメモリにソフトを書き込む

 PCと、LPC800-miniを、TTL-232R-3V3で接続する。
 
 接続した。
 電源3.3Vがケーブル側から供給される。
 (最初から青色LEDが速い速度で点滅するソフトが書き込まれていたらしく、電源が入るとLEDが点滅する。)

 
 FlashMagicを起動し、先程ビルドしたLPC810_CodeBase.hexを書き込む。

 Step1、マイコンの種類をLPC810M021FN8に設定する。
 Step2、Erase blocks used by Hex Fileのチェックボックスにチェックを入れる。
 Step3、書き込むhexファイルをBrowseボタンで指定する。
 Step4、Verift after programmingのチェックボックスにチェックを入れる。
 Step5、Startボタンで書き込みを開始する。
 書き込み開始するときに、LPC810-mini基板のプッシュボタン2つを押したままにしてStartする。
 書き込みが開始されたらボタンを離す。
 あとは自動で書き込みとVerifyが行われる。

 書き込んだソフトは、リセットボタンを押して実行させることができる。
 青色LEDの点滅が確認できた。
 (最初から書き込まれていたソフトよりもゆっくり点滅)

 ちなみに、FlashMagicのバージョンは7.50.3174を使った。


4. FTDI breakoutで書き込み

 
 FTDIのUSB-UART変換ICのブレークアウトボードを使って、書き込みを試してみた。
 ボードはsparkfun製で、5Vの回路に接続するタイプのものを使った。
 Link: FTDI Basic Breakout - 5V - SparkFun Electronics

 LPC810のピンは5Vトレラントなので、信号ピンを5Vの回路に繋いでも問題ない。
 無事に書き込みをすることができた。

 電源は、シリアル接続ピンの部分から取っている。
 LPC800-miniの回路図を見るとR1、R2の0Ωの抵抗で3.3Vか5Vを選択できるようになっていて、5V側に半田付けされて出荷されているようだ。

 TTL-232R-3VRを使った場合、3.3VがLPC800-miniの5V回路側に入ってしまい、LPC810マイコンの電源3.3Vをレギュレータで作るときにちゃんと電圧が出てないのかもしれない。書き込みは無事にできているので実質的な問題ないのかもしれない。


5. LPC-Linkで書き込み

 LPCXpressoというNXP製のマイコン評価キットのLPC1114版LPCXpressoを前に購入して持っている。
 この評価キットの基板は、2つに切り離して、片側をLPC1114マイコンボードとして使って、もう片方をLPC-Linkというデバッガ用I/Fとして使うことができる。

 LPC810のプログラム書き込みやデバッグには、LPC-Linkを使うこともできるというので試してみることにした。
 Link:
  「LPC810 (= DIP8_ARMマイコン) + LPCXpresso」で,Lチカ (LED点滅)プログラムを動かしてみる
  LPC810をもらいました! - 半田ごてを握ったら書くブログ

 
 写真左がLPC-Linkで、右がLPC800-mini
 接続しているケーブルは、FFSD-05-D-12.00-01-Nという品番でDigikeyで売っているものを使った。
 JTAG用の10ピンコネクタで接続しているが、LPC810の場合にはJTAGは使えなくて、SWDという方式の信号が使われる。

 
 LPCXpresso IDEから使ってみたのだけど、接続に問題があるのかエラーで繋がらない。
 Initializing LPC Link(HID)という表示で処理が刺さってしまって、ある程度時間が経過するとタイムアウトでエラーの表示が出た。

 LPCXpresso評価キットの基板を2つに切断するときに、力を掛けすぎて壊してしまったのかなあ?

 (後日加筆 2013-06-12)
 @nxpfan(NXP公式)さんに助言を頂いた。
 >> [1] LPC-Link(1.1)では10pinのコネクタに電源を用意していないので,LPC800基板側でUSBコネクタ等から給電してください
 >> [2] 先に書き込んだプログラムでは,LPC810のSWDピンをLEDに使ってしまっています.このためFlashMagicなどで一旦Flashを消去してピン状態をデフォルトに戻してからSWD接続を試みてみて下さい

 [1]についてはちゃんと給電している。[2]についてSWDピンをLEDに使ったものを書き込んだままにしていたので、FlashMagicのEraseメニューで消去してみた。
 しかし、状況は変わらずタイムアウトしてしまう。

 DIP8ピンARMマイコンではなく、もともとのLPCXpresso評価キットの基板の片割れのLPC1114ボードに接続してもやはり駄目だった。

 LPC-Linkが故障しているのかどうか、デバイスマネージャーで認識されているかどうかチェックしてみた。
 
 デバイスマネージャーからUSB Device with DFU Capabilitiesという名前で認識されていて、デバイスドライバは正常に動作しているっぽい。
 なぜうまく動かないのか、まだいまのところ原因不明だ。

 (後日加筆 2013-06-16)
 PC-Link2を試したり、PCを変えたり色々と試した結果、原因はUSBケーブルにあるようだというのが分かった。
 ケーブルを別のものに交換したらあっさりと動作した。

 あと、PC-Link2を使ったあとは、設定をPC-Link(HID)に手動で設定し直さないと動作しないので注意が必要だった。
 

 LPC810の評価ボードLPC800-miniに載っているUSER LEDは、PC-Linkを使う場合にはSWDという信号ピンと被ってしまい使うことができない。
 LED点滅用ソフトはそのままでは動かすことができないので注意。
 この基板に手を加えてもよいのだが、LPC810のDIP単品を使ったほうがよいかもしれない。


6. LPC-Link2で書き込み

 LPC-Linkの後継機種で、LPC-Link2というのが発売されている。
 LPC-Linkがうまく動かないという問題で悩んでいたので、一旦そちらの解決は保留にしてLPC-Link2を使ってみることにした。(2013-06-14)

 
 LPC-Link2一式
 デバッグに使うための接続用ケーブルが付属している。

 
 LPC-LinkとLPC-Link2の比較
 LPC-Link2のほうが大きい。コネクタが多い。

 10ピンのJTAG/SWDコネクタが2箇所存在している。
 1つはデバッグ用インターフェースとして、デバッグ対象のマイコンに接続するためのもので、
 もう1つはこの基板自体をLPC4370マイコンボードとして使う場合のデバッグ用コネクタということらしい。

 公式の情報などを参考に使ってみる。
 Link - LPC-Link2-CMSIS-DAPデバッガJ-LinkRedLinkになる、アドオンボードでオシロアナライザーにも, OpenOCD, GDB
 LPC-Link2はファームウェアを書き込むことで3種類のデバッガ(CMSIS-DAPデバッガ,SEGGER J-Link,RedLink)になるということだ。
 LPCXpresso IDEで使う場合はRedLinkでよいらしい。

 公式にLPC810とLPC-Link2(RedLink)を繋いで使う例が出ている。
 Link - LPC-Link2を各デバッガにしてデバッグする その1〜Redlink & LPCXPresso, CMSIS-DAPデバッガ & Keil, SEGGER J-Link & Keil〜

 
 LPC-Link2をLPC800-miniに接続してみた

 しかし、うまく動かない。デバイスドライバが動いていないようだ。
 
 デバイスマネージャーからLPC based USB deviceという名前で認識されている。
 デバイス起動時にコケているらしく、正常に動作していないようだ。

 ドライバは、LPCXpresso IDEのv5.2.4をインストールした時に一緒に入っているようだ。
 念のために、最新版を探してインストールするのも試そうとしたが、インストール済みのものより新しいのは無いようだ。
 Link - LPC18xx/43xx WinUSB drivers for DFU boot , WinUSB driver installation (LPC18xx/LPC43xx)

 (後日加筆 2013-06-16)
 上のPC-Linkのところにも書いたが、うまく動かなかった原因はUSBケーブルだったらしく、USBケーブルを交換したらあっさりと動作した。
 LPCXpresso IDEで、自動的にLPC-Link2の設定が行われてRedlinkの初期設定が自動で行われる。
 特に意識することなくデバッガを使い始めることができる。
 


7. OpenOCDで書き込み

 OpenOCD(Open On-Chip-Debugger)を使ったデバッグや書き込みも可能だそうだ。
 ツール工房というところから出ている安価なFTDIのチップを使ったキットADP007を購入した。
 

 ソフトは公式サイトからダウンロードする。
 Link: http://openocd.sourceforge.net/

 Eclipse開発環境で使うことができる。
 LPCXpresso IDEの開発環境でも設定すれば使うことが可能らしい。
 Link: LPCXpresso IDEをOpenOCDデバッガで使う方法 http://avr.paslog.jp/article/2012008.html


(後日加筆 2014-02-17)

 トランジスタ技術の2014年3月号にARMライタが付録で付いてきている。
 

 使ってみようかと思ったら、この付録は部品を追加で通販で購入しないと使えないらしい。
 USBコネクタとかタクトスイッチは手持ちの部品で強引に配線すれば なんとかなるかもしれない。