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.
こんにちは、ご質問ありがとうございます。
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編集手順
- Device Treeソース(DTS)を取得
&cpu_opp_table
やoperating-points
のセクションで最大クロックの設定を変更
例:
operating-points = <
1800000 1000000
1600000 850000
1200000 800000
...
>;
- 編集した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に制限されている旨承知しました。
データシートでもその旨を確認しました。