В прошлом занятии мы немного познакомились с линейкой микроконтроллеров ESP32. Теперь пришло время попробовать себя в написании ПО для него.
Писать прошивки так же, как и в случае с ESP8266, можно несколькими способами. Можно это делать в IDE Arduino, установив необходимый пакет библиотек. Также можно скачать тулчейн с официального сайта или ещё с какого-то ресурса и там будут 2 способа. Либо собирать ПО с командной строки, либо делать это в IDE. В качестве IDE может выступать также несколько вариантов — Code Vision, Eclipse и т.д.
Мы будем пользоваться средой Eclipse IDE, так как мы мало того к ней уже как-то привыкли, а ещё меня подтолкнуло к данному шагу то, что она некоторое время шла в комплекте с тулчейном. Правда, сейчас почему-то не поставляется и нужно устанавливать отдельно и подключать плагин. Постараемся с этим разобраться.
А не поставляется видимо потому, что теперь с тулчейном идёт своя среда — Espressif IDE. Скорее всего это тот же Eclipse только как-то модифицированный. Обязательно его испробуем.
КАК СОЗДАТЬ МОД для SKYRIM SE ➤ Обзор Модов Skyrim SE
Чтобы получить тулчейн, идём на официальный сайт Espressif и открываем страницу для закачки, вернее страницу с документацией о том, как собирать прошивки и отлаживать их для ESP32 вот по этой ссылке. Заодно здесь можно посмотреть, как именно работать с ESP32.
Ниже жмём вот на эту ссылку
Попадаем на другую страницу, где рассказано, как устанавливать тулчейн.
Переходим там по этой ссылке
Скачиваем вот этот пакет
Можно, конечно, воспользоваться и онлайн-инсталлятором, но у меня в случае офлайн получалось всегда лучше.
Запускаем инсталлятор и начинаем установку
Оставляем все галки установленными и идём далее
Оставляем галки и жмём Finish
Запустятся два окна с командными строками
Дожидаемся окончания процессов сборки в окнах и закрываем их.
Установка, настройка и работа по переводу модов для Скайрим в ESP/ESM Translator
Попробуем запустить Espressif IDE, найдя на рабочем столе вот этот ярлык
Выбираем каталог для рабочей среды
Откроем дерево проектов
Прежде чем настроить под себя редактор, давайте попробуем добавить какой-нибудь проект. Скопируем каталог с примером проекта hello_world, находящемуся по пути C:Espressifframeworksesp-idf-v4.4examplesget-started, в каталог, который мы выбрали для рабочей среды.
Подключим данный проект в нашу среду
Попробуем данный проект собрать для начала
Начнётся первоначальная сборка компонентов
Затем непосредственно сборка проекта
Это была предварительная сборка. Можно, конечно, данную сборку уже прошить, но тогда конфигурация проекта останется в состоянии «по умолчанию». А если мы хотим сконфигурировать проект по-своему, а это так и делается, мы хорошо помним это из сборки пакетов из командной строки под Linux, то после сборки запускаем конфигурацию с помощью двойного клика вот по этому файлу дерева проектов
Запустится вот такой вот удобный конфигуратор в виде дерева
Многие помнят, как конфигурируются проекты с командной строки, поэтому для них это будет очень удобный конфигуратор.
В данном проекте мы только изменим размер флеш-памяти
Закроем вкладку с конфигуратором по крестику, согласившись с его сохранением и ещё раз пересоберём проект таким же образом, как мы его собирали первоначально.
Теперь у нас есть файл прошивки.
Но прежде чем его прошить, нужно настроить лаунчер (Launcher).
Перед этим не забываем подключить плату к компьютеру
Здесь, уже, в принципе всё настроено
А здесь останется выбрать правильную цель (Launch target) и выбрать в ней правильный порт
Возможно, придётся заново пересобрать проект, это в принципе не сложно, либо заранее до конфигурации настроить лаунчер, чтобы не пересобирать несколько раз.
Пока проект собирается, посмотрим содержимое файла hello_world_main.c, вернее содержимое функции точи входа
Источник: narodstream.ru
Перевод модификаций через ESP-ESM Translator 1.0.0
Привет! Это новый туториал по локализации модификаций через ESP-ESM Translator, лучшую из утилит локализации для целой плеяды игр.
Перед тем, как заниматься непосредственно локализацией, пожалуйста, ознакомьтесь с Правилами хорошего тона в локализации модификаций. В статье по ссылке содержится общая информация, как лучше переводить, каких правил придерживаться и чего избегать, чтобы переведённый вами мод был достойным.
Процесс локализации
Сначала вам нужно скачать непосредственно утилиту и распаковать её в удобное для работы место.
Запускайте, перед вами появится вот такой интерфейс:
Перед работой нам нужно пройтись по настройкам. Нажимайте иконку . Откроется следующее окошко:
Для начала, вы можете выбрать язык программы из списка, чтобы интерфейс был на русском. После этого вам нужно выбрать кодировку — и это очень важно — потому что если кодировка будет неправильной, при сохранении плагина в игре вместо вашего текста будут одни лишь кракозябры.
- Для Fallout 4 и Skyrim SE кодировка всегда будет UTF-8
- Для Fallout 3, Fallout: New Vegas и Skyrim LE кодировка всегда будет Windows-1251
Чтобы вам не менять кодировку каждый раз, когда вы начинаете переводить моды для разных игр, просто проследите, чтобы были проставлены галочки «Спрашивать входную кодировку» и «Спрашивать кодировку выхода». Если они будут включены, каждый раз при открытии плагина программа будет вас вежливо спрашивать, правильную ли кодировку она выбрала перед открытием. Так как вы уже знаете, какая кодировка вам нужна, просто убедитесь, что выбрана правильная.
Теперь переходите на вкладку «База данных». Это база с записями игры на английском и русском языке, она нужна для того, чтобы каждый раз, когда в моде используется оригинальная фраза, название или имя персонажа, к примеру, программа автоматически подставляла нужный перевод. Здесь вам нужно выбрать нужную базу той игры, моды для которой вы переводите. В моём случае это Skyrim SE. Все базы с англо-русским текстом можно скачать на страничке ESP-ESM Translator.
Проследите, чтобы галочки были проставлены, как на скриншоте. Это базовые настройки, и они довольно удобны.
Приступаем к переводу!
Открывайте нужный вам мод. Для примера я возьму совсем маленький мод Dust adept armor. При открытии, как мы уже знаем, программа спросит у нас, верную ли кодировку она выбрала. Так как модификация для Skyrim SE, кодировка UTF-8 является верной.
После этого откроется интерфейс перевода модификации, который выглядит следующим образом:
Слева располагаются категории записей, такие как ARMO — это броня, BOOK — книги и тома заклинаний, CELL — ячейки мира, NPC — персонажи, TES4 — заголовок мода, в который обычно авторы помещают свой псевдоним, и WRLD — мир игры, например, Скайрим или Солтстейм. Нам нужно переводить весь текст, который будет показан в игре, в данном случае, это всё, кроме TES4. Выбираем вкладку ARMO и начинаем переводить.
Здесь всё должно быть понятно. Текст оригинала — это то, что нужно переводить, текст перевода — это то, куда нужно переводить. Вы можете писать текст в выделенной ячейке, как у меня, и переходить на следующую при помощи клавиши Enter.
Вы также можете переводить в большой ячейке снизу, и переходить на следующую строку при помощи сочетания клавиш Ctrl+Enter
Вы даже можете переводить, дважды кликнув по оригинальной строке — в этом случае появится окошко с пространством, в котором удобно переводить большие тексты, к примеру, записки.
После того, как мы перевели первую строку, она стала у нас оранжевой . Однако, появилась ещё одна строка, бирюзовая , которую мы не переводили. Почему? Всё просто — весь одинаковый текст переводится автоматически, а переведенный таким образом текст отмечается бирюзовыми строками. Кстати, оранжевая строка означает, что эту строку отредактировали вы сами при переводе.
Кстати, а как узнать, что мы переводим правильно? Ведь Boots могут быть как ботинками, так и сапогами, как понять, какой вариант будет правильным? В этом нам поможет база игры. Выделяем слово, которое нам интересно, в нижней колонке. Выделить одинокое слово можно при помощи двойного клика мышкой.
После этого, пока интересное нам слово выделено, нажимаем F3 — это запустит поиск по базе игры, которую мы выбирали раньше. Откроется следующее окошко:
Здесь вы можете просмотреть все записи, которые содержат интересующее нас слово. Невероятно, но это именно сапоги . Переводим в соответствии с базой и таким же образом продолжаем переводить все оставшиеся значения. Кстати, когда мод достаточно большой, вам может понадобиться поиск по строкам этого мода, а не базы. Выбираем слово или словосочетание, нажимаем F4 — вуаля! Откроется такое же окошко, но уже с записями этой модификации.
Кстати, здесь тоже можно переводить, чем я зачастую пользуюсь, когда строки не совпадают полностью, но содержат одни и те же выражения, к примеру, «Том заклинаний: Огненная вспышка», «Огненная вспышка». Очень удобно, когда нужно переводить несколько записей в точном соответствии.
Заканчиваем перевод категории ARMO:
Проверяем, всё ли правильно, выделяем все строки при помощи сочетания клавиш CTRL+A и жмём на F10 — это подтвердит статус наших строк и изменит их цвет на зеленый, что значит, что при сохранении плагина они будут записаны в мод. Строки, которые не подтверждены, записаны не будут.
Таким же образом переводим оставшиеся строки модификации. Кстати, если вы обнаружите, что некоторые строки уже подтверждены, а вы их не переводили, то знайте, что это происходит потому, что программа сверяет записи мода с базой игры. Если они совпадают по тексту и ID, программа автоматически подставит нужный текст и подтвердит его, чтобы у вас было меньше работы.
Когда все строки модификации подтверждены, нажмите клавишу записи перевода в мод. Также в конце работы с программой, вне зависимости от того, закончили вы перевод или нет, сохраняйте его, чтобы продолжить в следующий раз. Это можно сделать при помощи Перевод -> Сохранить перевод или Перевод -> Сохранить перевод как. Когда модификация обновится, вы откроете её и сможете загрузить перевод прошлой версии, чтобы вам не нужно было начинать с нуля.
Чтобы модификация работала, её обязательно нужно сохранять с тем же названием и перезаписью. После того, как вы это сделаете, программа еще раз предложит выбрать вам кодировку. Выбирайте нужную или соглашайтесь с предложенным выбором, после чего перевод будет окончен.
Поздравляю, вы прекрасны! Знаний из этой статьи и «Правил хорошего тона» должно вам хватить для локализации 90% модификаций. Туториал, скорее всего, будет дополняться по мелочам, но любые вопросы вы можете задавать в комментариях.
Присоединяйтесь к нашему Дискорд-каналу и группе ВК, куда мы дублируем большую часть того, что происходит на сайте и постим обновления материалов.
-
Создайте аккаунт или авторизуйтесь для скачивания файла
Источник: modboy.ru
Чуть подробнее о настройке среды разработки esp-idf для разработки приложений Esp32
Esp32 использует два процессора Xtensa с симметричной адресацией. Это разработка Гарварда, сделанная аж в 1997 году. Заявленная тактовая частота 240/160 МГц.
Частота таймеров 80 МГц
Очень низкое энергопотребление в режиме «глубокого сна» — аж 5-2,5 мкА.
Аналогичные по архитектуре модули STM32, скажем стоят значительно дороже. Да, 400 МГц, да отличная документация. Но, скажем процессор STM32F407 стоит около 1000 рублей на Алиэкспрессе.
И почти нет микропроцессоров, у которых были бы «на борту» Bluetooth и Wi-Fi стоимостью 150-200 рублей.
Удобные для любительской распайки модули с микропроцессором «на борту»
Почему esp-idf VSCode и Eclipse?
ESP-IDF позиционируется, как Espressif IoT Development Framework — Фреймворк разработки IoT (Интернет Вещей). Плата с процессором Esp32 вполне может стать объектом Интернета Вещей.
А так же, с этим фреймворком легко разрабатывать Bluetooth Low Energy устройства, которыми, скажем, можно легко управлять с мобильного телефона. Подключаться к WiFi и проводной сети Ethernet.
Да, цена входа для непрофессионального разработчика на Arduino IDE, значительно ниже. Для сегмента DIY (Самодельничество, или «сделай сам» (англ. DIY — Do It Yourself), — вид деятельности, при котором люди самостоятельно производят какие-либо изделия для собственного использования), более чем достаточно.
Но всегда же хочется большего, не правда ли? Примитивы FreeRTOS кажутся мне более понятными, логичными и простыми в использовании, чем void setup() и void loop(). Опять же, возможность обращения к LL функциям (Low Level Layer Function)
Так и не понял, можно ли «поднять» BLE GATT Server на Arduino IDE, но во фреймворке esp-idf он пишется почти элементарно.
Часть I. Консоль
Статей о настройке IDE Visual Studio Code и Eclipse под Linux и Windows написано уже много. В принципе, с точностью до небольших деталей, они повторяют друг-друга. Эта заметка не исключение.
Отличие лишь в том, что и Eclipse и Visual Studio Code будут использовать единожды установленные Espressif Framework и набор инструментов — toolchain. Раздражает, что каждая установка плагинов https://github.com/espressif/vscode-esp-idf-extension и https://github.com/espressif/idf-eclipse-plugin «тащит» за собой новую установку пакета ESP-IDF и TOOLCHAIN. Каждая установка в сумме, 3.3 Гб, между прочим.
Linux
Для примера, использую Ubuntu 21.04.
Во-первых, классическое начало для deb систем:
sudo apt update sudo apt upgrade sudo apt install python3-pip git cmake ninja-build
Ну или установить cmake и ninja, используя snap
Для полноценной работы esp-idf должны быть установлены git, python3 и pip3. Причём, надо, чтобы python вызывался, как python, а не python3 или python3.9 и т.д. Скажем, в Ubuntu 18.04, 20.10, 21.04 такой команды, как python изначально нет. Есть python3. Так, что надо либо сделать мягкую ссылку:
mkdir ~/.local/bin ln -sf /usr/bin/python3 ~/.local/bin/python source ~/.profile
python3 -m venv ~/python/python3 code ~/python/python3/bin/activate
Последний способ чуть сложнее, но даже в создании мягкой ссылки есть забавный подвох: если Вы не создали каталог ~/.local/bin, то .profile его не «подхватит», потому, что в скрипте профиле есть такой код:
if [ -d «$HOME/.local/bin» ] ; then PATH=»$PATH:$HOME/.local/bin» fi
Иными словами, если этот каталог не создан, его в пути и не будет. После создания каталога, нужно вызвать source ~/.profile
Проверим себя. Вызовем из терминала:
$python Python 3.8.10 (default, Jun 2 2021, 10:49:15) [GCC 9.4.0] on linux Type «help», «copyright», «credits» or «license» for more information. >>> quit()
Всё работает. Скачиваем esp-idf. Предпочитаю установить фреймворк в какой-нибудь подкаталог домашеного каталога, вроде ~/espressif. Фреймворков Esp32, аж целых три — esp-adf, esp-idf, esp-mdf, так что, чтобы не засорять «корневое» пространство пользовательского каталога, сложим их в одну кучу.
Имена каталогов верхних уровней не должны содержать пробелов.
mkdir ~/espressif cd ~/espressif git clone https://github.com/espressif/esp-idf.git —recursive
Имеет смысл сразу добавить в какой-нибудь из пользовательских .*rc-файлов загрузку переменных окружения esp-idf. Переменные ADF_PATH и MDF_PATH предусмотрены на тот случай, если Вы захотите работать на Esp32 со звуком или создавать самоорганизующиеся сети из нескольких плат Esp32.
Скрипт добавляет алиас idfexp. Так удобнее превращать текущую консоль в среду IDF-разработки, чтобы не набирать, скажем каждый раз ~/espressif/esp-idf/export.sh
# Скрипт для экспорта окружения esp-idf, esp-adf, esp-mdf # ESP_PATH=»$HOME/espressif» IDF_TOOLS_PATH=»$HOME/.espressif» if [ -d «$ESP_PATH/esp-idf» ] ; then IDF_PATH=»$ESP_PATH/esp-idf» export IDF_PATH if [ -f «$IDF_PATH/export.sh» ] ; then alias idfexp=». $IDF_PATH/export.sh» fi fi if [ -f «$ESP_PATH/esp-adf» ] ; then ADF_PATH=»$ESP_PATH/esp-adf» export ADF_PATH fi if [ -f «$ESP_PATH/esp-mdf» ] ; then MDF_PATH=»$ESP_PATH/esp-mdf» export MDF_PATH fi if [ -d «$IDF_TOOLS_PATH» ] ; then export IDF_TOOLS_PATH fi
Можно добавить автоматическую загрузку скрипта через любой актуальный ~/.*rc-файл. Например, добавить в ~/.bashrc (. необходим, поскольку, разрешения .*rc-файлов 0644):
if [ -f «$HOME/.idfrc» ]; then . «$HOME/.idfrc» # This load Espressif environment fi
Далее, осталось установить набор инструментария для сборки проектов. По умолчанию toolchain будет установлен в ~/.espressif
cd ~/espressif/esp-idf ./install.sh
Если всё прошло удачно, то увидим что-то такое (журнал установки укорочен):
WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available. You should consider upgrading via the ‘/home/grandfatherpikhto/.espressif/python_env/idf4.4_py3.8_env/bin/python -m pip install —upgrade pip’ command. All done! You can now run:
Обратите внимание, что предлагается обновить venv:
WARNING: You are using pip version 21.2.3; however, version 21.2.4 is available. You should consider upgrading via the ‘/home/grandfatherpikhto/.espressif/python_env/idf4.4_py3.8_env/bin/python -m pip install —upgrade pip’ command.
~/.espressif/python_env/idf4.4_py3.8_env/bin/python -m pip install —upgrade pip pip
Размер esp-idf приблизительно 2.2 Гб, toolchain — 1.2 Гб. Ну, так на минуточку:
$du -hs ~/espressif/esp-idf 1.1G esp-idf $du -hs ~/.espressif 1.9G .espressif
После установки toolchain можно вызвать source ~/.idfrc и подгрузить переменные окружения ESP-IDF командой idfexp или
. ~/espressif/esp-idf/export.sh
Если всё пошло правильно, должны увидеть что-то такое:
$ idfexp Detecting the Python interpreter Checking «python» . Python 3.8.10 «python» has been detected Adding ESP-IDF tools to PATH. Using Python interpreter in /home/grandfatherpikhto/.espressif/python_env/idf4.4_py3.8_env/bin/python Checking if Python packages are up to date. Python requirements from /home/grandfatherpikhto/espressif/esp-idf/requirements.txt are satisfied. Added the following directories to PATH: /home/grandfatherpikhto/espressif/esp-idf/components/esptool_py/esptool /home/grandfatherpikhto/espressif/esp-idf/components/espcoredump /home/grandfatherpikhto/espressif/esp-idf/components/partition_table /home/grandfatherpikhto/espressif/esp-idf/components/app_update /home/grandfatherpikhto/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin /home/grandfatherpikhto/.espressif/tools/xtensa-esp32s2-elf/esp-2021r1-8.4.0/xtensa-esp32s2-elf/bin /home/grandfatherpikhto/.espressif/tools/xtensa-esp32s3-elf/esp-2021r1-8.4.0/xtensa-esp32s3-elf/bin /home/grandfatherpikhto/.espressif/tools/riscv32-esp-elf/esp-2021r1-8.4.0/riscv32-esp-elf/bin /home/grandfatherpikhto/.espressif/tools/esp32ulp-elf/2.28.51-esp-20191205/esp32ulp-elf-binutils/bin /home/grandfatherpikhto/.espressif/tools/esp32s2ulp-elf/2.28.51-esp-20191205/esp32s2ulp-elf-binutils/bin /home/grandfatherpikhto/.espressif/tools/openocd-esp32/v0.10.0-esp32-20210721/openocd-esp32/bin /home/grandfatherpikhto/.espressif/python_env/idf4.4_py3.8_env/bin /home/grandfatherpikhto/espressif/esp-idf/tools Done! You can now compile ESP-IDF projects. Go to the project directory and run:
В принципе, можно приступить к сборке и прошивке какого-нибудь проекта из каталога ~/espressif/esp-idf/examples, но сначала надо настроить udev — пакет управления устройствами для новых версий ядра Linux.
Ниже привожу «сборную солянку» файла 40-dfuse.rules из правил, которую удалось накопать на форуме Esp32 (https://www.esp32.com/). Думаю, в особых объяснениях этот файл не нуждается. Просто, коллекция idVendor и idProduct различных макетных плат Esp32. Обратите внимание, что расширение файла должно быть именно «rules». Иначе, udev не прочитает правила.
SUBSYSTEMS==»usb», ATTRS==»303a», ATTRS==»00??», GROUP=»plugdev», MODE=»0666″ SUBSYSTEMS==»usb», ATTRS==»0403″, ATTRS==»6015″, MODE=»0666″, ENV=»1″ SUBSYSTEMS==»usb», ATTRS==»0403″, ATTRS==»6010″, MODE=»0666″, ENV=»1″ SUBSYSTEMS==»usb», ATTRS==»10c4″, ATTRS==»ea60″, MODE=»0666″, ENV=»1″ SUBSYSTEMS==»usb», ATTRS==»067b», ATTRS==»2303″, MODE=»0666″, ENV=»1″
sudo su cp 40-dfuse.rules /etc/udev/rules.d/ systemctl restart udev.service udevadm control —reload-rules
Теперь, можно собрать и запустить какой-нибудь простой проект Esp32.
Не забудьте подключить макетную плату Esp32 к компьютеру. Если она уже была подключена, отключите и подключите снова. Иначе, правила udev не будут прочитаны для этого устройства.
У вашего покорного слуги наличествует макетная плата ESP32-WROOM. Попробуем собрать и прошить ~/espressif/esp-idf/examples/get-started/hello_world. Обратите внимание, что, в принципе надо указывать порт. Например, idf.py -p /dev/ttyUSB0 flash. Но, на самом деле, это не обязательно. idf.py попробует найти порт, к которому подключено устройство Esp32 и прошьёт первое обнаруженное.
Если всё получилось хорошо, увидим что-то вроде:
~/Programs/esp32/hello_world $ idf.py build
Executing action: all (aliases: build)
Running cmake in directory /home/denis/Programs/esp32/hello_world/build
Executing «cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DESP_PLATFORM=1 -DCCACHE_ENABLE=0 /home/denis/Programs/esp32/hello_world».
— IDF_TARGET not set, using default target: esp32
— Found Git: /usr/bin/git (found version «2.32.0»)
— The C compiler identification is GNU 8.4.0
— The CXX compiler identification is GNU 8.4.0
— The ASM compiler identification is GNU
— Found assembler: /home/denis/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
— Detecting C compiler ABI info
— Detecting C compiler ABI info — done
— Check for working C compiler: /home/denis/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc — skipped
— Detecting C compile features
— Detecting C compile features — done
— Detecting CXX compiler ABI info
— Detecting CXX compiler ABI info — done
— Check for working CXX compiler: /home/denis/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ — skipped
— Detecting CXX compile features
— Detecting CXX compile features — done
— Project is not inside a git repository, or git repository has no commits; will not use ‘git describe’ to determine PROJECT_VER.
— Building ESP-IDF components for target esp32
— Project sdkconfig file /home/denis/Programs/esp32/hello_world/sdkconfig
— Found PythonInterp: /home/denis/.espressif/python_env/idf4.4_py3.9_env/bin/python (found version «3.9.6»)
— Found Perl: /usr/bin/perl (found version «5.32.1»)
— App «hello-world» version: 1
— Adding linker script /home/denis/Programs/esp32/hello_world/build/esp-idf/esp_system/ld/memory.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_system/ld/esp32/sections.ld.in
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.api.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.libgcc.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-data.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.syscalls.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-funcs.ld
— Adding linker script /home/denis/espressif/esp-idf/components/esp_rom/esp32/ld/esp32.rom.newlib-time.ld
— Adding linker script /home/denis/espressif/esp-idf/components/soc/esp32/ld/esp32.peripherals.ld
— Components: app_trace app_update asio bootloader bootloader_support bt cbor cmock coap console cxx driver efuse esp-tls esp32 esp_adc_cal esp_common esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_ipc esp_lcd esp_local_ctrl esp_netif esp_phy esp_pm esp_ringbuf esp_rom esp_serial_slave_link esp_system esp_timer esp_websocket_client esp_wifi espcoredump esptool_py expat fatfs freemodbus freertos hal heap idf_test ieee802154 jsmn json libsodium log lwip main mbedtls mdns mqtt newlib nghttp nvs_flash openssl openthread partition_table perfmon protobuf-c protocomm pthread sdmmc soc spi_flash spiffs tcp_transport tcpip_adapter tinyusb ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa
— Component paths: /home/denis/espressif/esp-idf/components/app_trace /home/denis/espressif/esp-idf/components/app_update /home/denis/espressif/esp-idf/components/asio /home/denis/espressif/esp-idf/components/bootloader /home/denis/espressif/esp-idf/components/bootloader_support /home/denis/espressif/esp-idf/components/bt /home/denis/espressif/esp-idf/components/cbor /home/denis/espressif/esp-idf/components/cmock /home/denis/espressif/esp-idf/components/coap /home/denis/espressif/esp-idf/components/console /home/denis/espressif/esp-idf/components/cxx /home/denis/espressif/esp-idf/components/driver /home/denis/espressif/esp-idf/components/efuse /home/denis/espressif/esp-idf/components/esp-tls /home/denis/espressif/esp-idf/components/esp32 /home/denis/espressif/esp-idf/components/esp_adc_cal /home/denis/espressif/esp-idf/components/esp_common /home/denis/espressif/esp-idf/components/esp_eth /home/denis/espressif/esp-idf/components/esp_event /home/denis/espressif/esp-idf/components/esp_gdbstub /home/denis/espressif/esp-idf/components/esp_hid /home/denis/espressif/esp-idf/components/esp_http_client /home/denis/espressif/esp-idf/components/esp_http_server /home/denis/espressif/esp-idf/components/esp_https_ota /home/denis/espressif/esp-idf/components/esp_https_server /home/denis/espressif/esp-idf/components/esp_hw_support /home/denis/espressif/esp-idf/components/esp_ipc /home/denis/espressif/esp-idf/components/esp_lcd /home/denis/espressif/esp-idf/components/esp_local_ctrl /home/denis/espressif/esp-idf/components/esp_netif /home/denis/espressif/esp-idf/components/esp_phy /home/denis/espressif/esp-idf/components/esp_pm /home/denis/espressif/esp-idf/components/esp_ringbuf /home/denis/espressif/esp-idf/components/esp_rom /home/denis/espressif/esp-idf/components/esp_serial_slave_link /home/denis/espressif/esp-idf/components/esp_system /home/denis/espressif/esp-idf/components/esp_timer /home/denis/espressif/esp-idf/components/esp_websocket_client /home/denis/espressif/esp-idf/components/esp_wifi /home/denis/espressif/esp-idf/components/espcoredump /home/denis/espressif/esp-idf/components/esptool_py /home/denis/espressif/esp-idf/components/expat /home/denis/espressif/esp-idf/components/fatfs /home/denis/espressif/esp-idf/components/freemodbus /home/denis/espressif/esp-idf/components/freertos /home/denis/espressif/esp-idf/components/hal /home/denis/espressif/esp-idf/components/heap /home/denis/espressif/esp-idf/components/idf_test /home/denis/espressif/esp-idf/components/ieee802154 /home/denis/espressif/esp-idf/components/jsmn /home/denis/espressif/esp-idf/components/json /home/denis/espressif/esp-idf/components/libsodium /home/denis/espressif/esp-idf/components/log /home/denis/espressif/esp-idf/components/lwip /home/denis/Programs/esp32/hello_world/main /home/denis/espressif/esp-idf/components/mbedtls /home/denis/espressif/esp-idf/components/mdns /home/denis/espressif/esp-idf/components/mqtt /home/denis/espressif/esp-idf/components/newlib /home/denis/espressif/esp-idf/components/nghttp /home/denis/espressif/esp-idf/components/nvs_flash /home/denis/espressif/esp-idf/components/openssl /home/denis/espressif/esp-idf/components/openthread /home/denis/espressif/esp-idf/components/partition_table /home/denis/espressif/esp-idf/components/perfmon /home/denis/espressif/esp-idf/components/protobuf-c /home/denis/espressif/esp-idf/components/protocomm /home/denis/espressif/esp-idf/components/pthread /home/denis/espressif/esp-idf/components/sdmmc /home/denis/espressif/esp-idf/components/soc /home/denis/espressif/esp-idf/components/spi_flash /home/denis/espressif/esp-idf/components/spiffs /home/denis/espressif/esp-idf/components/tcp_transport /home/denis/espressif/esp-idf/components/tcpip_adapter /home/denis/espressif/esp-idf/components/tinyusb /home/denis/espressif/esp-idf/components/ulp /home/denis/espressif/esp-idf/components/unity /home/denis/espressif/esp-idf/components/usb /home/denis/espressif/esp-idf/components/vfs /home/denis/espressif/esp-idf/components/wear_levelling /home/denis/espressif/esp-idf/components/wifi_provisioning /home/denis/espressif/esp-idf/components/wpa_supplicant /home/denis/espressif/esp-idf/components/xtensa
— Build files have been written to: /home/denis/Programs/esp32/hello_world/build
Running ninja in directory /home/denis/Programs/esp32/hello_world/build
Executing «ninja all».
[8/994] Generating ../../partition_table/partition-table.bin
Partition table binary generated. Contents:
Источник: habr.com