Производительности всегда не хватает. Не важно, идет ли речь о ноутбуке, суперкомпьютере, смартфоне или микроконтроллере. Иногда проблему можно решить, просто обновившись до топового железа. Но если и его вдруг оказалось недостаточно, то дальше остается только разгон. Такая соблазнительная возможность, что ей едва ли стоит сопротивляться.

Решившись на разгон, ты тут же столкнешься с двумя основными проблемами. Во-первых, нужно как-то вывести железо за штатный режим работы и при этом сохранить стабильность. Во-вторых, полученный прирост производительности предстоит еще чем-то замерить, чтобы оценить реальную пользу от всех ухищрений.

Конечно, если речь идет о разгоне игрового ПК, то зачастую все тривиально. Многие производители процессоров и видеокарт выпускают собственные утилиты для повышения напряжения и тактовых частот, так что в итоге все сводится к перемещению ползунков в окошке программы. После чего остается только запустить встроенный в игру бенчмарк и наблюдать рост циферок (FPS имеет значение, ага).

Но задумывался ли ты, как это все работает на самом деле? И что нужно знать, чтобы достичь по-настоящему выдающихся результатов? Попробую продемонстрировать на примере.

 

Аппаратная часть

Низкоуровневый разгон железа проще всего будет показать на обычном микроконтроллере. Наверняка ты знаком с Arduino — эта крохотная плата перевернула мир мейкеров, хакеров и всех сопричастных. В ней минимум компонентов: кварцевый резонатор, микросхема ATmega328P и регулятор питания. И все же это почти компьютер. А значит, ее тоже можно разогнать!

Однако сегодня я настроен на максимальный результат, и какие-то жалкие 16 МГц тактовой частоты меня совершенно не интересуют. Отложим Arduino в сторонку и возьмем плату Nucleo-144 на основе STM32H743.

Если пытаться подобрать подходящую аналогию из мира персональных компьютеров, то перед нами Core i9, вне всяких сомнений. Ядро ARM (Cortex-M7) тут работает на ошеломительной частоте 480 МГц — это ровно в 15 раз быстрее оригинальной Arduino Uno. Мало того, здесь размещено два мегабайта постоянной флеш-памяти и целый мегабайт ОЗУ. Производительности добавляет кеш программ и кеш данных (по 16 Кбайт), а также встроенный ускоритель исполнения кода ART.

Сегодня существуют две версии такой отладочной платы. Изначально в модельной линейке Nucleo-144 появилась H743ZI с программатором ST-Link V2-1 и микроконтроллером ревизии Y. Она поддерживала штатную работу «всего лишь» на 400 МГц. Но уже через несколько месяцев производитель сумел оптимизировать схему кристалла и начал выпускать микроконтроллеры Н7 новой ревизии V с базовой частотой в 480 МГц. Именно они легли в основу платы H743ZI2. Кроме того, обновили и программатор — теперь это ST-Link V3E с возможностью внутрисхемной эмуляции.


Так что, если будешь выбирать себе такую же плату, будь предельно внимателен, внешне они очень похожи и выполнены на одинаково белом текстолите. Да и по другим параметрам особых отличий нет: разъемы Arduino, Morpho, Ethernet и интерфейс USB присутствуют на обеих платах.

 

Новая IDE

Даже очень хорошее железо может оказаться бесполезным, если для него не будет подходящего ПО. К счастью, это понимают и в компании ST Microelectronics, поэтому сравнительно недавно там сделали собственную CubeIDE. Однако совсем новой ее назвать трудно. По сути, это надстройка над Eclipse, что может обрадовать пользователей, знакомых со средами Atollic TrueStudio и AC6 Workbench.

Интегрированная среда разработки не только бесплатна и доступна на всех основных платформах (поддерживаются Windows, Linux и macOS), но еще и позволяет «из коробки» пользоваться современными средствами отладки и трассировки (OpenOCD, GDB), а также настраивать периферию микроконтроллера буквально в пару кликов мыши.

WARNING

При попытке отладки приложения на H743ZI2 среда будет настойчиво требовать обновить ST-Link до «актуальной версии». Делать этого ни в коем случае не стоит, по крайней мере если не хочешь откатить прошивку самого программатора до доисторической версии. Действительно актуальное обновление ты сможешь накатить только при помощи ST-Link Utility.

После установки и настройки тулчейна можно переходить к тестированию. Нам предстоит портировать исходные коды бенчмарков на нашу архитектуру и реализовать пару платформенно зависимых функций. Так как операционная система в данном случае совершенно не обязательна, нужно будет переопределить функцию printf для вывода отладочной информации и функцию текущего времени — для расчета результата тестов.

WWW

Если тебе больше по душе Arduino IDE, ты можешь сделать проект в ней. Начиная с версии 1.6.0 в пакет stm32duino была добавлена поддержка платы H743ZI2. Зайди на GitHub разработчиков и далее следуй инструкциям в описании, чтобы добавить ссылку для менеджера пакетов.

 

Настраиваем проект

После создания проекта для отладочной платы Nucleo-H743ZI2 нам нужно изменить несколько настроек по умолчанию.

Продолжение доступно только участникам

Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

Присоединяйся к сообществу «Xakep.ru»!

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Check Also

Фундаментальные основы хакерства. Мастер-класс по анализу исполняемых файлов в IDA Pro

В этой статье мы окунемся в глубокий и подробный статический анализ с помощью IDA Pro — св…

Оставить мнение