- Table of contents
 - Example SOM Clock Speeds
 
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¶
- Be familiar with how to build u-boot as described in Building U-Boot for MitySOM-AM57X
 
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