ECO and Workarounds for Bugs in ESP32

Similar documents
ECO and Workarounds for Bugs in ESP32

Jump Test of ESP8266 s Secondary Bootloader (V1.6+)

Smart Plug User Guide

ESP8266 Application Note Firmware Download Protocol

Manufacturing Instruction

ESP32 Technical Reference Manual. Espressif Systems

ESP8266 Flash RW Operation

DISTRIBUTED BY TEXIM EUROPE. ESP32-DevKitC Getting Started Guide

ESP-WROVER-KIT Getting Started Guide

Geolocating with ESP8266

ESP32 BT&BLE Dual-mode Bluetooth. Version 1.0 Copyright 2018

ESP8266 AT Command Examples

ESP-NOW User Guide Version 1.0 Copyright 2016

ESP-01 WiFi Module Version1.0

ESP32. Frequently Asked Questions. Version 1.1 Espressif Systems Copyright

Ai-Thinker. ESP-12S Datasheet. Version V0. Copyright 2018 ESP-12S WIFI MODULE V0. Shenzhen Ai-Thinker Technology Co., Ltd All Rights Reserved

Ai-Thinker. ESP-01F Datasheet. Version V1 Copyright Copyright 2018 Shenzhen Ai-Thinker Technology Co., Ltd All Rights Reserved

ST10F271B/E, ST10F272B/E Errata sheet

ESP32 Technical Reference Manual. Espressif Systems

ESP8266 FOTA Guide Version 1.7 Copyright 2016

ESP8266 Quick Start Guide

ESP8266 Quick Start Guide

ESP8266 AT Command Examples

AVR42789: Writing to Flash on the New tinyavr Platform Using Assembly

Simple-Pair User Guide

ESP8266 SSL User Manual

APPLICATION NOTE. AT11008: Migration from ATxmega16D4/32D4 Revision E to Revision I. Atmel AVR XMEGA. Introduction. Features

Clear CMOS after Hardware Configuration Changes

ESP8266 AT Command Examples

ERRATA SHEET INTEGRATED CIRCUITS. Date: 2008 June 2 Document Release: Version 1.6 Device Affected: LPC2468. NXP Semiconductors

5 VOLT FlashFile MEMORY 28F004S5, 28F008S5, 28F016S5 (x8) SPECIFICATION UPDATE

3 VOLT FlashFile MEMORY 28F004S3, 28F008S3, 28F016S3 SPECIFICATION UPDATE. Release Date: February, Order Number:

ES_LPC2468. Errata sheet LPC2468. Document information

AT09381: SAM D - Debugging Watchdog Timer Reset. Introduction. SMART ARM-based Microcontrollers APPLICATION NOTE

Interconnects, Memory, GPIO

ED1021 I/O Expander with UART interface & analog inputs

CHANGING THE MODES OF MOD-WIFI-ESP8266-DEV

SBAT90USB162 Atmel. SBAT90USB162 Development Board User s Manual

AN2825 Application Note

Power Consumption and Measurement of i.mx RT1020

3 Volt Intel StrataFlash Memory to Motorola MC68060 CPU Design Guide

BIOS Update Release Notes

AND9407/D Low Power Techniques of LC Series for Audio Applications

ESP-WROOM-S2 Datasheet

RapidIO TM Interconnect Specification Part 7: System and Device Inter-operability Specification

APPLICATION NOTE. Atmel AT03782: Using Low Power Modes in SAM4N Microcontroller. Atmel 32-bit Microcontroller. Features.

NXP AN11528 sensor Application note

Wafer Fab process Assembly Process Product Marking Design

Product Change Notification

Creating Power-Efficient Designs with the ArcticLink Solution Platform

MCF54451, MCF54452, MCF54453, MCF54454,

80C186XL/80C188XL EMBEDDED MICROPROCESSORS SPECIFICATION UPDATE

Hello, and welcome to this presentation of the STM32L4 power controller. The STM32L4 s power management functions and all power modes will also be

LBAT90USB162 Atmel. LBAT90USB162 Development Board User s Manual

AN4749 Application note

SiFive FE310-G000 Manual c SiFive, Inc.

Preliminary Information. AMD-8111 TM HyperTransport TM I/O Hub Revision Guide

BIOS Update Release Notes

Silicon Errata. Mixed Signal MCU MD6603 Silicon Errata

Architecture Specification

AN5123 Application note

AT60142H/HT. Rad-Hard 512Kx8 Very Low Power CMOS SRAM ERRATA-SHEET. Active Errata List. Errata History. Abbreviations. 1.

StrongARM** SA-110/21285 Evaluation Board

LAN bit Non-PCI Small Form Factor 10/100 Ethernet Controller with Variable Voltage I/O & HP Auto-MDIX Support PRODUCT FEATURES.

Desktop/Motherboard WHC Report

Product Technical Brief S3C2412 Rev 2.2, Apr. 2006

AVR1315: Accessing the XMEGA EEPROM. 8-bit Microcontrollers. Application Note. Features. 1 Introduction

Application Note 176. Interrupts on MPCore Development Boards. Released on: 28 March, Copyright 2006, All rights reserved.

Atmel AVR32847: Migration from/to the UC3L0 64/32/16 from/to the UC3L0 256/ bit Atmel Microcontrollers. Application Note.

Working around ERR7026 according to application needs

AVR134: Real Time Clock (RTC) Using the Asynchronous Timer. Features. Introduction. AVR 8-bit Microcontrollers APPLICATION NOTE

Intel Desktop Board DZ68DB

Errata details published in this document refer to the following silicon: netx100, Revision A (Step A, ROM Rev. 2, Boot loader major vers.

ERRATA FOR. TCG TPM I2C Interface Specification. Errata Version 1.0 April 6, Family 2.0 Level 00 Revision 1.

AN 547: Putting the MAX II CPLD in Hibernation Mode to Achieve Zero Standby Current

Application Note, V1.0, Aug AP08064 XC866/886/888. Safeguarding the Microcontroller under Out-of-Spec Noise Conditions.

EFM8 Universal Bee Family EFM8UB1 Errata

EDBG. Description. Programmers and Debuggers USER GUIDE

Intel Desktop Board DH61HO. MLP Report. Motherboard Logo Program (MLP) 09/20/2012

Intel G31/P31 Express Chipset

SAMA5D2 Quad SPI (QSPI) Performance. Introduction. SMART ARM-based Microprocessor APPLICATION NOTE

Intel 848P Chipset. Specification Update. Intel 82848P Memory Controller Hub (MCH) August 2003

ESP-WROOM-S2 Datasheet

Aptio 5.x Status Codes

Table 1 provides silicon errata information that relates to the masks 0M55B, 1M55B, and M55B of the MC9328MX21S (i.mx21s) applications processor.

AN2548 Application note

BIOS Update Release Notes

Enhanced Serial Peripheral Interface (espi)

3 Volt Intel StrataFlash Memory to i960 H CPU Design Guide

STLC2500D. Bluetooth V2.1 "Lisbon" + EDR. Features. Description

ATAES132A Firmware Development Library. Introduction. Features. Atmel CryptoAuthentication USER GUIDE

AVR42772: Data Logger Demo Application on XMEGA A1U Xplained Pro. Introduction. Features. AVR XMEGA Microcontrollers APPLICATION NOTE

AN5153 Application note

Arduino Uno R3 INTRODUCTION

Intel Platform Innovation Framework for EFI SMBus Host Controller Protocol Specification. Version 0.9 April 1, 2004

80C186 AND 80C188 EMBEDDED MICROPROCESSORS SPECIFICATION UPDATE

Technical Note Using Micron Asynchronous PSRAM with the NXP LPC2292 and LPC2294 Microcontrollers

mcube Proprietary APS v1.0 1 / mcube Inc. All rights reserved.

LPC-H1343 development board Users Manual

1-4 Figure 1-1 Am186ER Microcontroller Block Diagram. Arrow pointing from control register bus down to the 32-Kbyte RAM box.

Transcription:

ECO and Workarounds for Bugs in ESP32 Version 1.6 Copyright 2018

About This Guide This document details hardware errata and workarounds in the ESP32. Release Notes Date Version Release notes 2016-11 V1.0 Initial release. 2016-12 V1.1 Modified the MEMW command in Section 3.2. 2017-04 V1.2 Changed the description of Section 3.1; Added a bug in Section 3.8. 2017-06 V1.3 Added items 3.9 and 3.10 2018-02 V1.4 Corrected typos in the register names in Section 3.3. 2018-02 V1.5 Added Section 3.11. 2018-05 V1.6 Overall update. Documentation Change Notification Espressif provides email notifications to keep customers updated on changes to technical documentation. Please subscribe here. Certification Download certificates for Espressif products from here.

Table of Contents 1. Chip Revision... 1 2. Errata List... 2 3. Errata Descriptions and Workarounds... 3 3.1. A spurious watchdog reset occurs when ESP32 is powered up or wakes up from Deep-sleep....3 3.2. When the CPU accesses external SRAM through cache, under certain conditions read and write errors occur.... 3 3.3. When the CPU accesses peripherals and writes a single address repeatedly, some writes may be lost.... 4 3.4. The Brown-out Reset (BOR) function does not work. The system fails to boot up after BOR.. 5 3.5. The CPU crashes when the clock frequency switches directly from 240 MHz to 80/160 MHz... 5 3.6. GPIO pull-up and pull-down resistors for pads with both GPIO and RTC_GPIO functionality can only be controlled via RTC_GPIO registers.... 5 3.7. Audio PLL frequency range is limited.... 5 3.8. Due to the flash start-up time, a spurious watchdog reset occurs when ESP32 is powered up or wakes up from Deep-sleep.... 6 3.9. When the CPU accesses the external SRAM in a certain sequence, read & write errors can occur.... 6 3.10. When each CPU reads certain different address spaces simultaneously, a read error can occur.... 7 3.11. When certain RTC peripherals are powered on, the inputs of GPIO36 and GPIO39 will be pulled down for approximately 80 ns.... 8

! 1. Chip Revision 1. Chip Revision The chip revision is identified by the chip_version efuse field. Details can be found in the efuse Controller Chapter of the ESP32 Technical Reference Manual. Table 1-1. Chip Revision Chip revision Release date 0 2016-09 1 2017-02 Espressif! 1/6 2018.05

! 2. Errata List 2. Errata List Table 2-1. Errata Summary Section Title Affected revisions Section 3.1 Section 3.2 Section 3.3 Section 3.4 Section 3.5 Section 3.6 A spurious watchdog reset occurs when ESP32 is powered up or wakes up from Deep-sleep. When the CPU accesses external SRAM through cache, under certain conditions read and write errors occur. When the CPU accesses peripherals and writes a single address repeatedly, some writes may be lost. The Brown-out Reset (BOR) function does not work. The system fails to boot up after BOR. The CPU crashes when the clock frequency switches directly from 240 MHz to 80/160 MHz. GPIO pull-up and pull-down resistors for pads with both GPIO and RTC_GPIO functionality can only be controlled via RTC_GPIO registers. 0 0 0 0 0 0/1 Section 3.7 Audio PLL frequency range is limited. 0 Section 3.8 Section 3.9 Section 3.10 Section 3.11 Due to the flash start-up time, a spurious watchdog reset occurs when ESP32 is powered up or wakes up from Deep-sleep. When the CPU accesses external SRAM in a certain sequence, read and write errors can occur. When each CPU reads certain different address spaces simultaneously, a read error can occur. When certain RTC peripherals are powered on, the inputs of GPIO36 and GPIO39 will be pulled down for approximately 80 ns. 0/1 1 0/1 0/1 Espressif! 2/!

! 3. Errata Descriptions and Workarounds 3. Errata Descriptions and Workarounds 3.1. A spurious watchdog reset occurs when ESP32 is powered up or wakes up from Deep-sleep. When waking from Deep-sleep, this bug is worked around automatically in ESP-IDF V1.0 and newer. During initial power-up the spurious watchdog reset cannot be worked around, but ESP32 will boot normally after this reset. Workaround To work around the watchdog reset when waking from Deep-sleep, the CPU can execute a program from RTC fast memory. This program must clear the illegal access flag in the cache MMU as follows: 1. Set the PRO_CACHE_MMU_IA_CLR bit in DPORT_PRO_CACHE_CTRL1_REG to 1. 2. Clear this bit. Fixes: This issue is fixed in silicon revision 1. 3.2. When the CPU accesses external SRAM through cache, under certain conditions read and write errors occur. Access to external SRAM through cache will cause read and write errors if these operations are pipelined together by the CPU. There is no automatic workaround available in software. Workaround If accessing external SRAM from a revision 0 ESP32, users must ensure that access is always oneway only a write or a read can be in progress at a single time in the CPU pipeline. The MEMW instruction can be used: insert asm ("MEMW") after any read from external PSRAM that may be followed by a write to PSRAM before the CPU pipeline is flushed. Fixes: This issue is fixed in silicon revision 1. Espressif! 3/!

3. Errata Descriptions and Workarounds! 3.3. When the CPU accesses peripherals and writes a single address repeatedly, some writes may be lost. Some ESP32 peripherals are mapped to two internal memory buses (AHB & DPORT). When written via DPORT, consecutive writes to the same address may be lost. This issue is automatically worked around in the drivers of ESP-IDF V1.0 and newer. Workaround When writing the same register address (i.e., FIFO-like addresses) in sequential instructions, use the equivalent AHB address not the DPORT address. (For other kinds of register writes, using DPORT registers will give better write performance.) Registers DPORT Address AHB (Safe) Addresses UART_FIFO_REG 0x3ff40000 0x60000000 UART1_FIFO_REG 0x3ff50000 0x60010000 UART2_FIFO_REG 0x3ff6E000 0x6002E000 I2S0_FIFO_RD_REG 0x3ff4F004 0x6000F004 I2S1_FIFO_RD_REG 0x3ff6D004 0x6002D004 GPIO_OUT_REG 0x3ff44004 0x60004004 GPIO_OUT_W1TC_REG 0x3ff4400c 0x6000400c GPIO_OUT1_REG 0x3ff44010 0x60004010 GPIO_OUT1_W1TS_REG 0x3ff44014 0x60004014 GPIO_OUT1_W1TC_REG 0x3ff44018 0x60004018 GPIO_ENABLE_REG 0x3ff44020 0x60004020 GPIO_ENABLE_W1TS_REG 0x3ff44024 0x60004024 GPIO_ENABLE_W1TC_REG 0x3ff44028 0x60004028 GPIO_ENABLE1_REG 0x3ff4402c 0x6000402c GPIO_ENABLE1_W1TS_REG 0x3ff44030 0x60004030 GPIO_ENABLE1_W1TC_REG 0x3ff44034 0x60004034 Fixes: This issue is fixed in silicon revision 1. Espressif! 4/!

3. Errata Descriptions and Workarounds! 3.4. The Brown-out Reset (BOR) function does not work. The system fails to boot up after BOR. There is no workaround for this issue. Fixes: This issue is fixed in silicon revision 1. 3.5. The CPU crashes when the clock frequency switches directly from 240 MHz to 80/160 MHz. This issue is automatically worked around in ESP-IDF V2.1 and newer. Workaround When switching frequencies, use intermediate frequencies as follows: (1) 2 MHz <-> 40 MHz <-> 80 MHz <-> 160 MHz (2) 2 MHz <->40 MHz <->240 MHz Fixes: This issue is fixed in silicon revision 1. 3.6. GPIO pull-up and pull-down resistors for pads with both GPIO and RTC_GPIO functionality can only be controlled via RTC_GPIO registers. For these pads, the GPIO pull-up and pull-down configuration register fields are nonfunctional. This issue is automatically worked around when using GPIO drivers in ESP-IDF V2.1 or newer. Workaround Use RTC_GPIO registers for both GPIO and RTC_GPIO functions. 3.7. Audio PLL frequency range is limited. When configuring the Audio PLL, configuration registers sdm0 & sdm1 are not used. This limits the range and precision of PLL frequencies which can be configured. For chip revision 0, the Audio PLL frequency is calculated in hardware as follows: Espressif! 5/!

!! 3. Errata Descriptions and Workarounds! f out = f xtal (sdm2+4) 2(odiv+2) For chip revision 1 onwards this bug is fixed and the Audio PLL frequency is calculated in hardware as follows: f out = f xtal (sdm2+ sdm1 sdm0 + + 4) 2 8 2 16 2(odiv+2) The particular hardware frequency calculation is automatically accounted for when setting Audio PLL frequency via the I2S driver in ESP-IDF V3.0 and newer. However, the range and precision of available Audio PLL frequencies is still limited when using silicon revision 0. Fixes: This issue is fixed in silicon revision 1. 3.8. Due to the flash start-up time, a spurious watchdog reset occurs when ESP32 is powered up or wakes up from Deepsleep. If the ESP32 reads from the flash chip before it is ready, invalid data can cause booting to fail until a Watchdog Timer reset occurs. This can occur on power-on and on wake from Deep-sleep, if the ESP32 VDD_SDIO is used to power the flash chip. 1. Replace the flash chip with one with a fast start-up time (<800 μs from power-on to ready to read). This works around the issue for both power-on and wake from Deepsleep. 2. When waking from Deep-sleep, this issue is automatically worked around in ESP-IDF V2.0 and newer (the delay to wait can be configured if necessary). In this workaround, the CPU executes from RTC fast memory immediately after waking and a delay is added before continuing to read the program from flash. 3.9. When the CPU accesses the external SRAM in a certain sequence, read & write errors can occur. This error can occur when the CPU executes the following instructions to access external SRAM: store.x at0, as0, n Espressif! 6/!

3. Errata Descriptions and Workarounds! load.y at1, as1, m In the pseudo-assembly instructions above, store.x represents an x-bit write operation, while load.y represents a y-bit read operation. as0+n and as1+m represent the same address in external SRAM. The instructions can be sequential or contained within the same pipeline (less than four intermediate instructions, and no pipeline flushes.) When x>=y, the data write may be lost. (NOTE: when both the load and the store refer to 32-bit values, the write is only lost if an interrupt occurs between the first and second instructions.) When x <y, data writes may be lost and invalid data may be read. This bug is automatically worked around when external SRAM use is enabled in ESP-IDF V3.0 and newer. Workaround When x>=y, insert four nop instructions between store.x and load.y. When x <y, insert a memw instruction between store.x and load.y. 3.10. When each CPU reads certain different address spaces simultaneously, a read error can occur. Running in dual-core CPU mode, when one CPU bus reads address space A (0x3FF4_0000 ~ 0x3FF7_FFFF), while the other CPU bus reads address space B (0x3FF0_0000 ~ 0x3FF1_EFFF), an incorrect read can be generated on the CPU reading address space A. This issue is automatically worked around in ESP-IDF V3.0 and newer. Workaround Either of the following workarounds can be used: When either CPU reads address space A, prevent the other CPU bus from reading address space B via locks and interrupts. Before reading address space A, disable interrupts and insert a read from address space B on the same CPU (read a non-fifo register, e.g., 0x3ff40078). Espressif! 7/!

3. Errata Descriptions and Workarounds! 3.11. When certain RTC peripherals are powered on, the inputs of GPIO36 and GPIO39 will be pulled down for approximately 80 ns. Powering on the following RTC peripherals will trigger this issue: SARADC1 SARADC2 AMP HALL When enabling power for any of these peripherals, ignore input from GPIO36 and GPIO39. Espressif! 8/!

Espressif IoT Team www.espressif.com Disclaimer and Copyright Notice Information in this document, including URL references, is subject to change without notice. THIS DOCUMENT IS PROVIDED AS IS WITH NO WARRANTIES WHATSOEVER, INCLUDING ANY WARRANTY OF MERCHANTABILITY, NON-INFRINGEMENT, FITNESS FOR ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY PROPOSAL, SPECIFICATION OR SAMPLE. All liability, including liability for infringement of any proprietary rights, relating to use of information in this document is disclaimed. No licenses express or implied, by estoppel or otherwise, to any intellectual property rights are granted herein. The Wi-Fi Alliance Member logo is a trademark of the Wi-Fi Alliance. The Bluetooth logo is a registered trademark of Bluetooth SIG. All trade names, trademarks and registered trademarks mentioned in this document are property of their respective owners, and are hereby acknowledged. Copyright 2018 Espressif Inc. All rights reserved.