Skip to content

Разработка на хосте

AlexGyver edited this page Sep 30, 2024 · 4 revisions

Взято отсюда

Отладка на хосте без прошивки контроллера

Начиная с версии 3.6.6 библиотеки, появилась возможность отлаживать скетчи на компьютере, без необходимости программирования платы. В настоящий момент поддерживается эмуляция контроллеров esp8266 c ограничениями на аппаратные функции. Более подробно как это работает https://github.com/esp8266/Arduino/blob/master/tests/host/README.txt.
Эмуляция работает только в Linux-окружении, для запуска введите в терминале ../../onhost из любого каталога примеров.

Для пользователей Windows возможно использовать:

  • Виртуальную систему (напр. VirtualBox)
  • Windows Subsystem for Linux (WSL v2)

После установки Linux-based системы необходимо:

  1. Установить нужные для сборки пакеты
sudo apt update && sudo apt install build-essential git && sudo apt install valgrind
  1. Cоздать папку для репозиториев (напр. папка repos на рабочем столе текущего пользователя)
mkdir /home/$USER/Desktop/repos && cd /home/$USER/Desktop/repos
  1. Клонировать нужные репозитории
git clone --recursive https://github.com/esp8266/Arduino.git && git clone --recursive https://github.com/GyverLibs/GyverPortal.git
  1. Установить переменную окружения ESP8266. Потребуется вводить каждый раз при открытии нового сеанса терминала, или добавить в файл ~/.profile пользователя.
export ESP8266=/home/$USER/Desktop/repos/Arduino
  1. Перейти в папку с отлаживаемым скетчем
cd /home/$USER/Desktop/repos/GyverPortal/examples/demos/demoAllComponents
  1. Запустить скрипт, который скомпилирует код и запустит web-server на http://localhost:9080/
../../onhost

Чтобы остановить работу скрипта нажать в терминале Ctrl+C.

Примечание

Скрипт при компиляции скетчей *.ino рассматривает их как обычные *.cpp -файлы, поэтому необходимо указывать объявления функций, расположенных вне области видимости текущего вызова.

Example
void action(); // function declaration

void setup() {
  action(); // call function
}

// function definition
void action() {
  // todo
}

Также можно узнать из кода, где он запущен:

#if CORE_MOCK
// this part is compiled on emulation environment only - not on hardware
#else
// this part is compiled on hardware only - not in the emulation environment
#endif
Clone this wiki locally