關於 esp-at 下 esp8266 的 AT 固件 編譯 燒寫 使用 的注意事項


esp-at 現在是合並了 esp32 和 esp8266 的全新倉庫, 注意 at 指令集核心部分並不開源。

查看芯片信息可以用 esptool 的 esptool -p /dev/ttyS5 flash_id ,可以看到芯片類型和 flash 大小。

esp-at 資源鏈接

編譯流程和方法

沒有考慮過給沒經驗的看,但怎么說呢,我盡量留存相關操作指令吧。

配置好 esp8266 的編譯工具鏈 setup-toolchain

  • 自行安裝 python 和 pip 工具。
  • git clone --recursive https://github.com/espressif/ESP8266_RTOS_SDK
  • export IDF_PATH=~/esp/ESP8266_RTOS_SDK
  • python -m pip install --user -r $IDF_PATH/requirements.txt
  • Toolchain 配置文檔 (Windows 就算了,最差也是用 WSL 的 ubuntu,配置要到位喔 )
  • sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-serial
  • tar -xzf ~/Downloads/xtensa-lx106-elf-linux64-1.22.0-92-g8facf4c-5.2.0.tar.gz
  • export PATH="$PATH:$HOME/xtensa-lx106-elf/bin"
  • 注意開放串口的權限 Permission issues /dev/ttyUSB0 ,如果你在用 WSL 的就是注意 COM5 對應 /dev/ttyS5 。

接着准備 esp-at 項目,注意看 ESP_AT_Get_Started.md#platform-esp8266 的內容。

export ESP_AT_PROJECT_PLATFORM ?= PLATFORM_ESP8266 
export ESP_AT_MODULE_NAME ?= WROOM-02
  • 在esp-at 目錄下執行 make menuconfig ,會幫你拉取 esp-idf (esp8266) 和自動檢查是否 git submodule update 子模塊項目。
  • 然后就是正常的 make 和 make flash 了,值得注意的是可以使用 make flash SILENCE=1 減少固件大小。

最后,當你編譯成功燒寫進去后,如果發現沒有輸入 AT 沒有返回 ok ,但有啟動信息,接着什么也沒有出現,則是 AT 交互口的設置問題。

因為默認的 AT 交互串口是用


# Hardware Introduction

The ESP8266 WROOM 02 Board sends AT commands through UART0 by default.

- GPIO13 is RXD
- GPIO15 is TXD
- GPIO1 is RTS
- GPIO3 is CTS

The debug log will output through UART1 by default, which TXD0 is GPIO2, but user can change it in menuconfig if needed.

- make menuconfig --> Component config --> ESP8266-specific --> UART for console output

如果按 readme 所述應該是可以在 make menuconfig 修改掉的,但實際上應該是不太行,我沒成功。

所以直接改代碼,搜索代碼 CONFIG_IDF_TARGET_ESP8266 修改成如下配置就輸出到燒寫的默認串口 0 上。

#define CONFIG_AT_UART_PORT_TX_PIN_DEFAULT          1
#define CONFIG_AT_UART_PORT_RX_PIN_DEFAULT          3
#define CONFIG_AT_UART_PORT_CTS_PIN_DEFAULT         13
#define CONFIG_AT_UART_PORT_RTS_PIN_DEFAULT         15
#ifndef CONFIG_AT_UART_PORT
#define CONFIG_AT_UART_PORT                         UART_NUM_0

其實就是單獨的修改引腳匹配一下而已。

特殊的用途和注意事項

如果你和我一樣使用的是 esp8285 ,實際上它屬於 esp8266 ex 版本,其 flash 只有 1M ,那么你需要修改分區表為 Partition Table (Single factory app, no OTA) 單例應用,但內置的一些存儲內容還在,如串口和 wifi 的一些信息會存儲在 nvs 中,這點看分區表可知。

關於默認的串口波特率修改,可以直接在 app_main.c 的底下末尾進行 at_custom_init(); 不過我是直接在最后 uart_set_baudrate(UART_NUM_0, 460800); 這意味着你直接就操作了 esp8266 ,與 AT 指令無關。

大概就這些內容了吧,如果有想知道的,可以留言蟹蟹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM