Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

【STM32】無償のRAMモニターJ-Scopeを使おう

1. はじめに

STのモータ制御開発キットで『自力で』モータを回す Vol.1 強制転流 にて、ひとまずモータを回すところまでは解説を行いましたが、これはただ単純にモータを回しただけでどのように回っているのかまで踏み込んでいません。

さらなる深淵に踏み込むためには、マイコンの内部における演算内容が正しく行われているか、あるいはセンサによって検出した値が正しく取り込めているかをしっかりと検証する必要があります。やりはじめると段々辛くなります

これら値を確認する方法の1つに、RAMモニターを使う方法があります。これは何かと言うと、マイコンの内部値を取り出してオシロスコープのように表示する方法です。

「RAMモニター」についてyoutubeで調べたりすると下記の動画がヒットしたりして、便利な時代になったなぁと思うと同時にやはりモータ制御開発には重要なアイテムなんだということを実感できます。

ただしこのRAMモニター、上記の動画で紹介されているようなプロ用のものは大変お高く、趣味用途では中々手が出しにくいものです。

そこで登場するのが表題にあるSEGGERのRAMモニター「J-Scope」です。

J-Scopeのアプリそのものは無償で使う事が出来ます。またJ-Scopeを使うために必要となるデバッガについても、STM32の評価ボードを利用する限りは購入の必要がございません。正直、「え、こんな便利なもん無償で使っていいんか?」というのが率直な感想です。※

そんなわけで、本記事ではJ-Scopeの利用方法を割と丁寧に示すものとします。
さぁ、J-Scopeを使ってモータ制御沼の深みに漕ぎだそう!

※ただしサンプル周期は1kHが限度で、それより上げるには課金(10万円前後)必要。いい商売してるなぁ…詳細は下記参照。
https://www.embitek.co.jp/product/jscope.html

2. 前準備 デバッガを用意する

「はじめに」にて記載した通り、STM32評価ボードを利用している場合はデバッガを新たに購入する必要ありません。(もちろん購入しても良いですが)
その代わり、デバッガのファームをST-LinkからJ-Linkに書き換える必要があります。詳細は下記を参考。
超便利 最強デバッガ J-Link

ファーム書き換えと聞くと何やら難しそうに思えますが、実際にやる事としてはSEGGERのサイトからユーティリティをDLしてきて実行、3回ぐらいキーボード入力を行うだけです。
https://www.segger.com/downloads/jlink#STLink_Reflash
image.png

下記画面では1を入力してエンター。
image.png

所要時間としては3分ぐらいで終わります。注意点としては評価ボードをPCに接続の上行うぐらい。

3. J-Scopeのインストール

注意点:Beta version(V6以降)を使う

J-ScopeはSEGGERのサイトからダウンロード可能ですが、2021/2月現在の状況としてV5とV6の2つが置いてあります。普通に考えればベータであるV6をわざわざ使う必要はないように考えられますが、浮動小数点をサポートしているのはV6以降となります。このためV6を使うこと推奨です。

https://www.segger.com/downloads/jlink#JScope
image.png

インストール時の注意点は特にありません。

4. CubeIDEでデバッグを開始する

4.1 デバッガの設定

虫のアイコン→デバッグの構成から設定変更を行います。
image.png

CubeIDEの標準だとデバッグプローブにST-Linkを使用する設定となっていると思いますのでJ-Linkへと変更します。その他設定は特にいじる必要ありません。

image.png

SEGGERのデバッガを別途購入、JTAG接続の場合はインターフェースも変更の必要あるかと思いますが、今回は評価ボード上のものを使いますので変更不要です。

4.2 デバッグの開始

虫ボタンを押してコンソールが走り、デバッグが開始されます。
J-Linkですが、使用目的の確認を1回/1日の頻度で問われます。チェックボックス入れてAcceptしてあげましょう。
image.png

そうすると、main文の一番最初でマイコンが止まります。
image.png

「再開」ボタンを押してマイコンを動作させましょう。
忘れがちですが、これをしないとマイコンは止まったままです。
image.png

5. J-Scopeで内部値をモニターする

5.1 J-ScopeをJ-Linkと接続する

STMCubeにてデバッグを開始済みのため、Existing Sessionを設定することでJ-Scopを接続することが可能です。サンプルレートはSTM32評価ボードのデバッガを使う場合は1kHzが限度です。これ以上の設定を行うと怒られた上で強制的に1kHzとなるだけです。
image.png

注意点:Elf FileはDebugフォルダ下のものを使用する

当たり前の事なのですが、自分でやって詰まったポイントなので記載。

マイコン知識なさすぎて「Elfファイルって何…どこで貰えるのそれ…」というところからスタートした私ですが、何のことはなくSTM32プロジェクトファイル保管先のDebugフォルダ下にあります。私の環境だと下記。
image.png

なぜわざわざこれを強調したかと言うと、ビルドをリリースで行った場合にはリリースフォルダにもElfファイルが出来ます。そしてこちらを参照した場合はJ-Scopeでのモニターが出来ません。
image.png

モニターが正常に出来ない場合はElfファイルの場所が正しいかを見直しましょう。

Elfの設定まで完了してOKを押下すると、モニター項目の選択画面が出ます。適当にモニターしたい項目を設定しましょう。STM32評価ボードのデバッガを使う場合は項目は10個までです。
image.png

5.2 モニターを開始する

赤いポチを推すとモニターが開始されます。
正直なところ、ちょっと感動します。
image.png

6. 終わりに

これでやっとモータ制御沼の入り口に立ったぐらいです。続く。

motorcontrolman
モータ制御に関することなら何でも(関しないことも)
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away