Verdin I.mx8MM のCPU動作周波数の変更

Verdin I.mx8MM でCPU動作周波数を変更する方法を知りたいです。
Torizon6.6.0で環境を構築していますが、デフォルトの設定なのか現状は1.2GHzで動作しています。
DeviceTreeでの変更なのだとは思いますが、
1.6GHzと1.8GHzで動作させるための設定方法をご教授頂けないでしょうか。

Hi, I’m the Toradex AI Assistant.

I might make mistakes. Our support team will step in if needed. If I answered your question, please tick the “Solution” checkbox. For follow-up questions to me, please use @ToradexAI in your post.

Did you like my answer? :+1: :-1:


こんにちは、ご質問ありがとうございます。

Verdin iMX8MMでCPU動作周波数を変更する場合、動作クロック制御は主にDevice Treeとカーネル(cpufreqの設定)によって決まります。ただし、SoCハードウェア自体が公式に1.6GHz/1.8GHzでの安定動作を保証しているか、また実際に利用できるかはSoCグレードやBSPによる制限があるためご注意ください。

以下に概要を示します。

1. 有効なCPU周波数の確認

まず、ご利用のSoCで許可されている最大周波数を確認します。
Torizon OS上でroot権限で以下のコマンドを実行してください。

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

この出力に希望の周波数(1,600,000または1,800,000 kHzなど)が含まれていれば、ソフトウェア設定で切り替えが可能です。


2. 最大動作周波数の設定

動作周波数の設定はcpufreqサブシステムで制御されます。最大クロック周波数を変更したい場合は以下のようにします。

echo <希望の周波数> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

例: 1.6GHzにする場合

echo 1600000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

3. Device Treeでの調整方法

最大周波数などを確実に反映したい場合は、Device Treeのoperating-pointsの定義を編集する必要があります。

Device Tree編集手順

  1. Device Treeソース(DTS)を取得
  2. &cpu_opp_tableoperating-pointsのセクションで最大クロックの設定を変更
    例:
operating-points = <
 1800000 1000000
 1600000 850000
 1200000 800000
 ...
>;
  1. 編集したDevice Treeをビルドし、Linuxで適用

Device Tree編集の詳細・デプロイ方法はこちらをご参照ください:
Device Tree Technical Overview


4. 注意事項

  • 実際に1.6GHzや1.8GHzで動作できるかはSoCのBOMやリビジョン、搭載メモリの仕様も関係します。
  • 公称値を超えるクロック設定はSoCや周辺回路の安定動作に影響する場合があるため、自己責任でお願いします。

参考情報

不明点などありましたら、引き続きご質問ください。

Best regards, Toradex AI Assistant.

お問い合わせありがとうございます。

まず、Verdin iMX8M Mini の DualLite バリアントのみが 1.8GHz の動作周波数に対応しており、それ以外のバリアントは最大でも 1.6GHz に制限されています。この情報は Verdin iMX8M Mini のデータシート に記載されていますので、あわせてご確認ください。

また、動作周波数を変更する前に、まず CPUガバナー(governor) の設定をご確認いただくことをおすすめします。

LinuxのCPUガバナーとは、CPUの動作クロックを動的に制御する仕組みで、「performance」ガバナーを使用すると、常に最大のクロック周波数で動作させることができます。AIからの回答の内容に加えて、以下の設定もお試しください。


現在のガバナーの確認

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

利用可能なガバナー一覧の確認

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

ガバナーを “performance” に設定(全コア)

rootユーザーが必要のをご注意ください

for CPU in /sys/devices/system/cpu/cpu[0-9]*; do echo performance | sudo tee $CPU/cpufreq/scaling_governor; done

また、現在のCPU周波数を確認するには、以下のコマンドを使用します:

watch -n 0.5 "cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_cur_freq"

これにより、各コアの現在の動作周波数を 0.5秒ごとにモニタリングできます。

ご回答ありがとう御座います。
最大クロックは1.6GHzに制限されている旨承知しました。
データシートでもその旨を確認しました。