1. เลือกโปรเจ็คที่เราต้องการโปรแกรมแบบ ota เช่น ota_blink โดยโปรเจ็คนี้มีการทำงานของโค้ดเป็นการสั่งให้ไฟกระพริบตามความถี่ที่เรากำหนดในโค้ด เมื่อกระพริบจนถึงเวลาที่กำหนดในโค้ดแล้วจะทำการ download โค้ดใหม่เข้ามาโปรแกรม
2. เข้ามายังไดเรกทอรี่โปรเจ็คที่เราต้องการโปรแกรม ใช้คำสั่ง make เพื่อสร้างไฟล์ .bin จากนั้นเข้าไปในไดเรกทอรี่ build แล้วใช้คำสั่ง python -m SimpleHTTPServer 8070 เพื่อรัน server ที่ localhost:8070
3. เข้ามายังไดเรกทอรี่ของโปรเจ็ค ota แล้วใช้คำสั่ง make menuconfig แล้วตั้งค่า ดังนี้
( ชื่อ Wifi ) WiFi SSID
( รหัส Wifi ) WiFi Password
( ip ของ server ที่เราจะดาวน์โหลดโค้ด ) HTTP Server IP
( port default คือ 8070 ) HTTP Server Port
( ชื่อไฟล์ .bin ที่เราต้องการโปรแกรม ) HTTP GET Filename
ให้ตั้งค่า Partition Table (Factory app, two OTA definitions) เพื่อใช้งานโปรแกรมแบบ ota แล้วตั้งค่า flash size ที่เท่ากับขนาด flash size ของบอร์ดด้วย
Build in Partition Talble
- Single factory app, no OTA
# Espressif ESP32 Partition Table # Name, Type, SubType, Offset, Size nvs, data, nvs, 0x9000, 0x6000 phy_init, data, phy, 0xf000, 0x1000 factory, app, factory, 0x10000, 1Mเป็นการโปรแกรมแบบทั่วไปใช้สาย serial ตัวโปรแกรมจะอยู่ใน factory app แล้วทำการรันหลังจากโปรแกรม
- Factory app, two OTA definitions
# Espressif ESP32 Partition Table # Name, Type, SubType, Offset, Size nvs, data, nvs, 0x9000, 0x4000 otadata, data, ota, 0xd000, 0x2000 phy_init, data, phy, 0xf000, 0x1000 factory, 0, 0, 0x10000, 1M ota_0, 0, ota_0, , 1M ota_1, 0, ota_1, , 1Mโปรแกรมแบบ ota จะมีการแบ่ง partition ota_0 กับ ota_1 เริ่มต้นโปรแกรมผ่านสาย Serial จากนั้นเมื่อโปรแกรม ota ทำงานจะทำการดาวน์โหลดโค้ดแล้วนำมาใส่ใน ota_0 แล้วรันโปรแกรมใน ota_0 ด้วย ต่อมาเมื่อดาวน์โหลดโปรแกรมใหม่เข้ามาโค้ดจะถูกนำไปใส่ใน ota_1 และโปรแกรมก็เปลี่ยนไปรันที่ ota_1 ทำงานสลับ partition เมื่อมีการดาวน์โหลดโปรแกรมใหม่เข้ามา
factory app จะไม่รันเมื่อมีโปรแกรมใน ota_0, ota_1
ota จะไม่ update factory app
- Custom partition table CSV
ใช้ไฟล์ csv ในการกำหนด partition
phy_init is for storing PHY initialisation data
nvs (2) is for the Non-Volatile Storage (NVS) API. ใช้เก็บข้อมูล WiFi หรือเป็น Storage data ได้แนะนำว่าต้องการอย่างน้อย 0x3000 bytes
4. เมื่อตั้งค่าใน menuconfig เสร็จแล้วให้ใช้คำสั่ง make erase_flash flash เพื่อทำการ clear flash ก่อนแล้วค่อยทำการ flash โปรแกรมเข้าไป เมื่อ flash เสร็จแล้วใช้คำสั่ง flash monitor ได้เพื่อดูพอร์ต Serail ของโปรแกรม
ROMเต็มทำยังไงดีครับ
ตอบลบ