LPC1114を使ってみる3
こちらとこちらの記事に続いて通算3つ目のLPC1114についての記事です。
前回述べたとおり秋月さんよりDIP版LPC1114が180円で販売され私も購入しました。
"どうせLチカ(LED点滅の意)で終わらすんだろ"とお思いの方が大多数とは思います。
その通り私はDIP版LPC1114をLチカせしめてこの記事を書くためだけに購入しました!
と、すべてに対する防御壁作ったところで今日の本題に入ります…。
●DIP版LPC1114のいいところ
1.ブレッドボードに最適なDIP28Pinなのはいいのですが600mil幅という無駄な広さ
IOとかSRAM削ってる(後述)くせにこの広さって…"ほらDIPにするとこんな
無駄にでかくなっちゃうんだよみんな面実装の奴使おうね★"というメッ
セージなのでしょうか…
2.SRAMの容量がTQFP48Pin(面実装品)の物から半分に削られた
"TQFPパッケージは8kByteも使えるよみんな面実装の奴使おうね★"という
メッセージなのでしょうか…
3.I/OピンがTQFP48Pin(面実装品)の物からいくつか削られた
"TQFPパッケージはもう少しI/Oピンが使えるよみんな面実装の奴使おうね★"
というメッs もうええっちゅうに
LPCXpressoに乗っているLPC1114と違う点は上記DIP版はPowerProfileが追加された
第二世代のLPC1100Lにカテゴライズされる製品となってます。現在はLPC1100XLまで
ラインナップされています。
●Lチカる
基本的にLPC1114のソースコードがそのまま転用できますが、上述のとおり
SRAMが4Kbyteしかないのでスタックの値は要調整です。
私の公開してるプログラムはMARYにも対応してる(内部RCをPLLのソースとする)
ので取り合えず定義をこちらにしてやればVCC・GND・SWDIO・SWDCLKのたったの
4本でOpenOCDから書き込み・デバッグできます。
(なぜかリンカスクリプトファイルを全くいじらず8kByteのままでも
ふつーに動きました…STM32F107VBTみたく隠しでSRAMあるのか!?)
が、
OpenOCDで繋がるってことはソースコード一行も書かなくてもGPIOくらいは
動かせられる(=Lチカれる)ってことで早速やってみました。
ブレッドボードすら使いません!1!
…ねむいさんただTCLの"スクリプト"組んだだけだからねCの"ソースコード"は
一行も書いてないy止めろ石投げるな
●LPC1114(DIP版)にプログラムを書き込む
注:2019年現在はこの方法は古すぎて通用しません!
私の最新のOpenOCDバイナリに同梱されている説明書きと対応MCUをよく読み
コンフィグファイルとコマンドを実行してください!
…さて、今度こそ真面目にソースコードビルドして出来たプログラムを書き込みます。
書き込む方法は何通りもあります。UARTブートローダー(ISP)を利用する場合は
FlashMagicを使って書き込む・ChaN氏のLPCSP使って書き込むという方法が、
さらにSWD接続においてはLPCXpressoを使用して書き込みを行う詳しい方法が
Lynx-EyEDあつ氏から紹介されています。
私が紹介するのはおなじみのOpenOCDからSWD接続のVersaloonやSTLink/V2を使って
書き込みを行う方法です。OpenOCD0.6.0ではCortex-M0並びに一部のSWD接続可能な
デバッガハードウエアのサポートが進められています。
Versaloon使って書き込む方法はこちらやこちらを参考にしてください。
DIP版のはSRAMが4kByteしかないのでLPC1114ではなくLPC11U14
(SRAMが4kByteしかない)と思って書き込みしてやるとうまくいきます。
↑Versaloonで使う場合はlpc11u14_swd_flash.cfgを指定すれば終わりです。
次に、デバッガハードウエアとしてSTLink/V2を使う方法ですがこちらも手順は確立
されていてVersaloon並みに簡単に書き込み・デバッグが可能です。
今回はSTM32F0Discoveryにビルドインされた物をSTLink/V2として使用します。おそ
らくCQ出版系の雑誌記事では営業的な理由で絶対にお目にかかれない内容なので
私が紹介してる方法は貴重なものになるかと思います。
↑外部にSWD線・電源線を引き出す準備です。
↑
lpc11u14_stlink_flash.cfgを選択。
20130501追:
時代は変わり、STLink/v2以外にもベンダ提供APIが使えるデバッガが出来て
きましたので現在はlpc11u14_hla_flash.cfgに変更しております。
-f lpc11u14_stlink_flash.cfg から
-f interface/stlink-v2.cfg
-f target/lpc11u14_hla_flash.cfg
と読み替えてください。
20140829追:
さらに時代は変わりました。
HLA系のデバッガアダプタの使用例はこちらをご覧ください。
ねむいさんのぶろぐで公開しているOpenOCDバイナリはすでにこのコンフィグファイル
は含まれております。また、今回のDIP版LPC1114やLPC11U14等の少SRAMの品種の
書き込みに対応するためにlpc2000.cへのパッチは必須となりますが、ねむいさんの
OpenOCDバイナリはパッチ済ですので安心してお使いください。
20130314改変:
OpenOCDからSTLink/V2を叩く時のデバイスドライバはSTマイクロ提供の物を
そのまま利用可能です。逆に以前使用していたLibUSB(libusb0.1系)は廃止し
使用不可能なのでご注意を!
↓にSTLink/V2で書き込んだときに表示されるメッセージを置きます。
> "C:¥Devz¥Coreutils¥bin¥make.exe" program
openocd -s C:/Devz/ARM/OCD/tcl -f target/lpc11u14_stlinkv2_flash.cfg -c "mt_flash main.elf"
Open On-Chip Debugger 0.6.0-rc1-dev-00015-g47728f9-dirty (2012-08-29-17:12)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.sourceforge.net/doc/doxygen/bugs.html
1000 kHz
none separate
250 kHz
Info : clock speed 250 kHz
Info : lpc11u14.cpu: hardware has 4 breakpoints, 2 watchpoints
target state: halted
target halted due to debug-request, current mode: Thread
xPSR: 0xc1000000 pc: 0x1fff0040 msp: 0x10000ffc
auto erase enabled
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000b4
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000b4
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x81000000 pc: 0x10000004 msp: 0x100000b4
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000b4
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x81000000 pc: 0x10000004 msp: 0x100000b4
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000b4
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x81000000 pc: 0x10000004 msp: 0x100000b4
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000b4
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x81000000 pc: 0x10000004 msp: 0x100000b4
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x10000004 msp: 0x100000b4
wrote 4096 bytes from file main.elf in 0.468753s (8.533 KiB/s)
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x100000e2 msp: 0x10000ffc
target state: halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x61000000 pc: 0x100000e2 msp: 0x10000ffc
verified 1580 bytes in 0.062500s (24.688 KiB/s)
shutdown command invoked
フラッシュメモリの容量が32kB程度なので速度もそれほど必要ないかと思います。
異なる会社間のツールが使用できるのか!?
そもそも出来たばかりの未知のチップに書き込みができるのか!?
否、出来る、出来るのだ!集中線のフォーカスが明後日の方向いてるけど!
20130427追:
↓うまく書き込みができない場合の確認事項↓
1.そんな結線で大丈夫か
->もう一度ターゲットとSTLink/V2のSWD信号がちゃんと繋がってるか確認!
そんな基本的なこと間違うわけないだろって奴に限って間違ってます!
2.そんなDiscoveryのジャンパ設定で大丈夫か
->STM32L/F4/F0DiscoveryにビルドインされたSTLink/V2はデフォルトでは
STM32側に繋がってます。ジャンパを必ず外しましょう。
STLink/V2はマルチドロップSWDに対応していないため通信がこけます。
3.そんなVtgtで大丈夫か(←これで引っかかる人多し!)
->V17以降のSTLink/V2のファームはvtgtをきっちり合わせないと撥ね
られてなんでか書き込みが失敗します。かならず接続しましょう。
STM32L/F4/F0DiscoveryにビルドインされたSTLink/V2では
VtgtからAD入力に繋がる抵抗が未実装なので回路図をよく見て100ohmも
必ず実装しましょう。
おなじみInsightを使用したデバッグ画面。I/OもIOViewも楽々操作です♥
上記の操作をすぐに試すことができるLPC1114DIP版も対応のプロジェクトファイルは
こちらです。ビルド手順はこちらを、デバッグ手順はこちらを参照してください。
DIPに対応するにはmakefileの定義を少し変えるだけでOKです!
●大事なことなので何度でも言います
最後に注意点ですが(これも過去に何度も何度も言及していますが)LPC1114を
初めて使う際は、NxP系のマイコンに存在する"CheckSumValidation"や
CodeReadProtectionも考慮に入れてください。
詳しい解説は本家のユーザーマニュアルに譲りますが、LPC1114では内蔵
フラッシュからプログラムを実行する場合、下図のような構成にされるべきです。
基本的に"ActiveVectorRegion"のCheckSumValidationより少ないアドレスにある
情報はほぼ固定値となるので(変わるとしたらスタックの頭を変えるときくらい)
リンカスクリプト内でも"KEEP(hoge)"で固めておくとビルドのたびに
CheckSumの値を変える必要がなく非常に便利です。
LPCXPressoやmbedではCheckSum値は書き込み時に自動計算されて書き込まれる
のでユーザーは意識しないで済みますが、上記のことを知っておかないと素で
ビルドした時にLPCXpressoで動くはずのプログラムが"動かない"と詰まる
羽目になります。(実際にはISPに飛んで行ってしまいます)
また、CodeReadProtectionも0x2FC番地という場所にあってこれを厳格に
定義してしまうと0xC0~0x2FBまでのフラッシュ領域が無駄になってしまいます。
よってこちらもあまり変えることが無い".data"や".bss"等のSRAM領域の
初期化ルーチンを決め打ちで置いてやるようにすればフラッシュ面積の
無駄になりません。
私が公開しているプロジェクトのNxP系のマイコンはすべて上記の考慮を
しておりますので、AVRやPICから入られた方は、一度リンカスクリプトや
スタートアップファイルをじっくりと読み、どのように組むべきかを把握して
おくとのちのち役に立つでしょう。
あ、NuvotonのNUC120のこと忘れてた…
-
免責・連絡先は↑のリンクを
↓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)
- 日本の自然歩道 (26)
- 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)
- November 2024 (1)
- 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.
Comments
ねむいさん、ご無沙汰しております。竹本です。
Arduinoでのデバッグが面倒なので、LPC1114を使ってArduinoのようなピン配置のlbeDuinoを作ってみました。
URL以下の「Arduino勉強会/0F-lbeDuino誕生」
で紹介しています。お暇な時に見て下さい。
竹本様こんにちは、ねむいです。
ご連絡ありがとうございます。
私の方は相変わらずBare-MetalですがNxP系はLPC1788/LPC4088等
大規模デバイスのサポートを強化しておりますのでよろしくお願いします。
ねむいさん、お返事ありがとうございます。益々のご活躍に今後のブログが楽しみです。
先日、ArduinoのSDカードライブラリをLPC1114に移植する際、FATの構造体で32bitアライメントの罠にはまって8bitと32bitの違いを実感しました。
今後ともよろしくお願いします。
ねむいです。こんばんは。
Cortex-M0はunalignedなアクセスが絶対に許されないので
移植の際はご注意ください。
こんばんはねむいさん、1114入手したので
gcc系での書き込みを求めてこのページへ流れ着いたのですが、
画像があいかわらず全て脂肪なのでorzなのです!(涙
あ、いつもお世話になってます、とくにCMD56のネタは
すごく参考に(意味深)なり助かりました。
(ふたばでは話し辛いのでこちらでお礼)
りょく様こんにちは、ねむいです。
すみません最近更新さぼってましたので復活させてみました。
ただし記事の内容がものすごく古すぎて現在公開しているOpenOCDの
バイナリor同梱のcfgと一部整合性が付かなくなっています。
取りあえずcfgファイルはlpc11xxx_swd_flash.cfgを使ってもらえたら
何とかなると思います!
それと虹裏の私のスレでは電子工作の話あんまししてませんが
聞かれたら答えますのでよろしくお願いします!
Post a Comment