日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

toolchain安装教程支持_树莓派安装ESP8266_SDK开发环境

發布時間:2024/9/19 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 toolchain安装教程支持_树莓派安装ESP8266_SDK开发环境 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

陳拓 chentuo@ms.xab.ac.cn 2020/02/19-2020/03/31

1. 概述

ESP8266的開發工具是在linux系統下運行的,樹莓派的官方操作系統是Linux系統。如果你手頭剛好有一塊樹莓派,就可以用它進行ESP8266的開發。下面我們在樹莓派3B+上安裝ESP8266的開發環境。所用的樹莓派安裝官方操作系統版本是:
2019-09-26-raspbian-buster-lite.img。樹莓派的存儲用16G的TF卡。

電腦通過Putty連接樹莓派,看看樹莓派操作系統系統版本:

有關putty的使用,見參考文檔《電腦連接樹莓派3B+》,看到第3節,網線訪問樹莓派3B+就可以了,不用WiFi連接,網線連接可靠性好。

1.1 ESP8266開發工具的分類

在官方文檔《ESP8266 SDK入門指南》中有關于開ESP8266發工具的分類。

https://www.espressif.com/sites/default/files/documentation/2a-esp8266-sdk_getting_started_guide_cn.pdf

樂鑫SDK官方開發工具下載網址:

https://www.espressif.com/en/support/download/sdks-demos

我們編譯的工具鏈esp-open-sdk默認情況下安裝ESP8266_NONOS_SDK-2.1.0,安裝完成后我們將安裝最新版本的ESP8266_NONOS_SDK-3.0.x。如果你有需要也可以再安裝ESP8266_RTOS_SDK。多個SDK可以同時存在。

1.2 官方關于ESP8266_NONOS_SDK的說明

https://github.com/espressif/ESP8266_NONOS_SDK

README.md

1.3 其他說明

  • 為什么不安裝ESP-IDF

樂鑫最新的開發環境是ESP-IDF (Espressif IoT Development Framework)

見樂鑫的官方文檔:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html

但是在樹莓派上安裝ESP-IDF,編譯時會出現錯誤:

Error: selected processor does not support 'mls r1,r4,r8,r11' in ARM mode

所選擇的處理器在ARM模式中不支持'mls r1,r4,r8,r11'

這是樹莓派操作系統本身的問題,可以看看下面鏈接的一篇文章:

http://silicone.homelinux.org/2017/03/05/raspberry-pi-3-as-desktop-computer/

  • 下載安裝問題

由于網絡問題,工具鏈和相關依賴包的下載非常困難,常規安裝很難完成。因此我們將更換apt的源,并且將github上的一些倉庫克隆到gitee上,以加快下載速度。你也可以通過代理下載。

  • 電腦配置要求

我用的電腦操作系統是32位版的win7,這應該是目前電腦的最低配置了。

2. 更新apt源

  • 更新apt 源:sudo apt-get update

樹莓派的官網連接問題,常用的解決方法就是換源。

  • 更換apt源

需要修改的地方有兩處:

/etc/apt/sources.list

/etc/apt/sources.list.d/raspi.list

查看系統版本:lsb_release -a

  • 修改 /etc/apt/sources.list

下面我們要經常使用Linux的命令行文本編輯器nano,如果不熟悉先上網學學。

sudo nano /etc/apt/sources.list

在下面的語句前面加#注釋掉這行:

#deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

據說阿里源比較快,我們就用阿里源:
deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi

  • 修改/etc/apt/sources.list.d/raspi.list

sudo nano /etc/apt/sources.list.d/raspi.list

在下面的語句前面加#注釋掉這行:

#deb http://archive.raspberrypi.org/debian/ buster main

在這里可以添加阿里的源:

deb http://mirrors.aliyun.com/archive.raspberrypi.org/debian/ buster main ui

但經過測試,阿里源同步的不及時,所以我這里用科大源

deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ buster main ui

  • 更新apt 源

sudo apt-get update

完成。

3. 編譯工具鏈xtensa-lx106-elf

因為ESP8266功能太弱,不足以支持開發工作,所以需要在其他平臺上進行開發?,F在我們就要在樹莓派上將ESP8266的程序代碼編譯鏈接成ESP8266可執行的文件,再將編譯好的文件燒寫到ESP8266上運行,這個過程就是交叉編譯,交叉編譯所需的軟件工具叫做工具鏈toolchain。

我們需要的工具鏈是一個lx106編譯器,可以為各種以lx106為內核的器件開發程序,也包括ESP8266。

因為樹莓派資源也有限,還有前面說過的樹莓派操作系統本身的問題,我們沒有采用樂鑫最新的編程架構ESP-IDF。而使用較老的ESP8266開發工具esp-open-sdk為樹莓派編譯一個工具鏈xtensa-lx106-elf。

安裝編譯工具鏈的說明見:https://gitee.com/chentuo2000/esp-open-sdk/README.md

3.1 安裝依賴項

  • 安裝gcc g++庫

sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf

flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial

sed git unzip bash help2man wget bzip2

……

  • 安裝libtool-bin

sudo apt-get install libtool-bin

3.2 克隆下載esp-open-sdk源碼

  • 創建并進入下載安裝工具鏈目錄

用putty登錄樹莓派

mkdir -p ~/esp/

cd ~/esp/

  • 在碼云gitee上克隆esp-open-sdk

可以用git clone命令直接從github上克隆esp-open-sdk:

git clone --recursive https://github.com/pfalcon/esp-open-sdk.git

由于網絡原因,下載速度很慢。

我們先在碼云gitee上克隆一個esp-open-sdk。

再從碼云上克隆esp-open-sdk到本地,這樣會快很多。

esp-open-sdk還有幾個子模塊也需要一并克隆到碼云上。

看看子模塊在哪里:

在esp-open-sdk倉庫頁面打開文件.gitmodules

其中有4個子模塊的下載地址,用這4個下載地址在gitee上克隆它們。

修改url:

這樣在在克隆esp-open-sdk的時候帶上參數—recursive,子模塊也就一并克隆了。

因為要用git克隆下載esp-open-sdk,所以先安裝git。

  • 安裝git

sudo apt-get install git

測試git --version

關于Git的使用可以看《樹莓派使用Git》https://blog.csdn.net/chentuo2000/article/details/104834522

  • 從碼云克隆esp-open-sdk

git clone --recursive https://gitee.com/chentuo2000/esp-open-sdk.git

查看ls –l

3.3 編譯esp-open-sdk

  • 先在gitee上克隆ESP8266_NONOS_SDK

從https://github.com/espressif/ESP8266_NONOS_SDK克隆ESP8266_NONOS_SDK到gitee

  • 編輯Makefile文件

cd esp-open-sdk/

cp Makefile Makefile.bak

nano Makefile

就是兩處http://github.com/espressif修改成http://gitee.com/chentuo2000。

  • 編譯選項

README.md文件中有關于make命令的說明,我們用默認編譯命令make。

  • 編譯

make

錯誤信息:error: could not find bash >= 3.1

  • 修改configure.ac

要求bash的版本 >= 3.1,查看當前的bash版本bash --version

5.0.3 > 3.1,滿足條件。

解決方法(https://github.com/pfalcon/esp-open-sdk/issues/365):

修改/home/pi/esp/esp-open-sdk/crosstool-NG/configure.ac

nano /home/pi/esp/esp-open-sdk/crosstool-NG/configure.ac

找到行|$EGREP '^GNU bash, version (3.[1-9]|4)')

改成:|$EGREP '^GNU bash, version ([0-9.]+)')

保存,退出。

  • 繼續編譯make

出現錯誤:

查看日志cat ./crosstool-NG/build.log

看日志中的這一句:

Not at this location: https://ftp.gnu.org/gnu/gmp/gmp-6.0.0a

  • 手工下載gcc的依賴庫gmp-6.0.0a

先看看GMP的官網https://gmplib.org。

查看gmp的全部版本

https://gmplib.org/download/gmp/

在列表中找到gmp-6.0.0a.tar.xz

右擊gmp-6.0.0a.tar.xz復制鏈接地址,下載:

wget https://gmplib.org/download/gmp/gmp-6.0.0a.tar.xz

下載完成:

如果下載中斷,可以多試幾次,或者找它的鏡像網站,或者通過代理。

看看錯誤信息,找出下載的資源包放在什么目錄中。

Build failed in step 'Retrieving needed toolchain components' tarballs'

查找tarballs(源壓縮文檔)目錄的位置find . -name "tarballs"

所有下載的資源包都放在這里。

將gmp-6.0.0a.tar.xz復制到./crosstool-NG/.build/tarballs目錄中:

cp gmp-6.0.0a.tar.xz ./crosstool-NG/.build/tarballs

  • 繼續編譯make

你會遇到11個要下載的資源包,仿照上面的方法都下載下來放在./crosstool-NG/.build/tarballs目錄中。

列表看看ls -l ./crosstool-NG/.build/tarballs

現在一切都準備好了,正式開始編譯,大約2個小時。

繼續make

完成編譯!

編譯成功后會在esp-open-sdk文件夾出現xtensa-lx106-elf、esptool和 ESP8266_NONOS_SDK三個文件夾,分別是編譯器、燒錄工具和ESP8266的非操作系統開發工具NONOS_SDK。

SDK的目錄名字ESP8266_NONOS_SDK-2.1.0-18-g61248df太長了,用起來很麻煩,所以你看到有一個軟鏈接sdk代替了那個很長的名字。

3.4 使用工具鏈

完成工具鏈構建后,帶有Xtensa HAL庫的工具鏈,也就是交叉編譯器位于

/home/pi/esp/esp-open-sdk/xtensa-lx106-elf

子目錄中。

將xtensa-lx106-elf/bin/子目錄添加到PATH 環境變量以運行xtensa-lx106-elf-gcc和其他工具。在構建過程結束時,crosstool-NG將根據你的環境給出正確的PATH設置命令。上圖中工具鏈構建結束時提示,我的環境變量這樣設置:

export PATH=/home/pi/esp/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

這個命令每次開機都要重新設置,很麻煩,下面我們將環境變量寫到.bashrc中,這樣每次開機時環境變量就自動設置了。

  • 設置環境變量

回到家目錄,就是我們登錄的目錄

cd ~

查看當前環境變量echo $PATH

看看有沒有文件.bashrc

編輯這個文件nano .bashrc

export PATH=/home/pi/esp/esp-open-sdk/xtensa-lx106-elf/bin:$PATH

添加到最后一行。

重新啟動樹莓派sudo reboot,重新登錄樹莓派,再查看環境變量echo $PATH

工具鏈的路徑已經在里面了。

  • 運行xtensa-lx106-elf-gcc -v來驗證安裝

OK!

3.5 升級SDK

上面的安裝過程中安裝的SDK版本是ESP8266_NONOS_SDK-2.1.0-18-g61248df,

現在我們安裝最新的ESP8266_NONOS_SDK。

  • 克隆ESP8266_NONOS_SDK

cd ~/esp

git clone https://gitee.com/chentuo2000/ESP8266_NONOS_SDK.git

  • 看安裝位置:

  • 安裝tree命令,查看目錄樹(可以在任何目錄位置安裝)
  • wget http://mama.indstate.edu/users/ice/tree/src/tree-1.7.0.tgz
  • tar zxvf tree-1.7.0.tgz
  • cd tree-1.7.0
  • make
  • make install
  • 查看目錄結構tree -L 1
  • 4. 樹莓派串口連接ESP8266

    我們用ESP8266-01模塊為例與樹莓派串口進行連接。

    4.1 樹莓派串口硬件設置

    樹莓派的串口需要設置才能使用。

    看看默認情況下設備文件和串口的映射關系:ls -l /dev

    我們需要的映射關系是這樣的:

    有關串口的設置請看文章《樹莓派串口的使用》https://blog.csdn.net/chentuo2000/article/details/104711494

    設置好的串口對應的引腳是Pin8(TXD, GPIO14)和Pin10(RXD, GPIO15)。

    4.2 串口工具軟件Minicom的安裝和使用

    樂鑫官方文檔建議使用Minicom作為串口調試工具。

    • 安裝串口工具Minicom

    sudo apt-get install minicom

    查看版本:

    • 執行以下命令在minicom中對串口進行配置

    sudo minicom -s

    在彈出的菜單中選擇“Serial port setup”,將默認設置

    改成:

    回車:

    保存Save setup as df1,退出Exit from Minicom。

    常用命令:

    Ctrl+A W:當顯示的內容超過一行之后自動換行

    Ctrl+A X:退出minicom

    4.3 ESP8266-01參數

    4.4 樹莓派3B+和ESP8266-01的引腳圖

    4.5 ESP8266-01的引腳說明

    4.6 樹莓派3B+和ESP8266-1的連接

    • 正常運行程序時的連接

    用杜邦線按照表中的對應關系連接樹莓派和ESP8266-01。

    如果使用的是ESP8266-01S模塊CH-PD可以不接。

    兩者的外觀區別是:ESP8266-01S天線區域右下角只有一個指示燈,ESP8266-01天線區域右下角有兩個指示燈。另外ESP8266-01上有個LED在工作時一直亮著,這對于要求低功耗的場合很不利。

    在燒寫程序時模塊上的GPIO0需要接低電平(默認為高電平)。

    4.7 ESP8266-01 AT命令測試

    ESP8266-01模塊自帶AT命令支持,用minicom可以測試。

    • minicom

    • 插拔VCC重新啟動模塊

    • 樹莓派用minicom發送AT指令說明

    AT 指令是一行一行發送給設備的,每一行以 rn 結尾,而我們在電腦上敲的回車鍵通過putty傳到樹莓派上只有 n沒有 r。所以AT命令的結束不能用回車鍵,要用組合鍵Ctrl+M和Ctrl+J。

    對應關系:

    r - Ctrl+M

    n - Ctrl+J

    例如發送查看固件版本指令AT+GMR是這樣的:

    AT+GMR Ctrl+M Ctrl+J

    看測試是否正常,以檢測模塊的好壞,連線是否正確。

    5. 編譯一個項目

    樂鑫官方文檔:

    • ESP8266 SDK入門指南

    https://www.espressif.com/sites/default/files/documentation/2a-esp8266-sdk_getting_started_guide_cn.pdf

    • ESP8266 Non-OS SDK API參考

    https://www.espressif.com/sites/default/files/documentation/2c-esp8266_non_os_sdk_api_reference_cn.pdf

    5.1 官方編程規范

    5.2 編譯第一個ESP8266程序

    • 查看ESP8266_NONOS_SDK目錄

    查看ESP8266_NONOS_SDK/examples子目錄

    在examples目錄中有一個esp_mqtt_proj子目錄,我們就從這里起步。

    • 復制目錄

    把esp_mqtt_proj目錄復制到和examples目錄平級,并改名為i_mqtt。

    cp -r ./examples/esp_mqtt_proj ./i_mqtt

    • 修改代碼

    進入i_mqtt目錄,nano user/user_main.c

    找到void user_init(void)函數,保留:

    uart_init(BIT_RATE_115200, BIT_RATE_115200);

    添加:

    os_printf("SDK version:%sn", system_get_sdk_version());

    其他語句都注釋掉。

    • 編譯

    運行gen_misc.h并回答5個問題:

    ./gen_misc.sh

    選擇5個參數

    編譯過程開始:

    編譯結果放在~/esp/ESP8266_NONOS_SDK/bin目錄中:

    cd ../bin/

    ls -l

    紅框中的4個文件要燒寫到ESP8266的Flash中。

    • 簡化編譯過程

    每次運行gen_misc.sh都要選擇輸入比較麻煩,可以根據上面的選擇輸入寫一個文件input.esp-01,其中記錄了上面的回答。

    nano esp01

    存盤退出,下次編譯用下面的輸入重定向自動輸入選項就可以了。

    ./gen_misc.sh < esp01

    6. 燒寫ESP8266 Flash

    要燒寫4個文件。先熟悉一下ESP8266 Flash的布局,再確定每個文件的燒寫地址。

    6.1 ESP8266 Flash布局

    6.2 ESP8266 FM(固件)

    ESP8266 HDK就是指ESP8266模塊,我們用ESP8266-01。

    ESP8266-01的flash 存儲器為8Mbit,也就是1MB。

    6.3 確定燒寫地址

    • 查固件地址表blank.bin位于0xfb00和0xfe000
    • 查固件地址表esp_init_data_default_v08.bin位于0xfc000
    • eagle.flash.bin位于0x00000
    • eagle.irom0text.bin位于0x10000

    注意,其中除了flash.bin和irom0text.bin每次都需要下載,blank.bin和esp_init_data_default_v08.bin只需要保證flash里面下載過就行了,對應版本的SDK只需要下載一次,并且要對照著上述地址下載。

    6.4 燒寫flash

    • 接線

    用1條杜邦線連接ESP8266-01的GPIO0和樹莓派引腳Pin6(GND)。

    • 燒寫flash的工具在這里

    /home/pi/esp/esp-open-sdk/esptool/esptool.py,在前面我們已經設置了工具鏈的環境變量,可以直接使用。

    • 查看串口設備

    確認前面設置的串口設備ls -l /dev

    serial0 -> ttyAMA0

    • 構造燒寫命令

    1) 第一次燒寫命令

    esptool.py --port /dev/ttyAMA0 write_flash 0x00000 eagle.flash.bin 0x10000 eagle.irom0text.bin 0xfb000 blank.bin 0xfc000 esp_init_data_default_v08.bin 0xfe000 blank.bin

    2) 之后的燒寫命令

    esptool.py --port /dev/ttyAMA0 write_flash 0x00000 eagle.flash.bin 0x10000 eagle.irom0text.bin

    • ESP8266 flash燒寫操作流程

    1) VCC斷電

    2) 連接GPIO0和GND

    3) VCC上電

    4) 執行上面準備好的燒寫命令

    5) VCC斷電

    6) 斷開GPIO0和GND

    7) 運行minicom

    注意:開多個putty窗口工作時,一定要燒寫完成后再運行minicom,否則串口被占著,燒寫會失敗!!!

    8) 上電運行程序

    OK!

    • 制作ESP8266-01燒寫轉接板

    燒寫過程挺麻煩的,如果經常燒寫可以做一個電路板簡化燒寫過程。其實在燒寫過程中GPIO0和GND的連線不用一直連著,在上電進入燒寫模式之后就可以拿掉了,燒寫完成后將RST拉低一下模塊就進入程序運行模式。這里有一張網上找的電路圖可以參考。

    在參考文檔《ESP8266-01 Programming Breakout Board》中有詳細的制作說明。

    • 擦除芯片命令

    如果模塊燒寫后運行異常,可以擦除芯片重新燒寫。通常直接燒寫就可以,不用擦除。

    esptool.py --port /dev/ttyAMA0 erase_flash

    6.5 程序調試方法

    官方給出的程序調試方法:

    7. 更多的例子

    在ESP8266-01S上面有一個藍色的LED接GPIO2引腳,我們下面用程序控制這個LED閃爍。

    注意:如果使用ESP8266-01需要自己在GPIO2引腳上外接一個LED。

    • 修改代碼nano user_main.c

    1) 添加2個變量

    static const int pin = 2;

    static volatile os_timer_t some_timer;

    2) 添加一個定時函數

    void some_timerfunc(void *arg)

    {

    //Do blinky stuff

    if (GPIO_REG_READ(GPIO_OUT_ADDRESS) & (1 << pin))

    {

    // set gpio low

    gpio_output_set(0, (1 << pin), 0, 0);

    }

    else

    {

    // set gpio high

    gpio_output_set((1 << pin), 0, 0, 0);

    }

    }

    3) 在函數void user_init(void)中添加

    // init gpio subsytem

    gpio_init();

    // configure UART TXD to be GPIO1, set as output

    PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0TXD_U, FUNC_GPIO1);

    gpio_output_set(0, 0, (1 << pin), 0);

    // setup timer (500ms, repeating)

    os_timer_setfn(&some_timer, (os_timer_func_t *)some_timerfunc, NULL);

    os_timer_arm(&some_timer, 500, 1);

    • 編譯./gen_misc.sh < esp01

    • 燒寫

    esptool.py --port /dev/ttyAMA0 write_flash 0x00000 eagle.flash.bin 0x10000 eagle.irom0text.bin

    • 運行燒寫完成后程序自動運行,可以看到led閃爍。

    參考文檔:

  • 電腦連接樹莓派3B+https://blog.csdn.net/chentuo2000/article/details/103332186
  • esp8266 SDK開發之環境搭建https://www.cnblogs.com/mmmmar/p/6370549.html
  • ESP8266 Community Forumhttps://www.esp8266.com/
  • Prebuilt Windows Toolchain for PowerPChttps://gnutoolchains.com/powerpc-eabi/
  • How to set up manually the GCC toolchain and SDKhttps://www.esp8266.com/wiki/doku.php?id=toolchain
  • esp8266-wikihttps://github.com/esp8266/esp8266-wiki/wiki
  • esp-linkhttps://github.com/jeelabs/esp-link
  • ESP8266_NONOS_SDK 3.0https://github.com/espressif/ESP8266_NONOS_SDK/releases/tag/v3.0
  • ESP8266https://fixme.ch/wiki/ESP8266
  • ESP8266-01 Programming Breakout Boardhttp://www.martyncurrey.com/esp8266-01-programming-breakout-board/
  • 樂鑫官方文檔https://www.espressif.com/zh-hans/support/download/documents
  • 樹莓派使用Githttps://blog.csdn.net/chentuo2000/article/details/104834522
  • 總結

    以上是生活随笔為你收集整理的toolchain安装教程支持_树莓派安装ESP8266_SDK开发环境的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。