Управление DSP в Linux

Конфигурацию драйвера и библиотек можно изменять через debugfs, аргументы модуля ядра, переменные окружения:

Изменение частоты DSP в Linux

Изменение частоты осуществляется через devfreq.

Список поддерживаемых частот DSP содержится в файле /sys/devices/…/devfreq/devfreqX/available_frequencies.

Поддерживаются 4 стратегии (governors) управления частотой DSP (описаны в файле /sys/devices/…/devfreq/devfreqX/available_governors):

performance — устанавливается максимальная частота DSP.

powersave — устанавливается минимальная частота DSP.

userspace — частота задается пользователем через файл /sys/devices/…/devfreq/devfreqX/userspace/set_freq. По умолчанию, используется значение частоты, заданное в DeviceTree.

simple_ondemand — частота DSP изменяется в зависимости от текущей загрузки DSP. Загрузка DSP определяется отношением времени работы DSP за квант времени к кванту времени.

Зависимость между текущей загрузкой DSP и новым значением частоты DSP:

  • >90% — максимальная частота DSP;

  • >85% и <90% — частота DSP остается прежней;

  • <85% — значение частоты определяется путем линейной интерполяции с округлением до ближайшей доступной частоты.

Квант времени определяет период, по истечении которого замеряется загрузка DSP и изменяется частота. Получение и изменение кванта времени осущестлвяется через файл /sys/devices/…/devfreq/devfreqX/polling_interval.

Примечание

При выборе стратегии simple_ondemand частота изменяется динамически во время исполнения задачи, что может приводить к изменению результатов профилирования.

Получение названия и изменение текущей стратегии осуществляется через файл /sys/devices/…/devfreq/devfreqX/governor.

По умолчанию используется стратегия performance.

Примеры управления частотой DSP0 для MCom-03:

# Текущая частота
cat /sys/devices/platform/sdr-bus/1980000.elcore/devfreq/1980000.elcore/cur_freq

# Текущая стратегия
cat /sys/devices/platform/sdr-bus/1980000.elcore/devfreq/1980000.elcore/governor

# Список доступных частот
cat /sys/devices/platform/sdr-bus/1980000.elcore/devfreq/1980000.elcore/available_frequencies

# Список доступных стратегий
cat /sys/devices/platform/sdr-bus/1980000.elcore/devfreq/1980000.elcore/available_governors

# Изменение текущей частоты до 135 МГц
echo userspace > /sys/devices/platform/sdr-bus/1980000.elcore/devfreq/1980000.elcore/governor
echo 135000000 > /sys/devices/platform/sdr-bus/1980000.elcore/devfreq/1980000.elcore/userspace/set_freq

# Установка стратегии simple_ondemand
echo simple_ondemand > /sys/devices/platform/sdr-bus/1980000.elcore/devfreq/1980000.elcore/governor

# Просмотр статистики по частотам
cat /sys/devices/platform/sdr-bus/1980000.elcore/devfreq/1980000.elcore/trans_stat