ESP32 學習筆記(二十八) ESP32 串口下載過程(使用 esptool) [轉]

ESP32 串口下載過程-使用 esptool

ESP32 串口下載過程(使用 esptool)

原文鏈接:https://www.esp32.com/viewtopic.php?f=25&t=8161&p=34283#p34283

通常,我們會通過 python 腳本,從 PC 端,通過串口給 esp32 芯片或者模塊下載固件程序。
通過 esptool (https://github.com/espressif/esptool) 腳本,我們可以很方便的實現。

但有時,我們也希望能通過其他單片機的串口,給 esp32/esp8266 進行固件更新。(前提是外部單片機能夠控制esp32 進入串口下載模式)。
完整的串口通信協議可以參考這裏(https://github.com/espressif/esptool/w … -Protocol)
爲了方便調試,我們可以通過運行 esptool,來查看上位機與esp32之間的通信過程。

首先,esp32 的串口通信協議基於 SLIP (Serial Line Internet Protocol)。任何一個數據包以0xC0開始,以0xC0結尾。數據包內容中的0xC0替換爲0xDB 0xDC。數據包內容中的0xDB替換爲0xDB 0xDD.

在運行esptool的同時,在命令中添加 --trace 參數,即可查看通信過程中的串口數據。

以讀取 flash id 的過程爲例:

python esptool.py -b 115200 -p /dev/cu.SLAB_USBtoUART --trace --no-stub flash_id

從輸出的 log 中,我們可以看到串口通信的具體內容。

TRACE +0.000 command op=0x09 data len=16 wait_response=1 timeout=3.000 data=1c20006040000080ffffffff00000000
TRACE +0.000 Write 26 bytes: 
    c000091000000000 001c200060400000 | .......... .`@..
    80ffffffff000000 00c0             | ..........
TRACE +0.004 Read 1 bytes: c0
TRACE +0.000 Read 13 bytes: 01090400c840160000000000c0
TRACE +0.000 Received full packet: 01090400c840160000000000

上面的 log 中,串口向 esp32 發送 26 字節十六進制序列

c000091000000000001c20006040000080ffffffff00000000c0

esp32 向串口返回13字節十六進制序列

c001090400c840160000000000c0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章