いろいろ試す7
この度の大地震で被災された皆さまには心よりお見舞い申し上げるとともに
一日も早い復興を願っております。私も復興支援を私なりにやってみます!
…てわけで電子工作野郎になる時間がなかなか取れなくなってしまったので
今回はもともとタイトル通りいろいろやるつもりだった内容を大幅縮小
変更してお送りいたします。
●AVRマイコンを使ったバックアップ機能つきRTC時計
前回軽く紹介していましたが実用レベルになれたので改めて紹介します。
目玉はRTCのバックアップをATMEGA644pのパワーセーブモードで行い、外付けの
RTCのモジュールを排したコストダウン仕様となっています。表示部は部品箱の
肥やしになっていたNoritakeのキャラクタVFDを使い視覚性も良好でLM60を
使用した温度センサで気温も同時表示出来るようにしました。
気になるパワーセーブモード時の消費電流ですが、ADVANTESTのnAオーダーで
測定できるデジタルマルチメーターで測定したところMAX3uA,平均1uAでした。
CR2032(約220mAh)なボタン電池でも単純計算で3000日以上余裕でバックアップ
可能なわけです♥
元主人がATMEGA328で作ってたやつはバックアップ時にAVCCを断つというセコ技を
駆使しても80uA程喰っていたのでそれを鑑みると非常に満足のいく結果と
感じています。
消費電力削減の為にはファームで省電力レジスタ群をいじったり割り込み時の
ステートを考慮するのはもちろんのことですが、VCCまわりの回路構成も非常に
重要です。AVRはSTM32等の今日びのARMマイコンのように独立したパワードメインは
無いので、逆方向漏れ電流の非常に小さいショットキバリアダイオードで
しっかりと分けてやらないとせっかくファームで省電力化できても外部回路から
ダダ漏れとなってしまいます。
こういうの意識しながら作ることを経験しとくと他でも応用が効くと思います。
時計合わせはUARTのコマンドからのみという手抜…シンプルな仕様!
mega328バージョンでは回路に取り込んでいたAVR309を外に出して手抜…
回路の簡素化を図りました!
●STM32マイコンを使ったUSB-CDCが…
※知ってる人もいるかもですがかなり以前の話です
iruka氏のSTM32を使ったUSB-CDCの考察の最後に出てくる魔の時間帯について。
ループバックして、氏のw32termのテストモードを走らせるとこの時間に高確率で
引っかかってフン詰まり状態になってしまいます。単純にダブルバッファリング化
しても同じ結果だったのでUARTのデータを受ける部分の処理がまずいのでしょう。
てわけで魔の時間帯でもデータを受け付けるように…
…しただけでフン詰まり現象は無くなりました!
UARTの通信込みでこんだけ叩きだせるなら恩の字じゃないかしら!?
でもやっぱし専用ICには到底かなわないので…
遊び以外で使わない方がいいですよ(重文)
上記の成果はおきばにあります。
20110406追:
STM32のUSBライブラリがV3.3.0に上がりVCPのデモもこの問題が修正された
…と見せかけて修正されていないようです。ご注意を!
●STM32 ValueLine-Discovery
を秋月さんから購入しました。ねむいさんみたいに買ってすぐにバラすような人
対策か、ST-Linkの部分が切り離すことができません。しかしこのST-Link部も
Versaloon化できるようになっているのでさっそくVersaloon化してみました。
これについては後ほど別記事で詳しく取り上げたいと思います。
↑お約束のTFT液晶モジュール。8bitバス繋げるのめどいのでSPI接続
方式の液晶で…。この評価ボードのセットはSTM32が二つも付いているので
(部品取り基板として)とても利用価値があると思います。
機能限定で単品物作るなら新品でパーツ揃えるより安上がりで最適でしょう。
●トラ技別冊LPC1114ボード
圓山宗智氏作のMARYと呼ばれるLPC1114と周辺のボード群にちょっと興味が
魅かれたので購入してみました。最初はLPC1114基板とCP2104基板で2枚組かと
思ったのですが、本当に同じ基板が2枚(LPC1114+CP2104の基板が2つ)なのですね…
LPCXpressoと大きく違う部分はLPC1114のメイン発振器が内部オシレータ
(LPCXpressoは外部に12MHzの水晶がある)の使用を想定しているのでスタート
アップ時のオシレータ選択レジスタを内部オシレータにしとかないと
動かないといったところくらいでしょうか。
CQ誌のサイトからダウンロードしてきたMARYのサンプルを参考に過去に
作ったとっかかり用のLPCXpressoのプログラムと共用できるようにしてみました。
MARYで動かす時はmakefile内のボードの定義をMARYに変えるだけでおkです。
-
免責・連絡先は↑のリンクを
↓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.
Comments
MARYへの書き込みをOpenOCDとSTM8S版Versaloonで試してみたのですが以下のエラーでうまくいきません。
flash 'lpc2000' found at 0x00000000
auto erase enabled
Error: timed out while waiting for target halted
Warn : lpc2000 returned 13
Error: error writing to flash at address 0x00000000 at offset 0x00000000
Runtime Error: /usr/local/share/openocd/scripts/target/lpc1114_swd_flash.cfg:90:
in procedure 'mt_flash'
in procedure 'flash' called at file "/usr/local/share/openocd/scripts/target/lpc1114_swd_flash.cfg", line 90
ねむいさんはVSProgで書き込まれたのでしょうか、それとOpenOCDのどちらですか。
また、OpenOCDでのデバッグは問題なくできましたか?
竹本様、ねむいです。おはようございます。
Cortex-M0はOpenOCDではまだ正式にサポートされていない
ため、Cortex-M3のコアを無理やり想定してうごかしています。
そのため2012年1月現在も出来ることは限定されています。
特にOpenOCDからのフラッシュの操作はセクタ単位のイレースしか
できませんので書き込みはvsprogを使用しています。デバッグに
ついてはmain関数で止まらない等の挙動不審な点はありますが
一応ステップ実行・レジスタ&メモリの参照等は可能です。
各操作時にhalt待ちでGDBのタイムアウトになっている場合は
スクリプトファイル中の"reset init"を削除して試してください。
ねむいです。こんばんは。
その後OpenOCDのメーリングリストを追ってみました。下記URL
www.mail-archive.com/openocd-development@lists.berlios.de/msg16835.html
の情報をもとにCortex-M0用のOpenOCDを作成して書き込み
を行ったところ、cortex-m3のcrcのエラーは発生するものの
書き込み&ベリファイまで完了できました。
書き込んだプログラムも電源をいったん落とした後再投入で
問題なく動きました(そのままだとHardFaultから抜け出せな
くなる)のでOpenOCDだけで書き込み/デバッグは一応可能です。
しかし利便性を考えるとOpenOCDがSWDとCortex-M0に正式に
対応されるまではvsprogやUARTブートローダーを利用した
方がよいでしょう。
またまたねむいです。おはようございます。
さらに試行をかさねてみました。最終的にLPC1114用のコンフィグファイルを
大幅修正し、ベリファイを捨てたらOpenOCDの書き込み/デバッグまでシームレス
に行えるようになりました。
ただ、本来の道から大幅に外れた非常に"ヤクザ"な使い方になってしまいましたが…
ねむいさま、お忙しいところ調べて頂きましてありがとうございます。
現状を理解しても是非コンフィグファイルを使ってみたいです。よろしくお願いします。
ねむいさまのOpenOCDの修正は、cortex-m3とm0の違いを
For CM3:
adi_dp_info.tar_autoincr_block = (1 << 12);
For CM0:
adi_dp_info.tar_autoincr_block = (1 << 10);
のみということで、src/target/cortex_m3.cの上記部分を修正して動作を確認されたのでしょうか。
それとも大きな修正をおこなわれたのでしょうか。
ねむいさま、お忙しいところご指導頂きましてありがとうございます。
cortex-m0版openocdは、0.5.0のバージョンでも上記の変更で動作することが分かりました。
コンフィグファイルは、ねむいさまの作成されたものを使用しました。確認したのは以下の処理です。
1)MARYのCOLOR_LEDのサンプルを-gオプション付きでコンパイルし、binファイルのCRチェックサムを修正
2)修正したbinファイルをcortex-m0版openocdで書き込み正常に書き込み、カラーLEDが点滅することを確認
これでcortex-m0版openocdとコンフィグファイルに問題がないことがわかったので、後はどうやってデバッグするかになりました。
3)EclipseのZylinプラグインのCommand設定でloadコマンドをコメントアウトしてデバッガを起動
→ブレークポイントも正常に動作しますが、プログラムの途中からのデバッグになってしまいます。
4)telnetを使ってターゲットマイコンをリセット
$ telnet localhost 4444
> reset run
→これでEclipseからプログラムのデバッグができました。
どうもありがとうございました。
竹本様、こんばんは。ねむいです。
あれから私の方もいろいろ試行し、LPC1227でも書き込みと条件付きですが
デバッグも出来るようになりました。LPC11U14は残念ながら書き込みに必要な
RAMのワークエリア4096Byte(メインSRAM4096ByteからISPで32Byte取られる
模様)が確保できないため書き込みはできませんがセクタ単位の消去と別な
手段で書き込んだ後デバッグは可能です。
OpenOCDがSWD接続とCortex-M0に完全対応するまでの繋ぎとしては手法も固
まり十分"かたぎ"に寄ってきたので私のブログでも暫定で公開します。
あとLPC1114やLPC1227でもチェックサム自動計算の書き込みが効くのを確認
しましたので"calc_checksum"をflash bankの設定の最後尾につけてみてく
ださい。別ツールでbinをいじる手間が無くなって直接elfやhexが焼けるように
なります。
Post a Comment