DATE: 2019/08/21(水)   CATEGORY: 未分類
J-Link RTTでTera Termに出力したときの備忘録

こんにちは。
どこかに書いておおかないと忘れそうだったので、
備忘録として残しておこうと思います。

今回はJ-Link RTTからデータの転送をTera Termのターミナルで出力した話です。
今まではJ-Link RTT Viewerを使っていましたが、
ログの取り扱いがやりにくかったので使い慣れているTera Termを使いたかっただけです。
たぶんそんなに需要がない話だと思います。

やり方は以下の通り。

① JLinkJDBServerを起動
SEGGER\JLink内のJLinkGDBServerを起動します。
GDBServer起動

OKを押してこれでよし
GDBServer.png


② Tera Termを起動し、新しい接続
ファイル→新しい接続


③ 以下のように設定
ポートの19021は公式に書いてある通りにします。
TeraTerm接続設定


④ 出力できた
TeraTerm出力確認


これでTera Termのターミナルに出力ができました。
設定についてはよくわかっていなかったのですが、
nknくんに助けてもらいました。ありがとうございました。
使い慣れてるものが一番安心しますね。
以上です。


後はJ-Link RTTについて気が付いたこと。

① 自分、文を読まなすぎ

最近データのバッファサイズやblockingとnon-blockingモードの変更のしかたなどを知りました。
SEGGER_RTT_Conf.hを見ましょう。
また、
デフォルトはnon-blockingなのになぜかblockingモードになっちゃう><
って人へ。
たぶんサンプルに書いてあるこれのせいです。

SEGGER_RTT_ConfigUpBuffer(0, NULL, NULL, 0, SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL);

デフォルトに戻しましょう。


② Target Device Settingsのメモリサイズがわけわからない

自分はSTM32L432KCというマイコンを使用しているのですが、
STのアプリケーションノートとJ-Linkに登録されているRAM Sizeが異なります。
STM32L432メモリサイズ
STM32L432メモリサイズJlink

これが合っている物もいくつかあるのですが、
自分使用している物のように合ってない物も多いです。
これが原因なのかはわかりませんが、
バッファサイズが32KBを超えた値を設定すると、RTTが動かなくなります。
(32KB未満なら問題なく動きます)
どのような意味で設定されている値なのかがわかりません。
たすけて

スポンサーサイト



DATE: 2019/05/19(日)   CATEGORY: 未分類
Nucleo32F303k8でJ-LinkRTTを使ってUARTピンを節約してみた

お久しぶりです。
今日は久しぶりにブログを書きたいと思います。
内容はタイトルの通りです。

以前から書いていたNucleo32マウスと直接関係はありません。
しかし、初心者の人でもわかるような内容だと思います。
→自分も初歩的な部分しかわかってないから


実はNucleo-32Boardの書き込みは
SWDという形式でST-Linkというデバッガを用いて行われています。
SWDの詳しい説明は自分もわからない部分があるのでできませんが、

・SWDIO…データ通信線
・SWCLK…クロック
・VTref…ターゲット電圧(マイコンの動作電圧)
・GND…グランド
・nRESET…リセット
・SWO…いろいろ出力できる追加機能。(オプションなので無くてもよい)
(SWOの働きについてわかりやすいと思った資料はこちら)

の6本があると思っといてください。
上のリンクを読めばわかるのですが、
SWOを経由すればITMという機能でSWVターミナルにprintfを用いた出力が可能です。
(他にもいろいろできます)

これは「SWOでITMを使えばUARTでターミナルに出力をしなくてもよい」ってことです。
加えて、より多くの機能も増えるということで楽しいことばかりです。
じゃあNucleo-32でもSWOでITMを使ってみよう!と思った、あなた。
残念ながら、Nucleo-32ではSWOは接続されてないんですね(´;ω;`)

SWOだけ仲間はずれ

必須ではないことから、32ピンと少ないピン数のマイコン
なので割り当てられてないのでしょうか?
ジャンパ用の0Ω抵抗で繋げられれば良かったのですが、残念です、、、

そんな悲しみの中にいたときに、
某🍡くんというお方に助け船をいただきました。

それがSEGGER社のJ-LinkというデバッガでのRTTという機能です。
Real-Time Transfer | SEGGER - The Embedded Experts

こちらを使うとSWDIO経由でターミナルにprintfで出せるようです。
→RTTの存在自体は知っていたのですがSWDIO経由で出せるのは知りませんでした
また、容量に限りはあるがバッファに書き込むため後でまとめてデータを吐き出せます。

これの何がすごいかというと、
「UARTやSWOなどのターミナルへ出力用のピンが必要なくなります。」
つまり、一つ自由に使えるピンが増えるということです。

Nucleo32F303k8ではPA2がTX、PA15がRXとして使われています。
特にPA2は貴重なAD変換が可能なピンです。
これらのピンを自由に使えてピンアサインの自由度が上がるのは素晴らしいですね。
(適宜ジャンパ用の抵抗を外すことは忘れずに)


ということでNucleo32を使ってRTTに挑戦した備忘録を残しておきます。
まだまだわからないことも多いので、
こいつ知らなそうだなってとこがあれば教えてください。

参考にした記事はこちら
TrueStudioでJ-Link RTTを使う -Dango Kajero
超便利 最強デバッガ J-Link -id研


・必要な物

ここから以下の2つをDLします
J-Link / J-Trace Downloads -SEGGER

① ST-Link Reflash Utility
→Nucleo上のST-LinkをJ-Link化する。ST-Linkにも戻せます。
② J-Link Software and Documentation Pack
→いろいろ便利なものが入っています。全部は触っていないので不明な物も多いです。


・NucleoのST-LinkをJ-Link化

①の中のST-Link Reflash.exeを用いてJ-Link化します。
J-Link化前はデバイスマネージャーから確認するとST-Linkになっています。

STLinkの確認

ST-Link Reflashの使い方は説明する部分がほとんどありません。
Accept数回して、Upgrade to J-Linkをやれば終わりです。

STLinkReflesh.png

J-Link化後はデバイスマネージャーから確認するとJ-Linkになっています。

JLinkの確認


・デバッグの構成をJ-Linkに変更

TrueSTUDIOのデバッグの構成から以下の通りにしました。
デバッグの構成


・SEGGERのRTT APIを使えるようにする

②でダウンロードしたJLink_Windows_V644g.exeを起動していろいろ入れます。
C:\Program Files (x86)\SEGGER\JLink_V644g\Samples\RTTの中にある
SEGGER_RTT_V644g.zipをどっかに解凍します。
解凍したSEGGER_RTT_V644g\RTTの
・SEGGER_RTT.c
・SEGGER_RTT_printf.c
・SEGGER_RTT.h
・SEGGER_RTT_Conf.h

を自分のプロジェクトにコピーなりインポートしたりします。

APIセット

SEGGER_RTT.hをインクルードし、
SEGGER_RTT_V644g\ExamplesのMain_RTT_PrintfTest.cを参考に
テストプログラムを作成したら書き込みができるかチェックします。
printftest.png


・JLink RTT Viewerにて出力の確認

C:\Program Files (x86)\SEGGER\JLink_V644gの中にある
JLinkRTTViewer.exeを起動します。
以下のような接続確認の後に無事に、
テストコードのように出力されたらOKです。

RTTViewer接続確認
Viewer出力確認


・printfに組み込む

syscalls.cにある_write関数を以下のように書き換えます。
syscalls.cにもSEGGER_RTT.hのインクルードを忘れずに行います。


int _write(int32_t file, uint8_t *ptr, int32_t len) {
/* Implement your write code here, this is used by puts and printf for example */
/* return len; */

// int DataIdx;
//
// for (DataIdx = 0; DataIdx < len; DataIdx++) {
// HAL_UART_Transmit(&huart2, ptr++, 1, 1);
// }
(void) file; /* Not used, avoid warning */
SEGGER_RTT_Write(0, ptr, len);
return len;
}


また、%f形式でも出力できるようにLinkerの設定から
「-u _printf_float」が有効かを確認します。
これでprintf関数の出力をRTTで行えるようになりました。


・その他いろいろについて

APIの関数の扱い方、RTT Viewerの扱い方の他にも
J-Linkに関する様々な物のマニュアルは
C:\Program Files (x86)\SEGGER\JLink_V644g\Doc\Manualsの中の
「UM08001_JLink.pdf」を見れば良さそうです。
RTT Viewerはターミナルへの出力をログにして出せたり、
文字の制御コード(エスケープシーケンス)に対応していたりして扱いやすいです。

迷路確認


・なんだかんだで

無事に以前やっていたことはRTTでできるようになりました。
UARTモジュールからRTT APIに変更したら
プログラムの容量が減ったことも嬉しかったです。
ただ、たまに制御コードが反映されず
ゴミデータ的に入り込んでしまう場合もあったりするといった現象もありました。

しかし、全体的にプラスの面が多かったので
これからはRTTを使っていこうと思います。
まだまだ勉強不足ですので
新しい発見があればまた記事に残していきたいです。

DATE: 2018/12/03(月)   CATEGORY: 未分類
全日本大会2018の感想

昨日全日本大会2018が終わりました。
参加されたみなさんお疲れさまでした。

運営をしていただいたみなさん本当にありがとうございました。
スムーズな運営で毎年毎年感動しています。

1日目から振り返っていこうと思います。
今年はマイクロマウスファイナル競技に参加してきました。


・大会1日目(試走会)

今年から全日本大会の日程が変更となり,
2日間開催になりました。

1日目が試走会とマウスパーティーでした。

試走会では終了20分前に登場し軽く走らせて終わり。
以前にも走らせたことがあった会場だったので、
環境による影響はほとんどないことはわかっていました。

マウスパーティーでは貴重な就活のお話を聞けたことが嬉しかったです。
→マウスをやれ

マウスパーティーが終わった後は、
4年連続となる宿のネカフェに吸い込まれていきました。

1泊1700円って安すぎますよね。
みなさんも本厚木遠征のときにはぜひ活用してみてください。
オススメです。


・大会2日目

2日目は本番でした。
今年は12月開催だったので、
今のTwitterアイコンでもある
シン・ウムオ~クリスマスの景色~
スタイルで参加しました。

シン・ウムオ~クリスマスの景色~


クリスマスツリーを生やすと以下のようなことがあります。
メリット
かわいい

デメリット
重量増加
重心が後ろに移動
尻当てできなくなるので開幕ターンに影響
モード選択がやりにくい


今年の迷路はこちらをご覧ください。

さて,結果の方ですが
第8位+特別賞
ベストタイム:19秒105
でした。

特別賞の理由は、
オートスタートに挑戦したチャレンジング精神
とのことでした。
しかし、オートスタートに挑戦した人で自分だけ失敗していたので複雑でした。
クリスマスツリーを評価していただいたことだと解釈を変更して嬉しくいただきました。
→2年連続(団体賞も含めると3年連続)の特別賞
来年もでるなら、埃がついても最短走行でこけない安定性を目指したいです。

今年の32×32の迷路の感想ですが、
長い斜めがないことと最短経路が本当に長かったことですかね。
これで32×32の迷路への挑戦が3度目だったのですが驚きました。
毎年毎年違う味の課題で本当に面白いです。
みなさんもぜひハーフマウスを作りましょう。

今回の探索結果と最短走行経路はこちら。





今年は迷路の探索率という考え方を導入してみましたが、
概ね良かったと思っています。
→もう少し改良の余地はありそうですが


2018年もお疲れさまでした。
全日本直後で非常にマウスをやりたい気分になっていますので、
やる気の続く間に回路図くらいは引きたいですね。

あと、STUmuの記事の方は足立法について書こうと思っていましたが
参考記事はゴロゴロあるのでいいかなって思いました。

DATE: 2018/10/16(火)   CATEGORY: 未分類
地区大会2018まとめ


先日東北大会が終わり、
一足先に自分の2018年の地区大会が終わりました。

今年出場した大会は以下の3つです。

・東日本大会

・全日本学生大会

・東北大会


今年出場させたマウスは2台です。
クラシックにSTUmu、ハーフに昨年に引き続きシン・ウムオです。
本来なら、ハーフには新作も出す予定でしたが、
動きそうにないので次の糧になってもらいました。

各詳細な結果はこちら

それぞれの大会について簡単に振り返っていこうと思います。

・東日本大会

こちらは会場に一番驚いた大会です。
あのパシフィコ横浜です。

会場が知らされたときTLがざわつきましたね。

それで実際に行ってみるとさすが横浜って感じでした。
会場のアクセスが良いのは強いです。

この大会では2台とも用意してあったパラメータで完走できました
→2 msの悪夢は忘れない

運営をしてくださった皆様ありがとうございました。

大会後は懇親会があったようですが、
その日はちょうど君の膵臓をたべたいの上映日でした。
なので、大会後は映画館に行きました。

すごい素敵な作品でした。
みなさんもぜひ見に行ってみてください。
おすすめです。

君の膵臓をたべたい


・全日本学生大会

この大会は会場が浅草でした。
浅草の会場は大学からちょうど1時間程。
近いっていいですね。

この大会は台風が直撃して大変でした。
ですが、当日は運営さんの神対応のおかげで
14時ごろに大会が終わりました。

運営さんが強すぎた。

運営をしてくださった皆様ありがとうございました。


・東北大会

毎年恒例の遠征です。
昨年から遠征スケジュールが優しくなったため
かつての過酷な旅とはおさらばです。


1日目は土曜日の朝4時からです。
集合時に一人だけ半袖短パンの人がいて驚きました。
10月だぞ??

朝ご飯は佐野SAで辛さ30倍カレーを食べました。
昼ご飯は昨年同様米沢牛を食べました。
肉が口の中で溶けるんですよ。

昼食後は会場に向かって試走会です。
自分は会場に着いてから調整せずに温泉に行くという舐めプをしました。
→後で痛い目を見る

昼間から入る温泉は最高でした。


温泉から帰ってきてからは
真面目にマウスやるかあと思い本番迷路での試走にいきました。


そこで大きな問題発生。

、、、ん?
壁を読み間違えている??


なんと環境光の影響が強すぎて、
壁センサの値がおかしくなっているようでした。


とりあえず直すかと思ったら、
このタイミングで試走時間が終了です。
→完全に温泉に行ってたせい

仕方がないので、現状できる対策をして翌日に祈ることにしました。

ここからは"いつもの長い長い夜"なわけですが、
自分は諦めたので7時間じっくり寝ました。


2日目は大会でした。

クラシックは特に言うこともなかったんですが、
問題はハーフですね。

ハーフの結果をご覧ください。

東北大会結果

完 走 率 ! !

低すぎやしませんかね。
みなさんも自分と一緒で環境光にやられていたようです。
最後の方は完走するだけで歓声が起きてました。
ある意味楽しかったです。

大会後の懇親会ではよくわからない舞をしました。
芋煮がおいしくビンゴが楽しかったです。

運営をしてくださった皆様ありがとうございました。

帰りはいつもの温泉によって真っ直ぐ帰ってきました。


以上で今年の大会の振り返りは終わりです。
来年こそはハーフにも新作出したいですね!

最後に今年いただいた賞状です。
→相変わらずのかませいぬ役

表彰状2018

DATE: 2018/07/21(土)   CATEGORY: 未分類
マイクロマウス、完走までしんどい

今回は完全に雑談です。

しばらく課題と研究で忙しそうなので
隙を見てブログを書いていくために
「STUmu」で行ったソフトにおける完走までの最低限を書き出してみました。

・周辺モジュールの確認
開発環境構築
Cube MXの使い方
動作クロック設定
GPIO
UART
TIM割り込み
PWM出力
ADC
SPI
データフラッシュ

・インターフェース関係
スピーカー
LCD
モード選択関数の実装

・モーター制御
ステッピングモーターの理解
任意速度→PWM周期変換
線形加速→無限加速
台形加速→S字加速
角速度でS字加速→超信地旋回とスラローム

・壁制御
センサ値の差分取得
基本理論の理解
実装
調整方法の確立

・調整
タイヤ径の調整方法の確立
トレッド幅の調整方法の確立
スラロームの調整方法の確立

・左手法
左手法の実装
座標管理
壁情報の保存
壁情報のデバッグ

・足立法
足立法の理解
歩数マップの作製
足立法の実装


多くね??
これに加えて言語の知識も必要だし、
環境の仕様についても知識もつけていかないといけません。

やっとの思いで機体が完成したのに
まだまだこんなに壁があるとか辛過ぎですね、、、

それでも乗り越えないと走らないので頑張りましょう。
完走までの量は多いですけど、
一つ一つをやっている間は楽しいですよね。
自分の機体が少しづつ成長していく感じはたまらないです。
→自分がマウスでソフトが一番面白いと思ってるのはたぶんこれのせい

さて、本題の記事についてはどうするか、、、
基本的にはこの記事見てやったよ程度にしようと思いますが、
そうもいかないところも多いですよね。

まーた時間が溶けていく予感


Copyright © うむ夫の歩み. all rights reserved.