1892ВМ14Я: различия между версиями
Etiunova (обсуждение | вклад) Нет описания правки |
Dmitry (обсуждение | вклад) мНет описания правки |
||
Строка 4: | Строка 4: | ||
Представляет собой высокопроизводительную микропроцессорную систему на кристалле, включающую два DSP ядра ELcore-30M, два CPU ARM Cortex-A9, кодек H.264, графический 3D акселератор Mali-300, навигационный коррелятор ГЛОНАСС/GPS/Beidou и встроенные порты ввода/вывода. | Представляет собой высокопроизводительную микропроцессорную систему на кристалле, включающую два DSP ядра ELcore-30M, два CPU ARM Cortex-A9, кодек H.264, графический 3D акселератор Mali-300, навигационный коррелятор ГЛОНАСС/GPS/Beidou и встроенные порты ввода/вывода. | ||
* [[MCom02-Uboot|'''U-boot(SPL)''']] | * [[MCom02-Uboot|'''U-boot (SPL)''']] | ||
* '''[[MCom02-Linux|Linux]]''' | * '''[[MCom02-Linux|Linux]]''' | ||
* '''Отладочные модули''' | * '''Отладочные модули''' | ||
Строка 12: | Строка 12: | ||
* [https://elvees.ru/mc/data_sheets/1892VM14YA_outline.pdf Габаритный чертеж] | * [https://elvees.ru/mc/data_sheets/1892VM14YA_outline.pdf Габаритный чертеж] | ||
= Вопросы по программному обеспечению = | = Вопросы по программному обеспечению = | ||
'''Каким образом можно сделать так, чтобы драйвер не проверял наличие tda998x, или любым другим способом обеспечить нормальную загрузку драйвера?'''</p><p>Обнаружили такую вещь:</p><p>На нашей плате при загрузке выпадает вот такое сообщение:<br>[ 11.570898] vpout-drm 38004000.vpout: failed to bind 0-0070 (ops tda998x_driver_exit [tda998x]): -6</p><p>[ 11.584193] vpout-drm 38004000.vpout: master bind failed: -6</p><p>Судя по всему драйвер vpout изначально проверяет, есть ли в системе tda998x, его не находит, после чего драйвер далее не загружается. (я пробовал убирать драйвер и заново вставлять его с помощью modeprobe, при этом папка /dev/dri всё равно не | '''Каким образом можно сделать так, чтобы драйвер не проверял наличие tda998x, или любым другим способом обеспечить нормальную загрузку драйвера?'''</p><p>Обнаружили такую вещь:</p><p>На нашей плате при загрузке выпадает вот такое сообщение:<br>[ 11.570898] vpout-drm 38004000.vpout: failed to bind 0-0070 (ops tda998x_driver_exit [tda998x]): -6</p><p>[ 11.584193] vpout-drm 38004000.vpout: master bind failed: -6</p><p>Судя по всему, драйвер vpout изначально проверяет, есть ли в системе tda998x, его не находит, после чего драйвер далее не загружается. (я пробовал убирать драйвер и заново вставлять его с помощью modeprobe, при этом папка /dev/dri всё равно не создаётся.</p><p>У нас в системе этого конвертера физически нет, нас интересует panel из этого списка.<br>[ 11.590489] vpout-drm 38004000.vpout: bound 0-0070 (ops tda998x_driver_exit [tda998x])<br>[ 11.598614] vpout-drm 38004000.vpout: bound panel1 (ops panel_ops [vpout_drm_panel])<br>[ 11.626745] vpout-drm 38004000.vpout: bound panel0 (ops panel_ops [vpout_drm_panel])</p> | ||
<blockquote>При старте происходит попытка загрузить драйверы для тех устройств, которые прописаны в DTS. | <blockquote>При старте происходит попытка загрузить драйверы для тех устройств, которые прописаны в DTS. | ||
Строка 33: | Строка 33: | ||
'''Как прошить загрузчик в SPI-flash?'''<blockquote>https://github.com/elvees/mcom02-flash-tools</blockquote> | '''Как прошить загрузчик в SPI-flash?'''<blockquote>https://github.com/elvees/mcom02-flash-tools</blockquote> | ||
'''Возможно ли использовать для сборки на ПЭВМ дистрибутив Linux, отличный от CentOS 7?'''<blockquote>Да, это возможно, однако, работоспособность системы сборки в данном случае не гарантируется. Проверка системы сборки на | '''Возможно ли использовать для сборки на ПЭВМ дистрибутив Linux, отличный от CentOS 7?'''<blockquote>Да, это возможно, однако, работоспособность системы сборки в данном случае не гарантируется. Проверка системы сборки на всём множестве дистрибутивов системы Linux не представляется возможной.</blockquote> | ||
'''Возможно ли использовать виртуальную машину для сборки?'''<blockquote>Да, это возможно. Требования к виртуальной машине аналогичны требованиям к ПЭВМ.</blockquote> | '''Возможно ли использовать виртуальную машину для сборки?'''<blockquote>Да, это возможно. Требования к виртуальной машине аналогичны требованиям к ПЭВМ.</blockquote> | ||
Строка 48: | Строка 48: | ||
'''Существует ли сборка Buildroot с RT-ядром?'''<blockquote>Нет. Если есть необходимость работать с операционной системой реального времени, то предлагаем рассмотреть FreeRTOS и ЗОСРВ "Нейтрино".</blockquote><p>'''Доступно ли описание на открытую часть драйвера графического контроллера 1892ВМ14Я (FrameBuffer)?'''</p><blockquote>Драйверы описаны в http://dist.elvees.com/support/1892VM14YA/linux/Buildroot/v3.1/docs/mcom02-linux-kernel-manual.pdf</blockquote> | '''Существует ли сборка Buildroot с RT-ядром?'''<blockquote>Нет. Если есть необходимость работать с операционной системой реального времени, то предлагаем рассмотреть FreeRTOS и ЗОСРВ "Нейтрино".</blockquote><p>'''Доступно ли описание на открытую часть драйвера графического контроллера 1892ВМ14Я (FrameBuffer)?'''</p><blockquote>Драйверы описаны в http://dist.elvees.com/support/1892VM14YA/linux/Buildroot/v3.1/docs/mcom02-linux-kernel-manual.pdf</blockquote> | ||
'''Не загружается/некорректно работает ALT Linux/ | '''Не загружается/некорректно работает ALT Linux/Astra Linux'''<blockquote>Убедитесь, что в SPI-флеш прошит правильный [[MCom02-Uboot|загрузчик]]. Для корректной загрузки ALT Linux и Astra Linux требуется загрузчик [[MCom02-Uboot|U-Boot]] версии 2017.07.0.14 (соответствует Buildroot v2.9). </blockquote> | ||
'''Какой компилятор используется в MCStudio для работы с DSP-ядром? Поддерживается ли C++?''' | '''Какой компилятор используется в MCStudio для работы с DSP-ядром? Поддерживается ли C++?''' | ||
Строка 78: | Строка 78: | ||
</blockquote> | </blockquote> | ||
'''При подключении | '''При подключении USB устройства оно не работает на плате, но оно исправно работает на другом компьютере. Вывод lsusb: "Bus 001 Device 007: ID 1a86:7523". В прошлый раз с подобной проблемой, вы посоветовали включить драйвер в котором есть id который был нужен. Подскажите, какой драйвер нужно включить в этот раз и где можно узнать, какие id относятся к какому драйверу на будущее.'''<blockquote>Переходим в ядре в папку drivers/usb и там выполняем "grep -R 1a86". В результате присутствует device id 7523 в файле serial/ch341.c. Переходим в ту директорию и в файле Makefile ищем, от какого конфига зависит сборка этого файла. В данном случае это CONFIG_USB_SERIAL_CH341.</blockquote> | ||
'''При подключении по jtag плата подключается, но не работает прошивка.'''<blockquote>Проверьте что | '''При подключении по jtag плата подключается, но не работает прошивка.'''<blockquote>Проверьте что включён режим UART</blockquote> | ||
'''Возможна ли отладка FreeRTOS на [[Салют-ЭЛ24ОМ1|ЭЛ24ОМ1]] при помощи J-Link или ST-Link? '''<blockquote> | '''Возможна ли отладка FreeRTOS на [[Салют-ЭЛ24ОМ1|ЭЛ24ОМ1]] при помощи J-Link или ST-Link? '''<blockquote> | ||
Строка 95: | Строка 95: | ||
<blockquote>Мы в своей аппаратуре используем супервизор питания TPS3838K33, который снимает сигнал сброса с RESET_PON через 10 мс после того, как напряжение питания 3.3В достигнет уровня 2.93В. Напряжение 3.3В заводится как на сам чип 1892ВМ14Я, так и на PMIC, который из этих 3.3В получает все остальные напряжения.</blockquote> | <blockquote>Мы в своей аппаратуре используем супервизор питания TPS3838K33, который снимает сигнал сброса с RESET_PON через 10 мс после того, как напряжение питания 3.3В достигнет уровня 2.93В. Напряжение 3.3В заводится как на сам чип 1892ВМ14Я, так и на PMIC, который из этих 3.3В получает все остальные напряжения.</blockquote> | ||
'''Есть своя разработанная плата, к которой подключается процессорный модуль Салют-ЭЛ24ПМ. К нашей плате подключается также внешний дисплей. На нашем оборудовании отсутствует HDMI-трансивер, а вместо него используется конвертор SN65LVDS93, | '''Есть своя разработанная плата, к которой подключается процессорный модуль Салют-ЭЛ24ПМ. К нашей плате подключается также внешний дисплей. На нашем оборудовании отсутствует HDMI-трансивер, а вместо него используется конвертор SN65LVDS93, подключённый напрямую к выходу интерфейса RGB-24 на модуле «САЛЮТ». Хотелось бы узнать, нет ли у Вас руководства для подключения внешнего дисплея? Может быть Вы можете дать какие-то рекомендации? ''' | ||
<blockquote> Создать новый DTS на базе https://github.com/elvees/u-boot/blob/mcom02/arch/arm/dts/mcom02-salute-el24om1-r1.1-1.2.dtsi#L170 | <blockquote> Создать новый DTS на базе https://github.com/elvees/u-boot/blob/mcom02/arch/arm/dts/mcom02-salute-el24om1-r1.1-1.2.dtsi#L170 | ||
Удалить из DTS лишние компоненты включая HDMI TDA-передатчик (строка 170). | Удалить из DTS лишние компоненты включая HDMI TDA-передатчик (строка 170). | ||
Строка 110: | Строка 110: | ||
''' Есть ли особенности по пайке и реболингу, инструкции и рекомендации? '''<blockquote>Температурный профиль пайки подбирается технологом при производстве аппаратуры. Технические требования к выполнению технологических операций пайки и профили указаны в ГОСТ Р 56427-2015. Насколько нам известно, наши потребители используют стандартный профиль пайки для BGA-микросхем. | ''' Есть ли особенности по пайке и реболингу, инструкции и рекомендации? '''<blockquote>Температурный профиль пайки подбирается технологом при производстве аппаратуры. Технические требования к выполнению технологических операций пайки и профили указаны в ГОСТ Р 56427-2015. Насколько нам известно, наши потребители используют стандартный профиль пайки для BGA-микросхем. | ||
Данный профиль может быть скорректирован с | Данный профиль может быть скорректирован с учётом функциональных особенностей платы.</blockquote> | ||
= Нестандартные вопросы = | = Нестандартные вопросы = | ||
'''Хотим организовать обмен через spi на базе MFBSP. Интерфейс точка-точка. Вопрос заключается в целесообразности применения линии SS. Если мы пропустим один такт на | '''Хотим организовать обмен через spi на базе MFBSP. Интерфейс точка-точка. Вопрос заключается в целесообразности применения линии SS. Если мы пропустим один такт на приёме или словим лишний разряд, сможет ли контроллер выровняться по какому-то тайм-ауту или ещё каким-либо способом?'''<blockquote>Без ss в последовательном режиме в случае прихода лишнего импульса клока или потери импульса MFBSP сам не восстановит правильное выравнивание слов. Порт придётся программно выключать и включать. Наличие импульсов на ss позволит явно фиксировать окончание передачи и синхронизировать старт нового слова. Так что если именно последовательный режим будет выбран для соединения и есть риск проскока лишних импульсов, лучше строить передачу с ss.</blockquote> | ||
'''Можно ли для защиты от влаги покрыть модуль лаком?'''<blockquote>Да, покрыть модуль лаком можно, однако в таком случае гарантия на модуль | '''Можно ли для защиты от влаги покрыть модуль лаком?'''<blockquote>Да, покрыть модуль лаком можно, однако в таком случае гарантия на модуль пропадёт.</blockquote> | ||
'''Как можно снизить энергопотребление 1892ВМ14Я в режиме гибернации?''' | '''Как можно снизить энергопотребление 1892ВМ14Я в режиме гибернации?''' | ||
Строка 125: | Строка 125: | ||
* Отключить неиспользуемые домены питания. | * Отключить неиспользуемые домены питания. | ||
Определённый набор режимов энергосбережения реализован у нас в Linux. Они перечислены в документе https://dist.elvees.com/mcom02/buildroot/nightly/latest/docs/html/linux-kernel-manual/index.html#id18. Там же есть ссылка на kernel.org, где представлено более подробное описание этих режимов.</blockquote> | |||
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | __ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__ | ||
[[Категория:Процессоры]] | [[Категория:Процессоры]] |
Версия от 15:18, 26 июля 2023
Общая информация
Малопотребляющий многоядерный сигнальный микропроцессор 1892ВМ14Я для связных, навигационных, мультимедийных, встраиваемых, мобильных приложений, например: промышленных компьютеров, планшетов, тонких клиентов, средств защиты информации, IP‑видеокамер, IP-телефонов.
Представляет собой высокопроизводительную микропроцессорную систему на кристалле, включающую два DSP ядра ELcore-30M, два CPU ARM Cortex-A9, кодек H.264, графический 3D акселератор Mali-300, навигационный коррелятор ГЛОНАСС/GPS/Beidou и встроенные порты ввода/вывода.
- U-boot (SPL)
- Linux
- Отладочные модули
- Салют-ЭЛ24ПМ
- Салют-ЭЛ24ОМ1
- Салют-ЭЛ24Д1(2)
- Габаритный чертеж
Вопросы по программному обеспечению
Каким образом можно сделать так, чтобы драйвер не проверял наличие tda998x, или любым другим способом обеспечить нормальную загрузку драйвера?
Обнаружили такую вещь:
На нашей плате при загрузке выпадает вот такое сообщение:
[ 11.570898] vpout-drm 38004000.vpout: failed to bind 0-0070 (ops tda998x_driver_exit [tda998x]): -6
[ 11.584193] vpout-drm 38004000.vpout: master bind failed: -6
Судя по всему, драйвер vpout изначально проверяет, есть ли в системе tda998x, его не находит, после чего драйвер далее не загружается. (я пробовал убирать драйвер и заново вставлять его с помощью modeprobe, при этом папка /dev/dri всё равно не создаётся.
У нас в системе этого конвертера физически нет, нас интересует panel из этого списка.
[ 11.590489] vpout-drm 38004000.vpout: bound 0-0070 (ops tda998x_driver_exit [tda998x])
[ 11.598614] vpout-drm 38004000.vpout: bound panel1 (ops panel_ops [vpout_drm_panel])
[ 11.626745] vpout-drm 38004000.vpout: bound panel0 (ops panel_ops [vpout_drm_panel])
При старте происходит попытка загрузить драйверы для тех устройств, которые прописаны в DTS. Наиболее правильным решением в этом случае будет удалить hdmi из DTS, пересобрать U-Boot и прошить его в SPI-флэш.
Можно получить настроенную для кросс-компиляции под buildroot виртуальную машину для ускорения тестирования нашего ПО под архитектурой САЛЮТ?
Да, такая виртуальная машина есть.
Ссылка для скачивания: https://box.elvees.com/index.php/s/BjagY77QYbHzoxm
Имя пользователя:
user
Пароля нетПароль от root:
qweasd
Каких-то особенностей у этой виртуальной машины нет, это просто установленный CentOS версии, указанной в разделе 3.2 документа: https://nc2.elvees.com/index.php/s/AmPg52cfWnTFMyq?dir=undefined&path=%2F1892VM14YA%2Flinux%2FBuildroot%2Fv3.1%2Fdocs&openfile=13165
На нашей плате нет SD карты. Откуда можно загружаться?
Если у Вас нет возможности загрузить Linux с SD-карты, то Вы можете попробовать загрузить его из другого источника: с USB-носителя, из eMMC (если используете процессорный модуль Салют-ЭЛ24ПМ2), либо по TFTP и NFS.
Как прошить загрузчик в SPI-flash?
Возможно ли использовать для сборки на ПЭВМ дистрибутив Linux, отличный от CentOS 7?
Да, это возможно, однако, работоспособность системы сборки в данном случае не гарантируется. Проверка системы сборки на всём множестве дистрибутивов системы Linux не представляется возможной.
Возможно ли использовать виртуальную машину для сборки?
Да, это возможно. Требования к виртуальной машине аналогичны требованиям к ПЭВМ.
Будет ли работать под buildroot микросхема PHY DP83865 без изменений ядра?
Драйвер для DP83865 входит в состав драйвера "Drivers for National Semiconductor PHYs". И в большинстве случаев специальные драйверы phy не требуются, т.к. они стандартные и с ними может работать generic-драйвер.
Обязательно ли прошивать образ U-Boot в SPI-флеш, если я собираю свой образ Buildroot?
Да, обязательно.
Не загружается драйвер delcore30m при выполнении команды modprobe delcore30m
Для корректной загрузки драйвера необходимо выполнить следующую последовательность команд:
modprobe -r avico echo -n "37220000.dma" > /sys/bus/amba/drivers/dma-pl330/unbind modprobe -r delcore30m modprobe delcore30m
Существует ли сборка Buildroot с RT-ядром?
Нет. Если есть необходимость работать с операционной системой реального времени, то предлагаем рассмотреть FreeRTOS и ЗОСРВ "Нейтрино".
Доступно ли описание на открытую часть драйвера графического контроллера 1892ВМ14Я (FrameBuffer)?
Драйверы описаны в http://dist.elvees.com/support/1892VM14YA/linux/Buildroot/v3.1/docs/mcom02-linux-kernel-manual.pdf
Не загружается/некорректно работает ALT Linux/Astra Linux
Убедитесь, что в SPI-флеш прошит правильный загрузчик. Для корректной загрузки ALT Linux и Astra Linux требуется загрузчик U-Boot версии 2017.07.0.14 (соответствует Buildroot v2.9).
Какой компилятор используется в MCStudio для работы с DSP-ядром? Поддерживается ли C++?
Для работы с DSP ELCore-30M используется clang 4.0.
Для DSP ELCore-30M не следует писать код на C++. Вычислительные алгоритмы нужно разрабатывать на С и ассемблере.
Где можно посмотреть пример включения L2-кэш?
Отдельного примера включения кэша второго уровня у нас нет. В целом, работа с L2-кэшем не относится к специфике нашего процессора, это вопрос скорее к самой архитектуре ARM. Так что есть смысл поискать примеры работы с ним в интернете.
Со своей стороны можем дать ссылку на демо-версию FreeRTOS для 1892ВМ14Я: https://nc2.elvees.com/index.php/s/AmPg52cfWnTFMyq?path=%2F1892VM14YA%2FFreeRTOS%2Fv1.0%2Fmcom02_freertos_demo
В ней реализована работа с L2-кэшем (см. файлы arm_cache.s и l2cc.c).
Как наблюдать тестовый паттерн для вывода с камеры?
Введите команду для выбора паттерна (* - номер выхода):
v4l2-ctrl --device /dev/video* --set-ctrl test_pattern=1После чего выполнить:
v4l2tofb -i 2 -w 1920 -h 1080
Вопросы по аппаратной части
Где взять референс-дизайн для собственных проектов?
В качестве референс-дизайна можно брать последнюю ревизию модуля Салют-ЭЛ24Д1, схема и проект выложены на сайте.
При подключении USB устройства оно не работает на плате, но оно исправно работает на другом компьютере. Вывод lsusb: "Bus 001 Device 007: ID 1a86:7523". В прошлый раз с подобной проблемой, вы посоветовали включить драйвер в котором есть id который был нужен. Подскажите, какой драйвер нужно включить в этот раз и где можно узнать, какие id относятся к какому драйверу на будущее.
Переходим в ядре в папку drivers/usb и там выполняем "grep -R 1a86". В результате присутствует device id 7523 в файле serial/ch341.c. Переходим в ту директорию и в файле Makefile ищем, от какого конфига зависит сборка этого файла. В данном случае это CONFIG_USB_SERIAL_CH341.
При подключении по jtag плата подключается, но не работает прошивка.
Проверьте что включён режим UART
Возможна ли отладка FreeRTOS на ЭЛ24ОМ1 при помощи J-Link или ST-Link?
Отладка при помощи J-Link или ST-Link не поддерживается. Для отладки рекомендуется использовать эмулятор mc-usb-jtag.
Какие микросхемы SPI Flash памяти поддерживаются BootROM 1892ВМ14Я (в режиме загрузки из SPI0)?
BootROM 1892ВМ14Я поддерживает любые микросхемы SPI-флеш памяти.
Есть ли внутри 1892ВМ14Я монитор питания и производится ли сброс по включению питания?
В микросхеме 1892ВМ14Я нет встроенного монитора питания. Сброс по включению питания не производится, его нужно делать принудительно.
Какую нужно устанавливать задержку после установления питания при принудительном сбросе?
Мы в своей аппаратуре используем супервизор питания TPS3838K33, который снимает сигнал сброса с RESET_PON через 10 мс после того, как напряжение питания 3.3В достигнет уровня 2.93В. Напряжение 3.3В заводится как на сам чип 1892ВМ14Я, так и на PMIC, который из этих 3.3В получает все остальные напряжения.
Есть своя разработанная плата, к которой подключается процессорный модуль Салют-ЭЛ24ПМ. К нашей плате подключается также внешний дисплей. На нашем оборудовании отсутствует HDMI-трансивер, а вместо него используется конвертор SN65LVDS93, подключённый напрямую к выходу интерфейса RGB-24 на модуле «САЛЮТ». Хотелось бы узнать, нет ли у Вас руководства для подключения внешнего дисплея? Может быть Вы можете дать какие-то рекомендации?
Создать новый DTS на базе https://github.com/elvees/u-boot/blob/mcom02/arch/arm/dts/mcom02-salute-el24om1-r1.1-1.2.dtsi#L170
Удалить из DTS лишние компоненты включая HDMI TDA-передатчик (строка 170). Оставить объявление одного монитора, например, https://github.com/elvees/u-boot/blob/mcom02/arch/arm/dts/mcom02-salute-el24om1-r1.1-1.2.dtsi#L114 Наблюдать переключение сигналов на VPOUT. Исходный код драйвера vpout-drm - https://github.com/elvees/linux/tree/mcom02/drivers/gpu/drm/vpout Краткое описание драйвера - https://dist.elvees.com/mcom02/buildroot/v3.1/docs/html/linux-kernel-manual/index.html#vpout-drm Обратите внимание, что ссылка на github указывает на последнюю версию ядра Linux. В зависимости от дистрибутива может использоваться другой слепок (commit) ядра Linux.
Соответствие ядра Linux и релизов Buildroot приведено в https://dist.elvees.com/mcom02/buildroot/v3.1/docs/html/buildroot-changelog/index.html
Особенности пайки
Есть ли особенности по пайке и реболингу, инструкции и рекомендации?
Температурный профиль пайки подбирается технологом при производстве аппаратуры. Технические требования к выполнению технологических операций пайки и профили указаны в ГОСТ Р 56427-2015. Насколько нам известно, наши потребители используют стандартный профиль пайки для BGA-микросхем. Данный профиль может быть скорректирован с учётом функциональных особенностей платы.
Нестандартные вопросы
Хотим организовать обмен через spi на базе MFBSP. Интерфейс точка-точка. Вопрос заключается в целесообразности применения линии SS. Если мы пропустим один такт на приёме или словим лишний разряд, сможет ли контроллер выровняться по какому-то тайм-ауту или ещё каким-либо способом?
Без ss в последовательном режиме в случае прихода лишнего импульса клока или потери импульса MFBSP сам не восстановит правильное выравнивание слов. Порт придётся программно выключать и включать. Наличие импульсов на ss позволит явно фиксировать окончание передачи и синхронизировать старт нового слова. Так что если именно последовательный режим будет выбран для соединения и есть риск проскока лишних импульсов, лучше строить передачу с ss.
Можно ли для защиты от влаги покрыть модуль лаком?
Да, покрыть модуль лаком можно, однако в таком случае гарантия на модуль пропадёт.
Как можно снизить энергопотребление 1892ВМ14Я в режиме гибернации?
По сути, все варианты энергосбережения – это только разные частные случаи, разнящиеся степенью отключения питания.
Какие существуют способы в принципе:
- Отключить частоты от неиспользуемых блоков (регистры GATE_*).
- Понизить до минимально допустимых значений частоты тех блоков, которые остаются затактированными.
- Отключить неиспользуемые домены питания.
Определённый набор режимов энергосбережения реализован у нас в Linux. Они перечислены в документе https://dist.elvees.com/mcom02/buildroot/nightly/latest/docs/html/linux-kernel-manual/index.html#id18. Там же есть ссылка на kernel.org, где представлено более подробное описание этих режимов.