OpenOCD小ネタ14 -LPC1500シリーズの書き込み対応-
●LPc1500シリーズのフラッシュ書き込みに対応
長らく肥やしにされておりましたが先週あたりにようやくコミットされました。
LPC1500シリーズはIAPのアドレスがLPC1000やLPC800シリーズとは別の場所に
ありますが、単純にLPC1500用のアドレスを追加するだけでOKでした。
上のリンクのやり取りの通り、LPC1500はCortex-M3シリーズであり常にthumbモード
なのでアドレスを奇数に設定してやる必要があります。ユーザーマニュアルは微妙に
取り違えやすい表現になっていて最初ちょっと混乱しましたが今はOpenOCD以外にも
オープソースなプログラムがあるのでそちらも参考にさせてもらっています。
●LPCLink2ConfigurationTool もパワーアップ!
さて、書き込む対象はLPCXPressoV2が仕込まれたLPC1549XPressoです。
購入当初デバッガ側に書き込まれていたCMSIS-DAPのファームはFL1100のUSB3.0ホスト
コントローラから認識せず(F**K!)仕方なくmbed版のCMSIS-DAPを使用しました…
しかしVCP/MSDと折半になるのでただでさえ遅い速度が更に遅くなりしかも書き込み
後もターゲットのLPC1549をつかんだままになるので完了せずエラーになるという
ちょっと不便な代物でした。
しかし今年11月になってようやく大幅更新されてリニューアルしました。
こんどのものはmbed版じゃない通常のCMSIS-DAPでも仮想COMが実装され、MBED版
CMSIS-SAPに近い構成になっています。ちなみにLPC-Link2も同じように仮想COMが
使用可能となってます。
しかも書き込みスピードがちょっと早くなってます。今のHIDのチマチマ書き込みの制限だと
2kb/Secくらいの早さでしたがUSB3.0ポートだと5kB/Secくらいにアップしてます!
やったね!
…と言いたいところですがUSB2.0のポートだと逆にパワーダウンして0.48kB/Secに
落ち込んるのが判明orz
はやくOpenOCDにもCMSIS-DAPのブロック書き込みが実装されますように…
ちなみに新しいLPCLink2ConfigurationToolはJLinkのファームウェアもありますが残念
ながらこちらは何ら変更はなくSRSTの直接操作不能バグありのままです。
LPCLink2をJlinkとして使用されている方はSRSTのコントロールは省略してください。
Cortex系ではsysresetreqが代用できます。
OpenOCD小ネタ13 -ビルド環境のアップデートとWindows8.x一部対応-
20150106追:
現在おきぱにあるopenOCDバイナリはWindows8系にも完全対応してます。
20150106追:
OpenOCD等のWindows版バイナリをビルドする際は、私はMsys/MinGWを使用し、GCCの
バージョンは4.7.3でずっと使用してきておりました。しかしこれからのツールの趨勢に備え、
相変わらずの重い腰を上げてビルド環境のアップデートを試みました。
●msys-coreのアップデート
yamidori98氏のレポートによるとパラレルでmakeした時(-j2とかのスイッチかました時)に
ハングする可能性が指摘されていてパッチを当てたmsys-1.0.dllに差し替える必要がある
そうです。OpenOCDをビルドする際は最後のmakeが並列化してますのでこれは適用すべき
かと思います。(64bit版Win7ではまだハングに遭遇してませんが)
ビルドに関してはコマンド一発でdllその他諸々をアーカイブしてくれるスクリプトファイルが
提供されていたので非常に助かりました。ありがとうございます。
●makeを3.82に
同じくレポートを参考に現状最新v3.82のmakeをmakeしました。そうだね駄洒落だね。
こちらもスクリプトファイルを用意してくれていたのでありがたく利用させていただきました。
●GCCをアップデート
最初に述べたとおり、従来よりrubenvbさん所の個人ビルドのGCC4.7.3を使用していました。
実はGCC4.8系に上げてビルドすることを過去に何度か試してみたことがあったのですが、
libgcc_s_sjlj-1.dllが無いとかInterlockedCompareExchange@12が見つかりませんだとか
そういうエラーに阻まれてとりあえず動くの優先!ということでそれらのエラーが出ない
4.7.3を使ってきた次第です。
これらのエラーはバージョンが上がる際の一時的なものだろうとスルーしていましたが
アップデートを考えていた4.9.2でも同じようにlibgcc_s_sjlj-1.dllが無い問題が発生したので
仕方なくいろいろ調べているとlibstdcとlibgccを明示的にスタティックリンクにしてやれば
dllを求められることがなくなることがわかりました。
libusbでいうとCFLAGS,CPPFLAGS,CXXFLAGSに"-static-libgcc -static-libstdc++"
を付与すれば終わりです("-static"は特に付けなくても大丈夫でした)
しかしそれだけではうまくいかなくて得られたlibusb-1.0.dllを差し替えると今度はlibftdi1.dllで
InterlockedCompareExchange@12が見つからないとエラーを吐いてきました!
こちらに関してはdllとそれ呼び出すexeが異なるバージョンのGCCでビルドされていた
場合に発生することがわかりEXEもDLLも全て同じGCC4.9.2でビルドするようにして
解決しました。最終的にOpenOCDをはじめとしてUrJTAG,vsprog,Flashrom,avrdudeも
GCC4.9.2版のビルドで安定して動作せしめられるようになりました♥
●Windows8でSTLink/V2-1がOpenOCDから繋がらないこともなくはない
環境がGCC4.9.2化出来たので、今度は使用するユーザーが増えて多数報告を戴くように
なった"Windows8.x系でSTLink/V2-1が載ったNucleo板がOpenOCDから繋がらない問題"
に漸くまともに取り組みました。
といっても私はWin8機を所持しておらず副業先のPCたちも全部Windows7機だったので、
不具合を再現させるための環境が全くなく問題の切り分けも困難を極めておりました。
で、唯一Windows8.1を所持している知り合いの方に頼んで3〜4日オーダーのフィードバック
速度でああでもないこうでもないを繰り返し、ついにlibusb-1.0をビルドするときに当てて
いるAsmedia対策のパッチが原因だったことを突き止めました!
またAsmediaか!!
最初にAsmedia対策パッチを検証した際にXPと64bit版Win7では全く問題ないことを確認
していたのですがWin8ではUSBデバイスの取り扱いもさらに厳しくなった(?)ことからパッチを
適用した部分が仇になってデバイスをOpen出来なくなっていたようです。
幸いにも2014年11月現在は別の切り口でAsmedia対策のパッチが提供されていてそちらの
パッチに変更してビルドしたlibusb-1.0.dllではWindows8でもばっちり動作しました♥
長かった…
というわけでWindows8.1系OSでもOpenOCDが利用できるとっかかりが出来ました。現在
Win8環境下で私が動作保証できる組み合わせは以下のデバッガアダプタです。
1:STLink/V2-1(Nucleo板,STM32F053Discovery)
2:STLink/V2(Discovery系板たくさん)
何れもSTマイクロ配布の公式ドライバ(WinUSB)を適用したものです。
もしあなたの環境で上記の場合でもうまくいかない場合、Zadigを使用し以下の手順で
STLink/V2-1のUSB複合デバイスの親("composite parent") に無理やりWinUSBを適用
して単独の”STLink/V2”として使用する荒業もあります。ただしこれをやると仮想COMや
mbedのマスストレージ書き込みが一切使用できなくなりますのでご了承ください。
とりあえず通常のドライバを適用した後Zadigを起動し、
"List All Devices"にチェック入れる、
"Ignore Hubs or Composite Parents"のチェック外す
すると"STM32 STLink (Composite Parent)"が現れるのでこれをWinUSBに置き換える
入れ替えの際に間違えて違うデバイスにWinUSBを適用してしまうと復帰できなくなる
危険性がありますので細心の注意を払って作業してください。
連絡・質問・免責は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (103)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (11)
- FPGA (4)
- GPS/GNSS (18)
- MISC (75)
- STM8 (1)
- Wirelessなアレ (16)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (23)
- 1Wire温度センサDS18B20の偽物を追え!
⇒ ねむい (04/26) - 1Wire温度センサDS18B20の偽物を追え!
⇒ (04/08) - 中国自然歩道を往く -北伐!県境を越えて鳥取県に侵入せよ!-
⇒ ねむい (12/23) - 中国自然歩道を往く -北伐!県境を越えて鳥取県に侵入せよ!-
⇒ ひかわ (12/18) - 中国自然歩道を往く -北伐!県境を越えて鳥取県に侵入せよ!-
⇒ ひかわ (12/18) - いろいろ試す51
⇒ ねむい (06/26) - いろいろ試す51
⇒ ひかわ (06/10) - STM32G0使ってみる4 -1wireデバイスをいろいろ使ってみる-
⇒ ねむい (12/14) - STM32G0使ってみる4 -1wireデバイスをいろいろ使ってみる-
⇒ ひかわ (12/05) - 大緊急事案!!!1!Raspberry Pi Picoはぢめました!!1!!1
⇒ 竹本浩 (08/14)
- May 2023 (2)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (7)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.