ESP8266 кажется закирпичен, как восстановить?
В части скетча я по ошибке поставил
pinMode(7,INPUT_PULLUP);
Это выделенный контакт для внешней флэш-чипы (gpio7/SDIO_DATA_0/SPI_MISO), который не должен использоваться для скетча. после загрузки скетча теперь ESP не отвечает на дальнейшее программирование.
Возможно ли повреждение чипа флэш-памяти из-за вышеуказанных ошибок? Возможно ли восстановиться? Я уже замуровал два своих модуля одним и тем же скетчем, прежде чем обнаружил вышеописанную ошибку. Скетч, в котором нормально работает модуль без вышеуказанного кода.
При подключении к модулю со скоростью загрузки 74880 микросхема возвращается
8 января 2013 г., первая причина: 2, режим загрузки: (3,7)
пожалуйста, проверьте, что происходит, когда я пытаюсь загрузить код ошибка загрузки
@saif, 👍2
2 ответа
Нет, ваш скетч не может блокировать устройство таким образом. Именно загрузчик решает после сброса/включения питания, должен ли esp принять прошивку (нажата кнопка flash) или запустить загруженный скетч. В этот момент ничего из вашего скетча еще не было выполнено, и gpios имеет конфигурацию по умолчанию, которая в любом случае вводится.
Кроме того, при подтягивании к соответствующему контакту по-прежнему можно применить логический уровень. Тогда gpio не увидит никакого эффекта от подтягивания.
Нет, вы не заблокировали свой ESP8266, включив подтягивание GPIO7. Все, что нужно сделать, это обеспечить слабую подтяжку на линии MISO микросхемы флэш-памяти, которая сама по себе не будет иметь никакого эффекта — вывод данных SPI микросхемы флэш-памяти сможет легко переопределить эту слабую подтяжку.
Вы можете удалить флэш-чип и заменить его абсолютно чистым новым флэш-чипом, на котором ничего нет, и при этом загрузить новый код. В микросхеме флэш-памяти нет ничего, от чего мог бы зависеть работа ESP8266.
Последовательность загрузки ESP8266 следующая:
- Начать выполнение загрузчика из встроенного ПЗУ
- Считайте контакты GPIO, чтобы определить источник выполнения кода
- Если выбрана флэш-память, инициализируйте флэш-чип и читайте с адреса 0.
- Код на флэш-памяти проверяет таблицу разделов, чтобы найти точку входа кода
- Перейти к точке ввода кода
- Если выбран UART, инициализируйте UART.
- Дождитесь команд через UART и отреагируйте соответствующим образом
Код запуска (стадия загрузки 0) находится в ПЗУ. Это невозможно "кирпич". Все, что находится во флэш-памяти, — это код, который сообщает ESP8266, как найти код пользователя, и этот код записывается в чип каждый раз, когда вы его перепрограммируете.
Вы можете думать об этом как о загрузке BIOS на ПК. В ПЗУ находится BIOS, который сообщает процессору, как читать с жесткого диска. Затем в начале жесткого диска находится код, сообщающий центральному процессору, как загрузить операционную систему. На жестком диске нет этого кода — вы устанавливаете его вместе с операционной системой. Но на материнской плате есть BIOS, встроенный в ПЗУ, который сообщает ей, как начать работу и прочитать этот загрузочный сектор.
Однако можно разрушить ESP8266, неправильно подключив к нему не те компоненты. Также можно повредить некоторые USB-чипы (в частности, CH340G), неправильно подключив их.
Так что, скорее всего, если вы заблокировали свой ESP8266, это не имеет ничего общего с вашей программой, а связано с тем, что вы к нему подключили.
@sim son и Majenko Спасибо за ваши усилия по решению моей проблемы. Теперь для меня ясно, что если я не повредю сам чип, его можно будет восстановить, даже если что-то пойдет не так и повредит флэш-память. Вчера вечером в качестве еще одной попытки я перезагрузил свой компьютер, надеясь, что серийный драйвер или аппаратное обеспечение сделали что-то неисправное, теперь я могу снова прошить свои модули !! Я все еще озадачен и изучаю, в чем проблема на самом деле., @saif
- Больше не могу прошить ESP8266 (NodeMCU)
- Чтение содержимого ESP8266 Flash изнутри скетча
- Пытаюсь прошить ESP8266 с помощью Arduino UNO
- OTA-обновление ESP8266 с разными настройками размера флэш-памяти?
- Вспомогательный объект Flash String в качестве переменной
- ESP8266 завис в режиме прошивки?
- D1 mini esp8266 ошибка: esptool.FatalError: Не удалось подключиться к ESP8266: Истекло время ожидания заголовка пакета
- esp8266 проблема с ОТА
Из вашего первого абзаца ясно, что загрузчик будет определять статус вывода во время загрузки скетча. Но что происходит после того, как он был загружен и выполнен скетч, который, в свою очередь, манипулирует gpio управления флэш-памятью и повреждает загрузчик во флэш-памяти, как некоторая область памяти, записанная с «1» (например: 1111 1111). У меня нет другой подсказки, так как я замуровал свою вторую плату Lolin с тем же скетчем, прежде чем определить вышеуказанную ошибку (gpio7 в качестве входных данных)., @saif
@saif Загрузчик находится в ПЗУ, а не во флэш-памяти. Вы не можете испортить его. Именно этот загрузчик ПЗУ смотрит на контакты ввода-вывода и решает, откуда «загружаться» (один из вариантов — «Через UART для программирования»). Можно удалить флэш-чип и заменить его совершенно новым, полностью пустым, и при этом запрограммировать его. Должно быть что-то еще принципиально неправильное в том, что вы делаете., @Majenko