About

Work - Learn - Share

Lê Quang Thành : quangthanh010290@gmail.com | thanhlev@amazon.com.vn

Giới thiệu

ESP8266EX Block Diagram

ESP8266EX là một System On Chip (SoC) của hãng Espressif

CPU, Memory, and Flash

CPU

Bộ vi xử lý Tensilica L106 32-bit kiến trúc RISC được tích hợp bên trong MCU, bộ xử lý này có mức độ tiêu thụ điện cực thấp và đạt tốc độ xung nhịp tối đa 160 MHz

Khi sử dụng RTOS và WiFi stack thì chỉ chiếm 20% CPU resource, còn lại 80% cho chúng ta tự do phát triển ứng dụng.

CPU hỗ trợ các giao tiếp sau:

Memory

SoC ESP8266EX được tích hợp memory controller, static ram (SRAM) và ROM. MCU có thể truy cập SRAM và ROM thông qua iBus, AHB interface và dBus (này là bus phần cứng chứ không phải dBus nổi tiếng trên linux).

Tuy nhiên với SDK hiện tại, static RAM cấp cho user space được cấu hình như sau:

External flash

Hỗ trợ tối đa 16M theo lý thuyết. Khi lựa chip flash cho project của mình, cần lưu ý các yêu cầu tối thiểu như sau:

Espressif sử dụng bảng phân vùng (partition tables) để thiết lập thông tin và các vùng lưu trữ các loai dữ liệu khác nhau, chi tiết như sau.

Partition Tables

Overview

Name Type SubType Offset Size Flags
nvs data nvs 0x9000 16K none
otadata data ota 0xd000 8K none
phy_init data phy 0xf000 4K none
ota_0 app ota_0 0x10000 960K none
ota_1 app ota_1 0x110000 960K none

Built-in Partition tables

ESP8266 Non-OTA Partition Table

Name Type SubType Offset Size
nvs data nvs 0x9000 0x6000
phy_init data phy 0xf000 0x1000
factory app factory 0x10000 0xF0000

ESP8266 OTA Partition Table

Name Type SubType Offset Size
nvs data nvs 0x9000 0x4000
otadata data ota 0xd000 0x2000
phy_init data phy 0xf000 0x1000
ota_0 0 ota_0 0x10000 0xF0000
ota_1 0 ota_1 0x110000 0xF0000
Trường Type
Trường Sub Type
  • Là một giá trị 8 bit để chia nhỏ hơn cho Type. SDK hiện tại chỉ hỗ trợ cho Type app và type data
Các loại subtype của type app(0).
Các loại subtype của type data.
Trường Offset và Size.

Phân vùng app phải là bội số của 1M. Nếu không app sẽ crash. Địa chỉ bắt đầu của firmware được set cứng tại 0x10000. Nếu muốn thay đổi cần thực hiện trong menuconfig.

Tổng kết

Bài viết này giới thiệu tổ chức lưu trữ dữ liệu trên external flash và 2 partition table mặc định được dùng cho 2 loại firmware non-OTA và OTA.

Trong các bài viết tiếp theo mình sẽ giới thiệu các trường hơp sử dụng partition table này, cách build partition table và ghi vào bộ nhớ flash.

Chúng ta cũng có thể tạo custom partition table, ví dụ như tạo thêm partition có định dạng file system để dễ dàng lưu trữ các file giống như các ứng dụng trên các OS cao cấp.