В прошлой статье я рассказал каким образом подготовить все необходимое, для того что бы компилировать свои прошивки. Сегодня мы поговорим о том, как залить прошивку на NodeMCU. Существует целых 3 способа :)
В первую очередь у вас должен быть установлен Python. Проще всего его установить с помощью HomeBrew.
brew install python3
После обратите внимание на чип, который использует NodeMCU, они могут быть как CH340 так и СP2102. В зависимости от этого вы должны найти и скачать драйвер. Вот ссылка на инсталяшку для CH34X. Без этого драйвера ваш Mac попросту не увидит подключенный через USB-порт модуль.
Команды ниже распечатают список COM-портов с заданным шаблоном.
ls /dev/tty.* ls /dev/cu.*
Если все установлено правильно и девайс подключен, то вы увидите COM-порт /dev/cu.SLAB_USBtoUART
1. Первый способ воспользоваться NodeMCU PyFlasher. По сути это просто GUI над основным esptool.py. Удобен тем, что можно быстро натыкать нужные параметры, указать COM-порт и путь к прошивке. Основные фичи на скриншоте :)
Нет возможности залить несколько.bin файлов по разным адресам.
2. Следующий вариант это использовать встроенные инструкции Makefile'ов из скаченных примеров Homekit. По сути, все что вам нужно это перейти в консоли в папку с прошивкой и выполнить следующие команды:
cd /Documents/Projects/ESP/MyESPProject make test
То есть, команда make выполнит компиляцию исходников (прошивки), сбилдит ее в.bin файлы, и после зальет на подключенную к Mac'у NodeMCU. Обратите внимание, что потенциально здесь могут возникнуть проблемы. Так как в Makefile нужно указать ваш COM-порт, к которому подключена NodeMCU. Ниже пример одного из моих Makefile'ов. В 12 строчке как раз и объявляется переменная ESPPORT, которая указывает на нужный COM-порт.
PROGRAM = HomeBulb EXTRA_COMPONENTS = \ extras/http-parser \ $(abspath../components/wolfssl) \ $(abspath../components/cJSON) \ $(abspath../components/homekit) FLASH_SIZE ?= 32 EXTRA_CFLAGS = -I../.. -DHOMEKIT_SHORT_APPLE_UUIDS ESPPORT=/dev/cu.SLAB_USBtoUART include $(SDK_PATH)/common.mk monitor: $(FILTEROUTPUT) --port /dev/cu.SLAB_USBtoUART --baud 115200 --elf $(PROGRAM_OUT)
3. Последний вариант это использовать инструменты esptool.py напрямую. Для начала вы можете ознакомиться со всеми доступными функциями и параметрами с помощью команды help. Там вы можете узнать какие параметры являются опциональными (необязательными).
esptool.py --help
esptool.py -chip esp8266 —port /dev/cu.SLAB_USBtoUART —baud 115200 —flash_mode qio 0x00000 —erase-all #Команда с полной путем к файлу esptool.py -chip esp8266 —port /dev/cu.SLAB_USBtoUART —baud 115200 —flash_mode qio 0x00000 /Users/andrewmedvedev/Documents/Projects/ESP/MotionSensor/firmware/MotionSensor.bin —erase-all
Что здесь происходит вообще?
-chip esp8266 указывает тип девайса, который шьется
-port /dev/cu.SLAB_USBtoUART COM-порт, к которому подключен ESP8266
-baud 115200 - скорость записи в битах в секунду
-flash_mode qio - указывает на способ записи на девайс
0x00000 - указывает адрес, с которого будет развернута наша прошивка на модуле и путь к ней на диске
-erase-all - выполняет изначальное форматирование данных, которые до этого находили в памяти.
*Если я где-то ошибся, отпишите, пожалуйста, в комментарии*
Еще один вариант прошивки, если у вас несколько файлов. Вы просто указываете адреса в памяти, на которых должны развернуться нужные прошивки.
Кстати, в примере выше путь к прошивке является абсолютным. По сути вы можете перейти в нужный каталог и не указывать полный путь.
cd /Users/andrewmedvedev/Documents/Projects/ESP/MotionSensor/firmware esptool.py -chip esp8266 —port /dev/cu.SLAB_USBtoUART —baud 115200 —flash_mode qio 0x00000 MotionSensor.bin 0x10000 AnotherBin.bin —erase-all
4. БОНУС – сборка с помощью Xcode
Для того что бы мы могли билдить прошивки с помощью Xcode нам нужно создать новый проект, с типом External Build System. Указать название проекта и Build Tool. По умолчанию он будет /usr/bin/make. Так и оставляем.
Следующий шаг это сконфигурировать Build Tool. Опционально вы можете указать необходимые аргументы вместо $(ACTION). И директорию с вашими исходниками, где лежит Makefile!
Следующий шаг – добавить дополнительные настройки сборки. Нам нужно добавить PATH и SDK_PATH. Про них я рассказывал в этой статье.
После этого просто прожимаем CMD B и переходим во вкладку Report Navigator (CMD 9). Там вы увидите все выполненные сборки и их лог. Их минусов, если вы пытаетесь проводить отладку, то логгер работает каким-то непонятным образом и вы не увидите актуальную информацию :(
Если у вас есть идеи как решить это проблему, то пишите в комментарии!
Всем спасибо за внимание!
Ты сегодня в ударе, отличное продолжение
Грех не поделиться такими наработками)
Программа из AppStore для прошивки ESP8266Flash чем плоха?
О, слушай, я даже не догадывался, что такой софт может быть в AppStore)) Спасибо!
С Sierra и выше CH340, у меня было как только подключаю к USB, сразу же был "синий экран смерти", мак перезагружался. Решение проблемы нашел на форуме амперки, там есть определенный топик про это.
у меня наоборот 340ой без лишних телодвижений с моей стороны завелся, хотя я не помню, чтобы когда-то прошивал с мака какие-то устройства.
а вот си-лабс только после установки дров заработал.
Ну вот кстати, когда мак обновляю, почему то эти драйвера слетают, и опять мак перезагружается с китайскими иероглифами. Поэтому не очень нравиться CH340. стараюсь силабс использовать.
Вот описание и решение проблемы: http://forum.amperka.ru/threads/%D0%94%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80-ch340-%D0%BD%D0%B0-macos-sierra.9282/page-2#post-88784">http://forum.amperka.ru/thread...
весьма забавно...
у меня после крайнего обновления осх по ощущениям еще и есптулс обновилась, тк при очередной прошивке пришлось прописывать размер 1МБ вместо 8м
работу устройства после прошивки можно командой screen "порт" проконтролировать ;)))
при условии, что при компиляции в самой прошивке поднят флаг логирования
Возможно ли повторить это на macOS Catalina?
Привет всем!
Не знаю, стоит ли задавать вопрос сюда, но пока больше не пойму, куда. Пытаюсь по данной статье прошить ESP32 на маке с Big Sur. Чип СP2102, дрова брал https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers">отсюда. Но Мак не видит порт после установки дров. :( Что делать, кто может подсказать?