2015年7月8日水曜日

LPC-Link2のCMSIS-DAPファームを更新したら認識しなくなったけど解決

LPCScrypt(最近リリースされたLink2やLPCXpressoV2/V3系ボードのファームを焼くためのツール)で最新のCMSIS-DAPファームを書き込んだら、PCから認識しなくなって、困って、解決しますた。

原因は、CMSIS-DAPファームのバージョンアップに合わせて、PCのドライバも更新していなかったためです。

ドライバを更新してない時の症状は、デバイスマネージャーにCMSIS-DAPデバッガが表示されず、シリアルポートの「LPC-LinkⅡ UCom Port」のみが表示されます。

LPCXpresso最新版(v7.8.0_426)にもLPCScryptと同じCMSIS-DAPファームが入っているので、LPCXpressoでも同様の現象が発生するかもしれません。(JP1刺さずUSBブートでCMSIS-DAPファーム利用する場合など)

インストールを行う前に古いドライバを削除しておくことをオススメします。
ドライバのインストーラはLPCXpresso v7.8.0_426に同梱されています。
デフォルトのままインストールされているなら、インストーラのパスは
"C:\nxp\LPCXpresso_7.8.0_426\Drivers\lpc_driver_installer.exe"になります。

インストールが成功し、CMSIS-DAPファームを焼いた状態でLink2を接続すると以下の画像のように認識されて正常に動作します。



2015年7月7日火曜日

mbed AutoTransferバージョンアップしました(v1.03)

mbedAutoTransferの説明ページを作りました。
初めての方はこちらを御覧ください。
http://kinomuku129.blogspot.jp/p/mbedauto.html

今回のバージョンアップで、11Ux系への対応として「イレースモード」を追加しました。

11U系はバイナリ転送前に、ドライブ内の「firmware.bin」を消去する必要があるため、そのための機能です。
 イレースモードを有効にすると、バイナリ転送前にドライブ内のすべての.binファイルを削除します


ダウンロードはこちらからどうぞ
https://developer.mbed.org/users/nameless129/notebook/mbed-autotransfer-tool/

2015年7月4日土曜日

D&DでCMSIS-DAPデバッガから書き込みを行うバッチファイル

昨日に引き続きバッチファイルネタです(;´∀`)
バッチファイルにD&Dでbinファイルをぶち込むとCMSIS-DAPデバッガを通じてターゲットに書き込みが行えます。

https://developer.mbed.org/users/kazu_zamasu/notebook/USE-to-IRC-on-mbedlib/
ざますさんのノートブックにredlinkへ引数としてバイナリを渡して書き込む方法があったので
それをバッチファイル化しました。

ざますさんのと少し違うのはLPC-Link2をredlink化せず、CMSIS-DAPデバッガのまま使うことです。
CMSIS-DAPデバッガのまま書き込めたので省略しました。
(LPC-Link2のCMSIS-DAPデバッガ化はLPCScryptを使ってください)

手持ちのNXPチップのmbed4種(LPC1768,LPC11U68,LPC1114,LPC824)対応のバッチファイルを作りました。

mbedとしてPCにUSBで接続してる時も使えます(CMSIS-DAPデバッガとしても認識されてるため。USBストレージあるからあまり意味ないけど)
LPC-Link2をCMSIS-DAPデバッガとして動作させている時に同様に使うことができます。
これで非mbedなボードでSWD書き込みが捗ります。今まではCoFlash使ってたけど、824とか対応してなかったんですよね。。。

batファイル3行目のLPCXpressoインストールパスを修正してから使ってください。現状では最新のLPCXpresso v7.8.0_426のパスになっています。
D&Dでbinファイルをbatファイルに放り込むと書き込んでくれます。書き込み後はリセットがかかり、焼いたバイナリが走り出します。

2015年7月3日金曜日

D&Dでbinファイルをhexファイルに変換するバッチファイル

LPCXpresso内のobjcopy.exeを利用して変換するバッチファイルを書きますた。
D&Dでbinファイルを放り込むと同じフォルダに同名のhexファイルが生成されます。

LPCXpressoが必要です。
3行目は適宜LPCXpressoがインストールされてるフォルダに変更してください。

2015年7月1日水曜日

EFM32 Giant Geckoを触ってみた

 ちょっと触らせて頂く機会があったのでいろいろやってみました。

青マーカーが付いているように見えますが、保護フィルムです。剥がしません。

下側のmicroUSBポートはUSBHost/Device用で、左下の電源選択のスライドスイッチをDBG、左側のminiUSBポートに刺すことで電源が入ります。

初期のファームはタッチセンサのデモ。触れると数値が変化します。

環境構築から。
いきなりオンラインIDEでソース書いてバイナリ作ってD&D、かと思いきや初期状態ではできないのでファームウェアをバージョンアップする必要がありました。
そのために純正IDEの「Simplicity Studio」をダウンロードします。アップデータのダウンロードやらでそこそこ時間かかりました。詳細は↓
https://developer.mbed.org/teams/SiliconLabs/wiki/Silicon-Labs-Firmware

で、mbed化もできたところで色々試してみました。
まずはLチカ。これは難なく作成できました。ついでに拙作の「mbed AutoTransfer」も試しましたが、うまく動いてくれました。
ちなみにLEDですがGPIOのPE2,PE3に当たっています。ヘッダにも出ている上、UART1とも被っているので要注意です。というか他のポートでもよかったのでは。。。


次にLCD。サンプル見ればーと思いきや、

この通り書いても動かないんですが(´・ω・`)
他のサンプルソース見て対処しますた。

その他光センサも乗っかってたので、これの値をADで読むのかなーと思いきや普通のポートだったりしたので、それをGPIOで読んだり。
テスタの値は光センサの出力電圧

光センサの電圧が高くなったので、読んでるGPIOもH判定、それに合わせて液晶下の右側LEDを点灯させてます

LCセンサはうまく使えなかったのでスルーしたり。。。

PCとシリアル通信させてみたり。これが一番悩まされました。
mbedとして見えてるドライブの中のReadMeの中身が↓
Silicon Labs J-Link MSD volume.

Copying a binary file here will flash it to the MCU.
Supported binary file formats:
 - Intel Hex (.hex)
 - Motorola s-records (.mot)
 - Binary (.bin/.par/.crd)

Known limitations:
 - Virtual COM port speed is currently fixed at 115200 bps
 - Using other kit functionality such as energy profiling or debugger while flashing is not supported.
   Workaround: Pause any energy profiling and disconnect any connected debug sessions before flashing.
ほうほう、hexだけでなく、mot、bin、までとはなんでもござれっすなあと思った次の段。
ふむ、デフォルトのCOMポートは1115200bpsで固定されてるのね、と。

そしてシリアル通信テストのmbedソフトをボーレート指定せず書いてみるも、PCに通信が来ない。
もしかしてと思い、mbedソフトのボーレートを115200bpsに指定してみるも何も表示されない。
丁度ヘッダにもピンが出ているのでそこをUSB-UARTで覗いてみれば表示される。
ジャンパ飛ばさないといけないのかと色々調べてみると・・・

https://developer.mbed.org/teams/SiliconLabs/wiki/Using-stdio-on-Silicon-Labs-platforms

Board Controller Enable Signal

えぇー・・・('A`;)
ヘッダが出ているPE0とPE1とJ-LinkのUARTが共有になっているので、
J-Linkのチップ保護のためのEnable信号(PF7)・・・ということかなあ。。。
PCと通信させるときはPF7をHにしてからにしましょう。
あとmbedのボーレート指定も115200bpsで。これ以外はmbedチップが通せんぼします。


LCDのパーツがいろいろあったので表示させてみたり。


最後に、mbedチップのバージョンアップ来ませんかね。。。バイナリ転送するたびにシリアル再接続しないといけないし、ボーレートも固定だし、正直、易しくないボードだなあと思いました。
ただボタン電池1コで駆動するのは、小さい機器への組み込みに魅力的ですね。

Simplicity Studioを使ってサンプルを書き込んでみたりしましたが、LPCXpresssoと同じくmsys-1.0問題(勝手に呼んでる)が発生しました。
msys\1.0\bin\make.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
↑のメッセージがLPCXpressoでも見たので同じように改善版をダウンロード↓
http://www.support.code-red-tech.com/CodeRedWiki/VirtualAllocPointerNull
置き換えすることで解消しました。

最後になんだかんだ試したソースを置いておきます。
参考になれば幸いです。
https://developer.mbed.org/users/nameless129/code/blinky_EFM32_Giant/


 参考資料など

EFM32GG-STK3700 Giant Gecko スターター・キット・ユーザ・ガイド
http://www.silabs.com/Support%20Documents/TechnicalDocs/efm32gg-stk3700-ug.pdf

アプリケーションノート一覧
http://www.silabs.com/products/mcu/Pages/32-bit-mcu-application-notes.aspx

回路図
http://www.silabs.com/Support%20Documents/TechnicalDocs/BRD2200A_A03.pdf