Posts

Showing posts from February, 2021

Esp32 芯片 16MB Flash 的分区表问题

Image
前言 Esp32这块芯片真的好久都没有用了,原因是Flash真的太小了,Esp32最大支持Flash内存大小是16MB(因为设计的时候用的是24Bit的地址),某宝上常见的Esp8266常见的为4MB,16MB的ESP32卖的价格算起来还不如买个pi,4MB的Flash小到真的很操蛋。就比如你调用了几个依赖库,这4MB的大小很快就用完了。当然你也可以使用Web + OTA,但是方案会有个 很大的缺点 。 近期有人拿了一块esp32的衍生物给我做研究: LILYGO 家的 TTGO T-Display (Flash 16MB) 因为这个Esp32芯片的Flash有16MB,但 Arduino IDE 1.8.13 里 Tools 下的 Partition Scheme 还停留在4MB Flash的时代除非你选了ESP32 Dev Module,如果只选择TTGO T1的话,就算是16MB的Flash,经过了Arduino的IDE编译出来的程序Upload上去,用的还是4MB的分区表,至于剩下的12MB内存也就只能空在那里了。所以,回过头来还是没有真正的解决了问题。虽然Flash Size 已经选了 16MB(128Mb),但是分区表依然没有扩大。 可以看到都是4MB的分区大小。 使用esptool检查总共的Flash大小  有些某宝商家故意会误导你,会把 16Mb 的b写成的小写的b,然后拿出来卖,让你以为是真的是16MB。 为了避免这种尴尬的情况,所以开始之前要使用esptool来检查这块芯片到底有没有16MB的Flash。 可以先使用下 flash_id 和 chip_id 参数观察一下,如果不妙的话去可以去售后问下或者退款。 这里以ESP32 标准的4MB作为example: $ python -m esptool --port COM3 flash_id esptool.py v3.0 Serial port COM4 Connecting.... Detecting chip type... ESP32 Chip is ESP32-D0WDQ6 (revision 1) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None