Project

General

Profile

Example SOM Clock Speeds

Objective

The AM57xx has several cores and many of them can run at different frequencies. This provides a way to balance between performance and consumption of power and generation of heat.

The goal of this wiki page is to:

  • List which core frequencies can be changed.
  • Demonstrate how to view the current core frequencies.
  • Walk-through how to change core frequencies using menuconfig.
  • How to access the CPU governors to scale the CPU frequencies depending on the system load.

Prerequisites

Steps

Changeable Core Clock Frequencies

The clock frequencies of the different cores can be changed from U-Boot through menuconfig.

The following core frequencies can be modified:

Freq Setting DSPEVE IVA GPU MPU
OPP_NOM 600 MHz 388 MHz 425 MHz 1000 MHz
OPP_OD 700 MHz 430 MHz 500 MHz N/A
OPP_HIGH 750 MHz 532 MHz 532 MHz N/A
Default OPP_HIGH OPP_NOM OPP_NOM OPP_NOM

Check current core clock frequencies

You can check the core clock frequencies by running the following command (omapconf show opp):

root@mitysom-am57x:~# omapconf show opp
OMAPCONF (rev v1.74-1-g40ab0a2 built Fri Jan 22 21:22:26 UTC 2021)

HW Platform:
  Generic DRA74X (Flattened Device Tree)
  DRA75X ES2.0 GP Device (STANDARD performance (1.5GHz))
  TPS659038  ES2.2

SW Build Details:
  Build:
    Version:  _____                    _____           _         _
  Kernel:
    Version: 4.19.94-g78f5a55524
    Author: oe-user@oe-host
    Toolchain: gcc version 8.3.0 (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36)
    Type: #1 SMP PREEMPT
    Date: Fri Mar 19 14:50:53 UTC 2021

|-----------------------------------------------------------------------------------|
|                        | Temperature | Voltage | Frequency      | OPerating Point |
|-----------------------------------------------------------------------------------|
| VDD_CORE / VDD_CORE0   | 64C / 147F  | 1.150 V |                | NOM             |
|   L3                   |             |         |  266  MHz      |                 |
|   DMM                  |             |         |  266  MHz      |                 |
|   EMIF1                |             |         |  266  MHz      |                 |
|   EMIF2                |             |         |  266  MHz      |                 |
|     LP-DDR2            |             |         |  532  MHz      |                 |
|   L4                   |             |         |  266  MHz      |                 |
|   IPU1                 |             |         |  425  MHz      |                 |
|     Cortex-M4 Cores    |             |         |  212  MHz      |                 |
|   IPU2                 |             |         | (425  MHz) (1) |                 |
|     Cortex-M4 Cores    |             |         | (212  MHz) (1) |                 |
|   DSS                  |             |         | (192  MHz) (1) |                 |
|   BB2D                 |             |         | (354  MHz) (1) |                 |
|                        |             |         |                |                 |
| VDD_MPU / VDD_CORE1    | 65C / 149F  | 1.090 V |                | NOM             |
|   MPU (CPU1 ON)        |             |         |  1000 MHz      |                 |
|                        |             |         |                |                 |
| VDD_GPU / VDD_CORE2    | 65C / 149F  | 1.130 V |                | NOM             |
|   GPU                  |             |         |  425  MHz      |                 |
|                        |             |         |                |                 |
| VDD_DSPEVE / VDD_CORE3 | 64C / 147F  | 1.080 V |                | HIGH            |
|   DSP1                 |             |         | (750  MHz) (1) |                 |
|   DSP2                 |             |         | (750  MHz) (1) |                 |
|   EVE1                 |             |         | (0    MHz) (1) |                 |
|   EVE2                 |             |         | (0    MHz) (1) |                 |
|                        |             |         |                |                 |
| VDD_IVA / VDD_CORE4    | 65C / 149F  | 1.060 V |                | NOM             |
|   IVA                  |             |         | (388  MHz) (1) |                 |
|                        |             |         |                |                 |
|-----------------------------------------------------------------------------------|

Notes:
  (1) Module is disabled, rate may not be relevant.

Modifying U-Boot to change core frequency

The following assumes you have set up the build environment for compiling U-Boot found here: Building U-Boot for MitySOM-AM57X

To select a different core frequency, run menuconfig after you have run the defconfig setup. Below is an example after the U-Boot source has been checked out and the build environment has been set up.

$ make mitysom57xx_devkit_defconfig
$ make menuconfig

In menuconfig, navigate to ARM architecture --> Voltage Domain OPP selections -->

Select one of the core frequencies you'd like to change and select the option (Example is setting DSPEVE to OPP_HIGH, which sets the DSP frequency to 750 MHz)

Exit out of menuconfig and save the changes to the config. Continue following the Building U-Boot for MitySOM-AM57X instructions to build and install the newly modified version of U-Boot.

CPU Frequencies

The CPUs are configured with an on-demand governor to scale the frequencies between 1GHz to 1.5GHz depending on the system load. The settings for the frequencies / governors for each CPU can be found in the following directories:

/sys/devices/system/cpu/cpu0/cpufreq
/sys/devices/system/cpu/cpu1/cpufreq

Example below shows changing the CPU0 governor from ondemand to performance so that the CPU frequency will stay at 1.5GHz.

root@mitysom-am57x:~# echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

A list of available governors can be found by running the following:

root@mitysom-am57x:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
conservative userspace powersave ondemand performance schedutil

You can check the CPU frequency with either the command mentioned previously above (omapconf show opp) or by running the following:

root@mitysom-am57x:~# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq
1500000

NOTE Remember to apply any changes to both CPUs (cpu0 or cpu1 / if applicable).

Conclusion

This wiki page has done the following:

  • Listed which core frequencies can be changed.
  • Demonstrated how to view the current core frequencies.
  • Walked-through how to change core frequencies using menuconfig.
  • Described how to access the CPU governors to scale the CPU frequencies depending on the system load.

Go to top
Add picture from clipboard (Maximum size: 1 GB)