Hướng dẫn nạp file .bin vào ESP32 bằng Flash Download Tool

Hướng dẫn lấy đúng file và offset theo từng ESP32, nạp bằng Flash Download Tool, xử lý lỗi boot và xóa flash an toàn.

Bài viết này hướng dẫn lấy bộ file firmware do Arduino IDE tạo ra và nạp vào ESP32 bằng Espressif Flash Download Tool. Phần quan trọng nhất là chọn đúng chip, đúng cấu hình flash và đúng offset của chính lần biên dịch; không nên sao chép cố định địa chỉ từ một dự án khác.

1. Chuẩn bị

  • Bo ESP32 và cáp USB truyền dữ liệu ổn định.
  • Driver USB-UART đúng với chip trên bo, ví dụ CP210x hoặc CH340.
  • Arduino IDE đã cài gói bo ESP32 và chọn đúng model bo, flash size, partition scheme.
  • Flash Download Tool chính thức của Espressif.

2. Xuất đúng bộ file firmware

  1. Mở sketch trong Arduino IDE và chọn đúng mục Tools > Board, flash size và partition scheme.
  2. Dùng Sketch > Export Compiled Binary, hoặc bật verbose upload để xem chính xác lệnh nạp và các offset.
  3. Mở thư mục chứa kết quả build. Tên file thay đổi theo phiên bản Arduino core và cấu hình dự án.
Thư mục build chứa các file firmware ESP32
Ví dụ thư mục build chứa các file firmware.

Một bộ firmware có thể gồm:

  • bootloader.bin: bộ nạp khởi động.
  • partitions.bin: bảng phân vùng đã chọn khi biên dịch.
  • boot_app0.bin: dữ liệu hỗ trợ khởi động ứng dụng, xuất hiện với một số cấu hình.
  • tên-sketch.bin: chương trình chính.
  • tên-sketch.merged.bin: file hợp nhất do một số phiên bản Arduino-ESP32 tạo ra; offset nạp phải lấy từ build log, thường là 0x0.
  • flash_args hoặc dòng lệnh upload: nguồn để xác định file, offset và tham số flash.

Không phải cấu hình nào cũng tạo cùng số lượng file. Hãy lấy danh sách và địa chỉ từ đầu ra build/upload của chính dự án. Nếu dùng file merged.bin, không chọn đồng thời các file thành phần trong cùng lượt nạp. Ví dụ dưới đây là bố cục thường gặp của ESP32 classic và chỉ để nhận biết định dạng; bootloader offset thay đổi theo dòng chip/bo:

0x1000   bootloader.bin
0x8000   partitions.bin
0xe000   boot_app0.bin
0x10000  ten-sketch.bin

3. Cấu hình Flash Download Tool

  1. Mở công cụ, chọn đúng ChipType, đặt WorkMode = Develop và LoadMode = UART. Chế độ Factory dành cho quy trình sản xuất hoặc nạp nhiều thiết bị, không dùng trong hướng dẫn nạp một bo này.
  2. Thêm từng file .bin và nhập offset tương ứng lấy từ upload log hoặc flash_args.
  3. Đánh dấu các dòng cần nạp. Không tự ép SPI SPEED hoặc SPI MODE khác cấu hình build; từ Flash Download Tool 3.9.10, các mục này mặc định bị khóa và công cụ dùng cấu hình trong firmware. Bật DoNotChgBin nếu cần giữ nguyên binary; khi tắt, công cụ có thể điều chỉnh thông tin header theo giao diện.
  4. Chọn đúng cổng COM. Có thể bắt đầu ở 115200 baud nếu đường truyền không ổn định rồi tăng tốc sau.
Cửa sổ Flash Download Tool chọn file và offset ESP32
Nhập file và offset tương ứng trong Flash Download Tool.
Thiết lập ChipType, WorkMode và LoadMode trong Flash Download Tool
Kiểm tra loại chip, chế độ làm việc và tham số flash.

4. Đưa ESP32 vào chế độ nạp và bắt đầu

  1. Với bo tự động vào bootloader, bấm START và chờ kết nối.
  2. Nếu công cụ không đồng bộ được, giữ nút BOOT (GPIO0 ở mức thấp), nhấn rồi thả EN/RESET, sau đó thả BOOT khi quá trình bắt đầu.
  3. Chờ trạng thái hoàn tất, khởi động lại bo và kiểm tra log UART của ứng dụng.
Quá trình nạp firmware ESP32 hoàn tất
Thông báo hoàn tất quá trình nạp firmware.

5. Lỗi thường gặp

Lỗi thường gặp khi nạp firmware ESP32
Hiện tượng Cách kiểm tra
Không kết nối được Kiểm tra cáp, driver, cổng COM, quyền truy cập cổng và thao tác BOOT/EN.
Nạp xong nhưng không boot Đối chiếu lại loại chip, flash mode/size, partition scheme và toàn bộ offset.
Boot loop hoặc lỗi partition Dùng đúng partitions.bin và app.bin từ cùng một lần build; đọc log UART để xác định nguyên nhân.
Thiết bị mất dữ liệu cấu hình Kiểm tra thao tác ERASE. Xóa toàn bộ flash có thể xóa NVS, dữ liệu hiệu chuẩn và nội dung filesystem.

Không chọn ERASE theo thói quen. Chỉ xóa flash khi có lý do rõ ràng và đã sao lưu dữ liệu cần giữ. Nếu firmware dùng Secure Boot, Flash Encryption hoặc bảng phân vùng riêng, cần theo đúng quy trình phát hành của dự án.

6. Tài liệu và bài liên quan

Đối chiếu thêm tài liệu Flashing Firmware và Boot Mode Selection của Espressif. Sau khi nạp, bạn có thể thử điều khiển relay bằng ESP32 hoặc đọc load cell bằng HX711.


Tin tức liên quan

Dự án STEM cho trẻ mầm non theo chủ đề: cách xây dựng và 6 ý tưởng
Dự án STEM cho trẻ mầm non theo chủ đề: cách xây dựng và 6 ý tưởng

Cách xây dựng dự án STEM cho trẻ mầm non theo chủ đề với 5 bước hỏi, tưởng tượng, lên kế hoạch, làm thử, cải tiến; 6 ý tưởng giao thông, thực vật, nước, gia đình, động vật, Trung thu.

Biến trở, quang trở và nhiệt điện trở NTC: cách dùng và đọc bằng ESP32
Biến trở, quang trở và nhiệt điện trở NTC: cách dùng và đọc bằng ESP32

Cấu tạo và cách mắc biến trở, biến trở B10K và A10K, quang trở LDR, nhiệt điện trở NTC, PTC, phương trình B, thí nghiệm đọc biến trở, LDR, NTC bằng ADC của ESP32 và chỉnh độ sáng LED.

Cảm biến độ ẩm: điện dung, điện trở, ẩm kế khô ướt – cấu tạo, nguyên lý, chế tạo và điểm sương
Cảm biến độ ẩm: điện dung, điện trở, ẩm kế khô ướt – cấu tạo, nguyên lý, chế tạo và điểm sương

Cảm biến độ ẩm hoạt động thế nào: độ ẩm tương đối, tuyệt đối, điểm sương; cảm biến điện dung polyme, điện trở, ẩm kế tóc, khô ướt, gương lạnh; chế tạo và đọc SHT31 bằng ESP32.

Robot thoát mê cung trong Scratch: cảm biến màu, lệnh điều kiện và thuật toán bám tường
Robot thoát mê cung trong Scratch: cảm biến màu, lệnh điều kiện và thuật toán bám tường

Dự án Scratch robot thoát mê cung cho học sinh lớp 4–6: chấm cảm biến màu, vòng lặp đến khi, phép không, thuật toán bám tường phải, mô phỏng đường đi và trường hợp đi vòng mãi.

PSRAM trên ESP32 là gì: bo nào có, nhanh chậm ra sao, khi nào cần và cách cấp phát bộ nhớ
PSRAM trên ESP32 là gì: bo nào có, nhanh chậm ra sao, khi nào cần và cách cấp phát bộ nhớ

PSRAM là RAM ngoài chip của ESP32: module nào có, chậm hơn SRAM bao nhiêu, dữ liệu nào nên đặt vào PSRAM, ps_malloc và heap_caps_malloc, chương trình kiểm tra bộ nhớ trên mọi bo.

LittleFS trên ESP32: lưu file trong flash, ghi log CSV xoay vòng và phục vụ trang web qua Wi-Fi
LittleFS trên ESP32: lưu file trong flash, ghi log CSV xoay vòng và phục vụ trang web qua Wi-Fi

LittleFS nằm ở đâu trong flash ESP32, khác Preferences và thẻ nhớ thế nào, đọc ghi file, ghi log CSV xoay vòng để flash bền, phục vụ trang web và file log từ LittleFS.

Edge Impulse với ESP32: thu dữ liệu MPU6050, huấn luyện nhận dạng cử chỉ, xuất thư viện Arduino
Edge Impulse với ESP32: thu dữ liệu MPU6050, huấn luyện nhận dạng cử chỉ, xuất thư viện Arduino

Quy trình Edge Impulse với ESP32 và MPU6050: gửi dữ liệu gia tốc qua data forwarder, gắn nhãn, cửa sổ và đặc trưng phổ, đọc ma trận nhầm lẫn, xuất thư viện Arduino và chạy nhận dạng cử chỉ.

GRBL là gì: nạp GRBL cho Arduino, CNC shield, sơ đồ chân và nối động cơ
GRBL là gì: nạp GRBL cho Arduino, CNC shield, sơ đồ chân và nối động cơ

GRBL là firmware biến Arduino Uno, Nano thành bộ điều khiển máy CNC, laser: sơ đồ chân GRBL 1.1, CNC shield V3, năm bước nạp GRBL bằng Arduino IDE, kiểm tra và lỗi thường gặp.

Sản phẩm liên quan


Bình luận
Đã thêm vào giỏ hàng