2363914_ja-JP

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2363914_ja-JP

2363914_ja-JP

MCUXpresso Config Tools : Clocks Toolの使い方 (日本語ブログ)

目次

はじめに

 MCUXpressoは、NXPが提供するマイコン開発用ソフトウェアプラットフォームで、MCUXpresso IDEに加えて、MCUXpresso for VSC (Visual Studio Code)や、 ペリフェラル設定を支援するConfig Toolsも提供しています。

 Config Toolsは、ピン設定を行う「Pins Tool」や、クロック構成を設定する「Clocks Tool」などで構成されており、マイコン周辺の初期設定をGUI上で直感的に分かりやすく行える点が特長です。本記事では、この中から クロック設定を担当する「Clocks Tool」 に焦点を当てて解説します。

クロック設定は、マイコンの性能・消費電力・各ペリフェラルの動作に直結する重要な要素です。一方で、クロックツリーは構成が複雑で、「どのクロックがどこで使われているのか分かりにくい」と感じる方も多いのではないでしょうか。Clocks Toolを使うことで、クロックソースや分周設定、各ペリフェラルへのクロック供給状況を可視化しながら設定・確認できます。また設定内容に応じた初期化コードを自動生成することもできます。

MCUXpresso IDEをインストールした場合には、Config Toolsも一緒にインストールされるため、IDEに内蔵された機能として利用可能です。一方、近年組み込み開発においても利用が広がっている Visual Studio CodeVSC)環境では、MCUXpresso関連の拡張機能をインストールすることで、同様にConfig ToolsClocks Toolを含む)を利用できます。Config Toolsの機能自体は、IDE版とVSC版で大きな違いはありません。

本記事では、VS Code環境におけるConfig Toolsのインストール方法から、ツールの使い方を説明し、最後にFRDM-MCXN947を用いて、実際にClocks Tool内でCPUクロック設定を変更し、LEDの点滅速度を変えるデモンストレーションを紹介します。

Clocks Toolはどのような場面で活用するのか?

  • 既存の内部クロック設定(クロック・ツリー)を確認したいとき
  • 各モジュールへの動作周波数を調整・最適化したいとき
  • 低消費電力を意識して、クロック周波数を落とす構成を検討したいとき

Config Toolsのインストール

VS Code環境におけるConfig Toolsのインストール方法について解説します。
MCUXpresso for VS Codeのインストールがお済みでない方はこちらのブログをご参照ください。


VS Codeを起動後、左側のパネルからMCUXpressoを選択し、Quick Start PanelよりOpen MCUXpresso Installerをクリックしてください。

Kogiso_0-1778572125810.png


Installerが立ち上がりますので、MCUXpresso Configuration Toolsを選択し、右上のInstallをクリックしてください。
(今回のブログではMCUXpresso Config Tools v26.03 をInstallしています)

Kogiso_1-1779262222580.png



インストールの開始と同時にMyNXPへのログインを求められます。

Kogiso_2-1778572191255.png

ログインの後、License Agreementが表示されますので内容をご確認のうえ同意してください。

※インストール後は、VS Codeを再起動してください。


Q. もしインストールに失敗した場合は?
A. 以下ウェブサイトからのご自身のPC OS環境に応じたインストーラーをダウンロードして、試してください。
MCUXpresso Config Tools | NXPマイクロコントローラ (MCU) 向けソフトウェア開発 | NXP Semiconductors

インストールを進めると初期画面で以下のような画面が表示されますが、該当がなければ閉じて問題ありません。

Kogiso_3-1778572212609.png

VS CodeからConfig Toolsを呼び出すにはSDKをインストールし、サンプルをインポート後、プロジェクトを右クリックすると Open with MCUXpresso Config Toolsが現れますので、こちらをクリックしてください。
※この一連のプロセスは最後のデモンストレーションで詳細に説明するので、ここでは割愛します。
 しばらくするとConfig Toolsが起動します。

Kogiso_0-1779263924259.png



なおMCUXpresso IDEを使用している場合、Config Toolsは標準で統合されており、上部タブから直接起動できます。

Kogiso_5-1778572280128.png


Clocks Toolの画面構成

Config Tools起動後、画面右側のパネルでツールの切り替えが可能です。

今回は「Clocks」を選択します。

Kogiso_6-1778572331001.png


クロック設定を変更する際によく使用するClocks Diagramは、画面左上から選択することができます。
画面右下のProblemビューには、設定内容に関するエラーや警告が表示されます。

Kogiso_0-1779261646084.png


クロック設定に誤りがあり、エラーが発生するとProblemビューにはエラーの発生箇所と原因が表示されます。またClock Diagram上にも該当箇所が赤色でハイライト表示されるため、問題箇所を視覚的に特定できます。


例えば、CPUクロックが規定の最大値を超えるような設定を行った場合、その旨のエラー(下記)が表示されます。

Kogiso_1-1778634860572.png


Clocks Toolを使うための基本用語

ここではClocks Toolを使用するうえで、Clock Diagram上に表示される基本用語を整理します。


Clock Tree (クロック・ツリー)
クロックがどこで生成され、どのように分配・選択され、各ブロックへ供給されるかを示した構成図(ツリー図)です。Clocks Toolでは、このClock Treeを視覚的に確認しながら設定を行います。

Clock Source (クロック供給源)
クロックの起点となる信号源です。内蔵RCクロックや外部クリスタル(振動子)、外部クロック入力などが該当し、クロックツリーの上流に配置されます。
MCX N947では、標準で48MHzの内蔵RCクロック(FIRC)Clock Sourceとして使用されます。

Kogiso_8-1778572482107.png


PLL (Phase Locked Loop)
Clock Sourceを入力として、安定した高周波クロックを生成する回路です。
倍率設定や分周設定によって出力周波数を調整でき、CPUや高速バス向けのクロックを柔軟に作ることができます。
ここでは、Clock Sourceである48MHzの入力クロックをもとに300MHzのクロック(48MHz/8*50=300MHz)を生成しています。

Kogiso_9-1778572553141.png


DIV (Divider : 分周器)
クロック周波数を分割して調整するための機能です。
CPU
、バス、各ペリフェラルごとに分周設定が用意されており、必要な動作周波数に調整するために使用されます。
以下では、PLL0で生成された300MHzのクロックから150MHzのクロック(300MHz/2=150MHz)を生成しています。

Kogiso_0-1778575383641.png


Mux (Multiplexer:マルチプレクサ)
複数のクロック候補の中から、どのクロックを使用するかを切り替えるための機構です。
選択を切り替えることで、下流に供給されるクロックが変わります。
下図では、2つのMUXが存在し、左側は内蔵RCクロックからの48MHzのクロックを選択、右側はDIV(PLL0_PDIV)により分周された150MHzを選択しています。

Kogiso_10-1778572690176.png


デモンストレーション:CPUコア・クロック設定を変更し、LEDの点滅速度を変更する

ここでは実際にClocks Tool上でCPUに供給されるクロックを変更し、評価ボード上のLEDの点滅速度が変更するかを見ていきます。

ハードウェアの準備
本稿で使用する評価ボード
FRDM-MCXN947

SDKのインストール
VS Code内の左側のパネルからMCUXpressoのアイコンを選択した状態で「Import Repository」をクリックしてください。

Kogiso_11-1778572835161.png


その後、左から2番目の「REMOTE ARCHIVE」をクリックし、Packageにて「FRDM-MCXN947」を検索してください。「947」と打ち込むとすぐにFRDM-MCXN947が候補として表示されます。

Kogiso_12-1778572855885.png

Name名、Location名、Create Gitへのチェックは任意に設定して下さい。

※NameおよびLocation名については、「小文字の英数字」「アンダースコア(_)またはハイフン(-)」のみを使用し、(\, /, :, *, ?, ", <, >, |、スペック)などの記号(プログラムの動作不良の原因になりうる)を避けるのが無難です。

最後に「I agree」にチェックを入れた後、「Import」をクリックするとSDKのインストールが開始しますので、しばらくお待ちください。画面右下に"Repository successfully imported"が表示されたら完了です。

Kogiso_13-1778572880338.png

サンプルコードのインポート
SDKのインストールが完了したら、サンプルコードのインポートへと進みます。
左側のパネルから「Import Example From Repository」をクリックしてください。

Kogiso_14-1778572955527.png


右側に表示された各タブ内で、「Repository」では先ほどインポートしたSDKを選択、
Board」はFRDM-MCXN947を選択してください。
Template」では、今回はLEDの点滅速度を変えるデモンストレーションですので、
led」と打ち込んで表示される「driver_examples/gpio/gpio_led_output_cm33_core0」で試してみます。

Kogiso_15-1778572977361.png


その後、Toolchainを選択して「Import」をクリックしてください。

Kogiso_16-1778572998907.png


ConfigToolsを開く
インポートしたサンプル上で右クリックして、「Open with MCUXpresso Config Tools」を選択してください。少し待つとConfig Toolsが立ち上がります。

Kogiso_17-1778573044565.png


Config Toolsが開いたらまずは右側のパネルにあるOverviewを確認します。このサンプルにおいては、ClocksPins2つが緑色(ONの状態)になっており、2つのツールが有効であることを示しています。

Kogiso_18-1778573085903.png


では、Clock Diagramを見てみましょう。
Clock SourceであるFIRC 48MHzからPLL(PLL0)DIV(PLL0_PDIV)MUX(SCSSEL)を経由して、MAIN Clock 150MHzが生成されています。

Kogiso_19-1778573132716.png


続いて、少し下にスクロールダウンしてCPUに供給されるクロックを見てみます。今回のサンプル・アプリケーションでは、「System_clock」CPUコア・クロックに該当します。

MAIN Clock 150MHzは途中でDIVを経由しますが、System Clock150MHzのまま供給されています。後ほど、この途中に存在するDIVの値を変更し、System Clockに入力されるクロックを変更することでLEDの点滅速度の変化を見ます。

Kogiso_20-1778573194903.png



CPU Clock 150MHzの状態のLEDの点滅速度を確認する
先ずは、何の変更もしていない150MHzの状態でLEDの点滅速度を見てみましょう。一旦Config Toolsを閉じて、VS Codeを開きます。
ビルドの前にボード(FRDM-MCXN947)PCを接続します。

Kogiso_21-1778573253173.png


接続が完了したらインポートしたサンプルをデバッグ(ビルド&書き込み&アプリケーションの実行)します。

Kogiso_4-1779431772140.png


デバッグのプロセスが完了したら、プログラムがブレイクポイントで止まっているので、画面上部のアイコン内の"|▶"をクリックします。

Kogiso_23-1778573283897.png

動画のように赤色のLEDが点滅を開始します。これがクロック150MHz時(デフォルト設定)の点滅速度です。

(マイビデオを表示)

停止はアイコンの□をクリックします(デバッグ停止後も、ボード上ではプログラムが実行され続けるため、LEDは点滅を続けますが一旦無視してください)

Kogiso_24-1778573665179.png


CPU Clockを50MHzに変更してLEDの点滅速度を確認する
続いて、Clocks Toolを用いてCPUコア・クロックを150MHzから50MHzへと変更します。
再度Config ToolsのClocks Toolを開いてください。Clocks Diagramを少し下にスクロールダウンして、System ClockにつながるDIV(AHBCLKDIV)を変更します。変更の際には変更したいDIVの内の数字をクリックするとプルダウンで選択することができます。ここで1/3を選択するとSystem Clock50MHzに変化します。


※クロック設定を変更する際には、Clock Sourceに近い上流のクロック設定を変更すると、下流に存在する複数のクロック設定に影響を及ぼす可能性があるので注意してください。

Kogiso_0-1779430403587.png


この状態でサンプルコードを書き換えます。まずはConfig Toolsの画面左上にあるUpdate Codeをクリックしてください。表示されるダイアログで「OK」を選択してください。

Kogiso_26-1778573845631.png


この状態でVS Codeに戻ると、画面上部にチェックボックスが3つ並んで表示されますので、チェックが入った状態でOKをクリックしてください。少し待つと、Clocks Toolでの変更がVS Code上のサンプルコードに適応されます。

Kogiso_27-1778573865307.png

成功すると画面右下に以下のメッセージが表示されます。

Kogiso_28-1778573878068.png


もう一度デバッグの実行し、完了したら"|▶"でサンプルアプリケーションを実行してください。
LEDが点滅を開始します。こちらがクロック 50MHz時の点滅速度です。150MHz時の速度と比べて明らかに遅くなりました。

(マイビデオを表示)


以上でデモンストレーションは完了です。お疲れ様でした。


おまけ1 - 既にプリセットとして、クロック設定が準備されている


なお、これまでの手順ではDIVを使ってクロックの変更をしましたが、Clocks Toolにはあらかじめ複数のクロック設定がプリセットとして用意されています。Config ToolsにてClocks Toolを選択し、画面上部からFRO 12MHz / FRO HF 48MHz / FRO HF 144MHz…と任意のクロックを選ぶことができます。

Kogiso_0-1778574158553.png

たとえば「BOARD_BootClockPLL_100M」を選んでみると、Clock SourcePLLDIV、それぞれが先ほどと異なることがわかります。例としてClock Source24MHzの外部クロック(SOSC)となっています。

Kogiso_1-1778574179336.png

おまけ2 - 自動で初期化コードを生成した設定値はどこに?

Clock Toolsを用いてクロック設定を自動更新(Update Code)した後、実際の初期化コードにどのように反映されるのかを見てみます。

インポートしたサンプルのProject FilesからCソースファイル(gpio_led_output.c)を確認します。

Kogiso_2-1778574228909.png


Cソースファイルの中身を見ていくと、PinClockDebug consolの初期化を実行するコードが存在します。

Kogiso_3-1778574247421.png


BOARD_InitHardware(); 上で右クリックし、Go to Definition をクリックするとさらに詳細を見ることができます。

Kogiso_4-1778574280972.png


PinClockDebug consolのそれぞれ初期化を実行するためのコードがあります。BOARD_InitBootClocks(); で右クリックし「Go to Definition(もしくは"fn + F12")」を選択し、さらに詳細を見てみます。

遷移先のファイル(clock_config.c)は、FRDM‑MCXN947 の起動時クロック構成を定義する生成コードです。
スクロールダウンしていくと先ほど説明した通り、複数のクロック構成(FRO 12MHz / FRO HF 48MHz / FRO HF 144MHz / PLL 150MHz / PLL 100MHz)がプリセットとして用意されていることがわかります。下記画像では規定値である PLL150Mとなっていますが、

Kogiso_5-1778574353197.png


例えばこの部分をBOARD_BootClockFROHF48Mに変更すると

Kogiso_6-1778574378576.png


プリセットとして準備されているFRO HF 48Mのクロック構成にて初期化が実行されます。

Kogiso_7-1778574399078.png


次にFRO HF 48Mのまま、Clocks Tool上で直接DIVの変更を行うとクロック構成およびコードがどのように変化するか見てみます。赤枠で囲んだテキスト&設定部分が変更されます。

Kogiso_8-1778574466864.png


更に、Clocks Tool上でSystem ClockへとつながるDIV1/2、つまり48→24MHzへ変更し、Update Codeを行うと、DIVの変更により赤枠が変わったことがおわかりいただけると思います。

Kogiso_9-1778574928326.png

 

なお、Clocks Tool側でも変更前後の差分を確認することができます。
クロック設定を変更後、Update Codeをクリックした際に以下のようなダイアログが表示されます。差分が生じたファイルにはファイル名の右側に change と表示されます。これをクリックすると差分を見ることができます。

Kogiso_2-1779431079086.png

clock_config.c の差分を確認します。左側(Newly generated)が変更後のファイル、右側(On disk)が変更前のファイルです。System Clockに差分が生じているのが確認できると思います。
差分が生じた箇所は色が変更しているので視覚的にわかりやすいです。

Kogiso_3-1779431340110.png

 

マイコン、プロセッサには、機能集約が進んでいるため、内部のクロックツリーも非常に複雑化しています。このようなクロック可視化ツールがないと、現実的に設計・評価は難しいと思いますので、是非ご活用ください。

 

=========================

本投稿の「Comment」欄にコメントをいただいても、現在返信に対応しておりません。
お手数をおかけしますが、お問い合わせの際には「NXPへの技術質問 - 問い合わせ方法 (日本語ブログ)」をご参照ください。
(既に弊社NXP代理店、もしくはNXPとお付き合いのある方は、直接担当者へご質問いただいてもかまいません。)

MCUXpresso Config Toolsの中から「Clocks Tool」にフォーカスし、クロック設定の基本および設定方法を解説します。VS Code環境での導入方法から、CPUクロック変更によるLED点滅デモまで紹介します。
(作業時間:10分 *MCUXpresso for VSC (Visual Studio Code), SDKをインストールしている前提)

MCUXpressoMCXSW | Downloads日本語ブログ
标记 (1)
无评分
版本历史
最后更新:
星期一
更新人: