OpenOCD0.6.0を使ってLPC1114に書き込み&デバッグする為のめそっど
20160311追:
もう4年前の非常に古い記事ですがアクセスがいまだに多いので補足します。
LPC1100(u系も含む)をOpenOCDで書き込み・デバッグしたい場合は、
ねむいさん謹製のcfgファイルlpc11xxx_swd_flash.cfgをお使いください。
現在はLPC1100系は上記のファイルですべてカバーできるようになっております。
上記cfgファイルを含むねむいさんがビルドしたOpenOCDのバイナリはこちら。
SWD接続が可能なデバッガハードウェアVersaloonは、STM32使いの人たちの間では
オープンソースでSWD接続が手軽に利用できる数少ない手法の一つとして重宝されて
いますが私のぶろぐにもコメントをよくいただいている竹本氏のVersaloonに関する
記事が2012年2月号のトラ技に紹介され、さらに多くの注目が集まるようになりました。
ちなみに記事最後の参考文献の所でトラ技名物の誤植どころか段落が下の段落に
めり込んでめちゃくちゃになって肝心なURLがわからなくなってしまっているのですが
記事を書いた竹本氏は何一つ悪くないです。悪いのはチェックが毎回適当で誤植や検証
もせずにいい加減な記事のせてるCQ出版のほうなんですから!!11!(憤怒
野獣と化したカンガルー先輩に喝入れ直してもらった方がいいと思います。
いちおう丁寧に文章がぐちゃぐちゃになってる箇所をご指摘して差し上げたのですが、
もちろんお詫びと訂正には反映されませんでしためでたしめでt…たくねぇ!
はぁはぁ…すみません話逸れ過ぎました…。
NxP社のLPC1114に代表されるCortex-M0系デバイスはデバッグ用ポートにJTAGは
なくSWDしか存在しません。おまけにOpenOCDのCortex-M0系コアのデバッガの
実装はSWDしか接続方法がないゆえに手が入っておらず、またまたおまけに
Cortex-M0系コアの実装がまだ不完全ゆえにフラッシュ書き込みルーチンも
不完全と3重苦となっています。
しかしながらCortex-M0系のコアはCortex-M3系コアのサブセットなのでほんの
少しの箇所の変更で何とかできるようになります。
また、当たり前のことですが多くのCortex-M0デバイスはSWDしか存在ないので
SWD接続が可能なVersaloonもしくはSTLink/v2必須です
20120712追:
公式でCorte-M0がサポートされるようになりました♥しかしワークメモリが少ない
LPC11U14はopenOCDのビルド時にフラッシュ書き込みのソースにパッチを当てる
必要があります。こちらの手順をご覧ください。
以下の話はVersaloon対応のOpenOCD(0.6.0)がビルドできる環境&ビルド時の多少の
トラブルを回避できる能力を持ってる人対象です!ここでようやく本題!
●LPC1114(Cortex-M0系)専用のOpenOCDを作る
1.先ずはノーマルで動作を確認
gitからとってきた新鮮なOpenOCDのコードにVersaloonのパッチを当ててビルド、
LPC1769やLPC1343にSWD接続で繋がりフラッシュの書き込み/デバッグが正常に
できてるかチェック。問題があれば不具合のないコミットまで巻き戻そう!(逃
2012/01/26現在は私はこれで動作確認しました。あと最近のコミットはSTM32F2/4
系で大バグが作りこまれていますが後述
2.ソースコード修正
openocd/src/target/cortex_m.c内の2025行目あたりにある下記の内容
/* Cortex-M3 has 4096 bytes autoincrement range */
armv7m->dap.tar_autoincr_block = (1 << 12);
を
/* Cortex-M0 has 1024 bytes autoincrement range */
armv7m->dap.tar_autoincr_block = (1 << 10);
に書き換えて再ビルド。
これでLPC1114(Cortex-M0)専用OpenOCDができました。めでたしめでたし。
この中にも上記修正他をまとめたcortex_m0.patchがあります。
3.といいたいところですが
OpenOCD+VersaloonでLPC1114を動かすための特別なスクリプトファイルを
意する必要がありますね。
既に私がフラッシュ書き込みルーチン付きのものを用意しているので、
こちらを使ってくださいね。
ただ注意すべき点は、私も過去に何度も述べてきたNxP系のARMマイコンに存在する
CheckSumValidationです。LPC1114もご多忙にもれず"calc_checksum"を付与
して自動計算した値をフラッシュの所定の番地に書き込んでおかないとユーザ
プログラムが実行されずISPの番地に勝手にすっ飛んでしまいます。
calc_checksum付けなくても前もって計算結果を埋めこんどいてもよいです。
これはmbed等のクラウド環境から離れ初めて地に降りた時"動くはずのプログラム
が動かない"とよく引っ掛かるポイントです。ねむいさんクラウドよりもセフィロス派
なのでmbedはとんと興味ないのですが大事なことなので何度でも言います。
4.LPC1114以外のCortex-M0のマイコンでは可能か?
LPC1227:
->できるじゃない!
同じCortex-M0系のLPC1227も書き込み&デバッグが可能です。しかしLPC1227は
リセット直後はウオッチドッグがONになっているせいかデバッグが途中からに
なってしまいます。うまく動く組み合わせを検証中です。
20120210追:
OpenOCDでattachした直後に一旦ISPのアドレス(0x1FFF0000)に飛んでから
実行するとmain関数の先頭で停まるようになりました!
このスクリプトファイルは公開しております。
LPC11U14:
->できるじゃない!
LPC11U14はフラッシュ書き込みに必要なワークメモリの最小値がどうしても確保
できず、書き込みはできませんでした。フラッシュメモリの消去のみと別な方法
でフラッシュに書き込んだ後デバッグ動作はできます。
20120530追:
LPC2000.c内のマイコン内ワークメモリアロケ―ターの下限値を下げることに
より書き込みが可能なことが分かり、パッチに反映しています!
STM32F0:
->余裕でできるじゃない!
NuvotonのNUC120はvsprogのほうは対応されたのでOpenOCDももうすぐですね♥
尺が余ってしまいましたので小ネタをいくつか
●最近のOpenOCD(0.6.0dev)でSTM32F2/F4系のマイコンにつないだ瞬間に
OpenOCDがセグメンテーションフォールトする
とあるコミットからFlashSizeRegisterなるメモリアドレスにSTM32F2/4系の固有値と
して書き込まれているらしい内蔵フラッシュメモリの実サイズ値を読みだして設定
するという実装に代わっていますが…こいつがでたらめな値を引っ張ってきて設定
しやがるため即ひでぶしやがります…。
"私の環境では問題ないです"とおっしゃられてる方もそういわずに100kByte以上の
バイナリ作って書き込んでみてください。おそらく最初に作りこんだときにLED点滅
するだけのような10kByte以下のバイナリのサイズでしかチェックしてなかったので
ひでぶを免れていただけだったのでしょう。
なんでこんな変なことしてるんだろうと思ってSTM32F4のリファレンスマニュアル
(Doc ID 018909 Rev 1)を参照すると…
先ず0x1FFF7A10に各チップごとに固有のuniqueIDがあって
次に0x1FFF7A10に16bitサイズのFlashSizeがストアされたれじすt…
…アドレスが被ってる!?
なんかドキュメントが変ですよこれ!?
てわけでねむいさんの虎の子のOpenOCD+InsightでSTM32F407ZGT6(RevY)に接続し
該当するメモリの付近を捜索してみましたが…
…アドレス0x1FFF7A22に0x0400(1024kByte)が見える…
これが本物のFlashSizeRegisterかしら…
念のため手持ちのSTM32F2/4系のマイコン片っ端から引っ張り出してアドレス
0x1FFF7A22の値調べてみました。私の手持ちはすべて1024kByteの品種なので、
このアドレスが真のFlashSizeRegisterならば全部0x0400(1024kByte)にならな
ければなりませんがはてさて…
STM32F207VGT6(ES) :0xFFFF
(現在のOpenOCDの実装は0xFFFFだと1024kByteを想定して書くのでセーフ)
STM32F207ZGT6(RevY) :0x0400
STM32F407VGT6(RevA) :0x0400
STM32F407ZGT6(RevA) :0x0400
…ビンゴかよ…ES品の207VGT6は仕方ないですが。
とりあえずOpenOCDとSTMicroの中の人にメッセージ投げときましたけど気づいて
くれるでしょか???だめだったらフォーラムにも。
20120214追:
STから問い合わせ結果返ってきました。やはり0x1FFF7A22が正しいです。
リファレンスマニュアルも後日差し替えしますとのことです。
また、OpenOCDのほうも対応してくれました。
●aitendoさんのTFT-LCDモジュールを使う
そうだよまただよ
こっちとこっちは至ってごく普通のモジュールなんですが、TFT2P0327-Eのほうは
Vledが3.2VtypではなくLED2個直列つなぎの6.2Vなんです…データシートが3.0~3.4
って書いてあっておもいくそ間違ってます。まぁチャイナクオリティ(ry
といいたいところですけどねむいさんが買った3つがたまたまTFT2P0327-Eにくり
そつの別のLCDモジュールだったかもしれませんし大陸系の店は何があるかわから
ないんですけど買ったの今のところ私だけみたいですからまぁいっか…
半透過式の液晶なので視野角が広く太陽光下でもそれなりに見える代物らしいです
-
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (116)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (81)
- STM8 (2)
- Wirelessなアレ (16)
- おきぱ (1)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (25)
- STM32U0はぢめました
⇒ ねむい (08/07) - STM32U0はぢめました
⇒ ひかわ (07/28) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (05/17) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - いろいろ試す61(と今年の反省会)
⇒ ねむい (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/01) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (12/31) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ひかわ (12/31)
- October 2024 (1)
- September 2024 (1)
- August 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (1)
- April 2024 (1)
- March 2024 (1)
- February 2024 (2)
- January 2024 (1)
- December 2023 (4)
- November 2023 (2)
- October 2023 (2)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- 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 (6)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.