В последняя статья Мы рассмотрели первоначальную настройку и работу модуля ESP-01 с базовой АТ-прошивкой.
Возможности этой прошивки довольно ограничены и использовать ее для некоторых повседневных задач достаточно сложно.
Как я писал в первой статье, для ESP8266 можно написать собственную прошивку с необходимым функционалом и тем самым сделать плату ESP-01 самодостаточным устройством.
Всех, кому это интересно, прошу взломать.
Как известно SoC ESP8266 построена на процессоре Xtensa LX106 от Tensilica, если кому интересно, то есть статья о конфигурируемых процессорах этой компании .
Espressif предоставляет полную документацию, а также компилятор и среду разработки для SoC ESP8266 только после подписания партнерского соглашения и не со всеми; на мое письмо они так и не ответили.
Немного погуглив, можно найти утекший в сеть официальный компилятор, среду разработки на базе Eclipse, массу документации и лицензию, но это не наш путь.
Мы будем использовать неофициальный компилятор на основе Crosstool-NG В этой статье я расскажу вам, как собрать компилятор для Ubuntu Linux, а также мы попробуем написать простую прошивку.
Я сосредоточусь на работе с компилятором для Windows, а также настройке среды Eclipse для написания прошивки для ESP8266. Часть 1. Сборка компилятора для Ubuntu Linux, настройка SDK, сборка стандартных примеров и прошивки.
Настройка среды сборки Для 32-битного Debian (Linux) мы делаем:
Для 64-битного Debian (Linux) мы делаем:apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev
apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-i386 python-serial libexpat-dev
Дальше: USER заменяется на логин текущего пользователя.
sudo mkdir /opt/Espressif
sudo chown USER:root /opt/Espressif
cd /opt/Espressif
git clone -b lx106 git://github.com/jcmvbkbc/crosstool-NG.git
cd crosstool-NG
.
/bootstrap && .
/configure --prefix=`pwd` && make && make install .
/ct-ng xtensa-lx106-elf .
/ct-ng build
PATH=$PWD/builds/xtensa-lx106-elf/bin:$PATH
После этого можно минут 40-50 посидеть и выпить кофе.
Если все пройдет без ошибок, то можно двигаться дальше.
Установка SDK cd /opt/Espressif
mkdir ESP8266_SDK
cd ESP8266_SDK
wget http://bbs.espressif.com/download/file.phpЭid=72 -O esp_iot_sdk_v0.9.3_14_11_21.zip
wget http://bbs.espressif.com/download/file.phpЭid=73 -O esp_iot_sdk_v0.9.3_14_11_21_patch1.zip
unzip esp_iot_sdk_v0.9.3_14_11_21.zip && rm esp_iot_sdk_v0.9.3_14_11_21.zip
rm esp_iot_sdk_v0.9.3/lib/libpp.a
unzip esp_iot_sdk_v0.9.3_14_11_21_patch1.zip && rm esp_iot_sdk_v0.9.3_14_11_21.zip
mv esp_iot_sdk_v0.9.3/* .
&& rm -r esp_iot_sdk_v0.9.3/
Добавление библиотек libc, libhal и заголовочных файлов в SDK cd /opt/Espressif/ESP8266_SDK
wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a
wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
tar -xvzf include.tgz && rm include.tgz
Установка инструмента создания изображений ESP
Инструмент ESP можно скомпилировать из исходников,
для Linux вы можете скачать Здесь
для Дебиан/Убунту Здесь
Скачайте готовый пакет для Ubuntu отсюда cd /opt/Espressif/
wget https://github.com/esp8266/esp8266-wiki/raw/master/deb/esptool_0.0.2-1_i386.deb
sudo dpkg -i esptool_0.0.2-1_i386.deb && rm esptool_0.0.2-1_i386.deb
Установка инструмента загрузки ESP cd /opt/Espressif
git clone https://github.com/themadinventor/esptool esptool-py
sudo ln -s $PWD/esptool-py/esptool.py crosstool-NG/builds/xtensa-lx106-elf/bin/
sudo ln -s $PWD/esptool-py/esptool.py /usr/sbin/
Пример сборки прошивки
Сначала откройте файл /opt/Espressif/ESP8266_SDK/include/osapi.h и закомментируйте строку #include «user_config.h».
Загрузите и соберите примеры блинки и Basic_example: cd /opt/Espressif/ESP8266_SDK/examples/
wget https://github.com/esp8266/source-code-examples/archive/master.zip && unzip master.zip && rm -r master.zip
mv source-code-examples-master/* .
&& rm -r source-code-examples-master
cd blinky
make
Если все действия были выполнены правильно, то сборка пройдет без ошибок и в каталоге прошивки появятся 2 файла прошивки 0x00000.bin и 0x40000.bin.
Скачайте и соберите пример базовой АТ-прошивки: cd /opt/Espressif/ESP8266_SDK/examples/
wget -O at_v0.19_14_10_30.zip http://bbs.espressif.com/download/file.phpЭid=13
unzip at_v0.19_14_10_30.zip && rm at_v0.19_14_10_30.zip
cd at_v0.19_on_SDKv0.9.2/
rm Makefile && cp .
/example.Makefile .
&& mv example.Makefile Makefile
Чтобы правильно собрать АТ прошивку, нужно отредактировать базовый Makefile в строке
LIBS = c gcc hal pp phy net80211 lwip wpa main
добавьте ссылку на библиотеку обновления, конечная строка будет выглядеть так
LIBS = c gcc hal pp phy net80211 lwip wpa update main
После этого прошивку можно скомпилировать командой make.
Соберем пример прошивки IoT: cd /opt/Espressif/ESP8266_SDK/examples/IoT_Demo/
rm Makefile && cp .
/example.Makefile .
&& mv example.Makefile Makefile
Так же, как и для АТ-прошивок, для корректной сборки IoT-прошивки нужно отредактировать базовый Makefile в строку
МОДУЛИ = пользователь-водитель
вам нужно добавить дополнительные модули, итоговая строка будет выглядеть так
МОДУЛИ = пользователь драйвера json обновление SSL lwip
и до линии
LIBS = c gcc hal pp phy net80211 lwip wpa main
добавьте ссылку на библиотеку json, результирующая строка будет выглядеть так
LIBS = c gcc hal pp phy net80211 lwip wpa main json
После этого прошивку можно скомпилировать командой make.
Для того чтобы прошить плату ESP-01 нужно использовать команду make flash.
Не забывайте, что для перехода в режим обновления прошивки нужно подать низкий уровень на GPIO0 и высокий уровень на CH_PD.
Чтобы понять, что делает make flash, вам следует открыть любой Makefile и найти строку flash:
после подстановки всех аргументов получаем команду прошивки SoC: esptool.py --port /dev/ttyUSB0 write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin
Формат файла прошивки, собственно, и как можно прочитать протокол обмена здесь по-русски или здесь на английском языки.
На этом мы завершаем рассмотрение сборки компилятора и SDK для Linux. Часть 2: Установка компилятора для Windows, настройка SDK, сборка стандартных примеров и прошивки.
Т.
к.
моя основная ОС, под которой я работаю 90% времени — это Windows, поэтому разработка в Linux меня особо не интересовала.
Ниже я расскажу, как установить и настроить компилятор и SDK на Windows, а также как настроить среду разработки Eclipse для комфортной разработки в ней прошивки.
Я не буду рассматривать процесс сборки компилятора для Windows, потому что.
Это достаточно сложная процедура, гораздо более сложная, чем сборка под Linux. Чтобы избавить вас от всех тонкостей и нюансов, я подготовил рабочий Espressif DevKit, в который входит компилятор, последняя версия SDK, стандартные примеры прошивок, а также мои собственные примеры прошивок.
Итак, начнем: 1. Скачать (148Мб) и устанавливаю мой комплект Espressif-ESP8266-DevKit-v2.2.1-x86.exe (актуальный на 15.11.2016) 2. Скачать и установите среду выполнения Java x86 или x64 (например: jre-8u111-windows-x64.exe для Windows x64) 3. Загрузите и установите Затмение Неон x86 или Затмение Неон x64 для разработки на C++.
Распакуйте архив в корень диска С.
4. Скачать и установите MinGW. Запустите mingw-get-setup.exe, в процессе установки выберите режим без GUI, то есть снимите галочку ".
также установить поддержку графического интерфейса пользователя".
5. Скачать набор моих скриптов для автоматизации установки дополнительных модулей для MinGW. (актуально на 15.10.2016) 6. Запускаем файл install-mingw-package.bat из моего комплекта.
Он скачает с моего сайта кешированные архивы пакетов для mingw, примерно 90 Мб, и установит основные модули для MinGW. Загрузка готового набора файлов пакета для MinGW гарантирует, что все они будут установлены; иногда серверы, на которых расположены пакеты MinGW, становятся недоступными и необходимые пакеты не устанавливаются, в связи с чем сборка прошивки может происходить со всякими ухищрениями.
7. Запустите Eclipse из каталога c:\eclipse\eclipse.exe. 8. В Eclipse выберите меню Файл -> Импорт -> Общие -> Существующий проект в рабочую область, в строке Выбрать корневой каталог выберите каталог C:\Espressif\examples\ESP8266 и импортируйте рабочие проекты.
Далее справа в Make Target выбираем нужный проект, например hello-world и запускаем all target для сборки,
при этом ход сборки должен отображаться в окне Консоли; если все сделано правильно, то это будет выглядеть примерно так: 17:00:00 **** Build of configuration Default for project hello-world ****
mingw32-make.exe -f C:/Espressif/examples/ESP8266/hello-world/Makefile all
CC driver/uart.c
CC user/user_main.c
AR build/app_app.a
LD build/app.out
FW firmware/0x00000.bin
FW firmware/0x40000.bin
17:00:04 Build Finished (took 3s.740ms)
Это означает, что прошивка для ESP8266 скомпилирована и расположена в каталоге C:\Espressif\examples\hello-world\firmware.
Чтобы прошить прошивку ESP8266, используйте цель flash после редактирования Makefile проекта, строка
ЭСППОРТ ?= COM2
, где после COM цифра 2 указывает номер COM-порта, к которому подключена плата с ESP8266. Видео, демонстрирующее подключение проектов в Eclipse, сборку и прошивку ESP8266. Видео, демонстрирующее, как создать новый проект в Eclipse.
Как уже говорилось выше, для перехода в режим обновления прошивки нужно подать низкий уровень на GPIO0 и высокий уровень на CH_PD, после чего либо передернуть подачу питания на плату, либо выполнить Reset, подав низкий уровень на EXT_RSTV ( он же СБРОС).
Постоянно выполнять эти действия очень неудобно.
Немного подумав, я изменил схему подключения платы ESP-01 к преобразователю USB-RS232, смысл изменений сводится к подключению вывода RTS преобразователя USB-RS232 к выводу EXT_RSTB ( также известный как RESET) платы ESP-01 и контакт DTR преобразователя USB-RS232 в контакт RS232-GPIO0 платы ESP-01. ВНИМАНИЕ! В моей текущей сборке Unofficial Development Kit для Espressif ESP8266 утилита esptool уже содержит эти улучшения, поэтому нет необходимости исправлять что-либо дополнительно.
Еще я поправил утилиту esptool.py в процедуре подключения Еще я подправил утилиту esptool.py в процедуре подключения, чтобы при запуске плата перезагружалась по сигналу RTS и входила в режим загрузчика по сигналу DTR. Изменения в esptool.py def connect(self):
Теги: #DIY или Сделай сам #ESP8266
-
Просто Обожаю Идею Партнерского Маркетинга!
19 Oct, 24 -
`Ваша Личная Волшебная Лампа"
19 Oct, 24 -
Iphone 3G — Новое Подтверждение Слухов
19 Oct, 24 -
Ликвидатор Велосипедов: Многоразовый Код
19 Oct, 24 -
Откуда Берутся Идеи?
19 Oct, 24 -
Во Вселенной Entropia Появились Ломбарды
19 Oct, 24