Управление 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