<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          esp32 linux 下 環(huán)境配置 編譯與燒寫

          共 5269字,需瀏覽 11分鐘

           ·

          2021-08-28 17:41

          esp32 環(huán)境配置 編譯與燒寫

          本文針對(duì)esp32初學(xué)者進(jìn)行Linux 下的編譯環(huán)境配置的分享

          一 官方資料

          ESP-IDF 編程指南[1] 

                  在ESP-IDF 編程指南中可以選擇不同的版本對(duì)不同版本的查看與入門,環(huán)境搭建不同版本之間并無(wú)過(guò)多差別。無(wú)版本要求 建議使用master分支(lstest),是當(dāng)時(shí)最為穩(wěn)定的版本。

          二 環(huán)境配置

          第一步:安裝準(zhǔn)備

                  如果是首次使用Ubuntu,需要使用下列命令將 所需要工具升級(jí)到最新并查看版本

          sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
           python3 -V
          Python 3.8.10
          cat /proc/version
          Linux version 5.11.0-27-generic (buildd@lcy01-amd64-019) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 2.34) #29~20.04.1-Ubuntu SMP Wed Aug 11 15:58:17 UTC 2021

          ?根據(jù)手冊(cè)我們需要使用Python 3.6以上版本與ubuntu 20.04 ,所以建議保持一致。

          第二步 獲取 esp-idf

          使用下列命令將esp-idf及其子模塊克隆下來(lái)。

          git clone --recursive https://github.com/espressif/esp-idf.git

          如果克隆速度慢可使用github加速插件;

          使用下面命令進(jìn)行克隆速度極快


          git clone --recursive https://github.com.cnpmjs.org/espressif/esp-idf.git

          第三步 配置 esp-idf編譯工具

          3.1使用腳本下載相應(yīng)的編譯工具工具鏈 進(jìn)入esp-idf 運(yùn)行 install.sh 與 export.sh

          export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
          ./install.sh esp32

          根據(jù)上圖提示. ./export.sh 表示 已經(jīng)下載完畢,如果中途有中斷 繼續(xù)運(yùn)行./install.sh esp32 即可 直至出現(xiàn)提示。

          (注意,命令開(kāi)始的“.”與export.sh腳本之間,有一個(gè)空格)

          然后我們運(yùn)行 以下命令

          .  ./export.sh

          查看path

          /home/rsd/workspace/esp32test/esp-idf/components/esptool_py/esptool:/home/rsd/workspace/esp32test/esp-idf/components/espcoredump:/home/rsd/workspace/esp32test/esp-idf/components/partition_table:/home/rsd/workspace/esp32test/esp-idf/components/app_update:/home/rsd/.espressif/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin:/home/rsd/.espressif/tools/esp32ulp-elf/2.28.51-esp-20191205/esp32ulp-elf-binutils/bin:/home/rsd/.espressif/tools/openocd-esp32/v0.10.0-esp32-20210721/openocd-esp32/bin:/home/rsd/.espressif/python_env/idf4.4_py3.8_env/bin:/home/rsd/workspace/esp32test/esp-idf/tools:/home/rsd/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin


          • 到這里臨時(shí)的環(huán)境變量已經(jīng)配置完畢。

          三 hello world

          cp examples/get-started/hello_world/ ../ -a
          cd ..
          ls
          cd hello_world/
          ls

          ?我們通過(guò)上面的命令就可以看到hello_world 的 工程

          在hello_world下運(yùn)行

          idf.py all

          看到我們多了一個(gè)build 目錄 并且里面有一個(gè)最耀眼的hello-world.elf 這就是hello固件

          將開(kāi)發(fā)板的IO0與end相連 拉低IO0 在使用下列命令開(kāi)始下載

          idf.py flash -p /dev/ttyUSB0

          查看運(yùn)行情況

           idf.py monitor -p /dev/ttyUSB0

          四 自定義環(huán)境配置

          首先我們要明白為什么我們還要自定義環(huán)境配置

          ?就個(gè)人而言 使用麻煩

            我們會(huì)發(fā)現(xiàn)上述的環(huán)境配置后今天可以使用,明天就無(wú)法運(yùn)行了;上午還能用,一頓飯后下午就不能使用了,必須重新運(yùn)行 export.sh才可以,相當(dāng)麻煩。

          ?就項(xiàng)目版本管理而言 版本管理不完善,缺少編譯工具的管理。

              我們會(huì)發(fā)現(xiàn),項(xiàng)目的編譯工具在哪里,我們不知道,當(dāng)我們的計(jì)算機(jī)出現(xiàn)問(wèn)題,虛擬機(jī)無(wú)法運(yùn)行時(shí),豈不是丟失了環(huán)境。應(yīng)該將環(huán)境納入版本管理中。

          ?就團(tuán)隊(duì)而言,不利于團(tuán)隊(duì)開(kāi)發(fā)

            團(tuán)隊(duì)中每個(gè)人都需要配置一遍環(huán)境,當(dāng)環(huán)境配置混亂時(shí)豈不是災(zāi)難。


          環(huán)境配置 細(xì)心的讀者會(huì)發(fā)現(xiàn) 環(huán)境被隱藏在.espressif里

          ?dist?idf-env.json? python_env? tools

          我們可以使用腳本進(jìn)行環(huán)境管理與聲明 使用下列命令在hello_world 下 創(chuàng)建 shell腳本 go.sh。

          vim  go.sh
          esp_idf="/home/rsd/workspace/esp32project/esp-idf" #esp-idf的位置
          esp_tools="/home/rsd/.espressif" #環(huán)境的位置,后期可以使用cp命令 移動(dòng)到你想要的位置,便于工程管理
          export PATH="${esp_idf}/components/esptool_py/esptool:$PATH"
          export PATH="${esp_idf}/components/espcoredump:$PATH"
          export PATH="${esp_idf}/components/partition_table:$PATH"
          export PATH="${esp_idf}/components/app_update:$PATH"
          export PATH="${esp_idf}/tools:$PATH"


          export PATH="${esp_tools}/tools/xtensa-esp32-elf/esp-2021r1-8.4.0/xtensa-esp32-elf/bin:$PATH"
          export PATH="${esp_tools}/tools/esp32ulp-elf/2.28.51-esp-20191205/esp32ulp-elf-binutils/bin:$PATH"
          export PATH="${esp_tools}/tools/openocd-esp32/v0.10.0-esp32-20210721/openocd-esp32/bin:$PATH"
          export PATH="${esp_tools}/python_env/idf4.4_py3.8_env/bin:$PATH"

          export IDF_PATH=/home/rsd/workspace/esp32project/esp-idf #makefile需要的變量
          #make all
          echo -e "*******************************************************************************\n $PATH \n *******************************************************************************"
          if [ "$1" = "build" ]; then

          echo -e " \n idf.py build \n"
          #make all
          idf.py build

          elif [ "$1" = "flash" ]; then

          echo -e "\n idf.py flash\n"
          #make flash
          idf.py flash -p /dev/ttyUSB0
          elif [ "$1" = "clean" ]; then

          echo -e "\n idf.py clean\n"
          #make clean
          idf.py clean

          elif [ "$1" = "monitor" ]; then
          echo "make monitor"
          make monitor

          elif [ "$1" = "menuconfig" ]; then
          echo -e "\n idf.py menuconfig\n"
          #make menuconfig
          idf.py menuconig
          elif [ "$1" = "erase_flash" ]; then
          echo "idf.py erase_flash"
          idf.py erase_flash

          else

          echo "idf.py clean"
          #make clean
          #make all
          idf.py clean
          echo "idf.py bulid"
          idf.py build


          fi

          修改shell文件的權(quán)就可以使用了。

          sudo chmod 777 go.sh

          從編寫的可以看出 1-2行是定義的位置變量 方便后面的修改;

          緊接著就是環(huán)境配置,此環(huán)境只在 運(yùn)行g(shù)o.sh 有效 ,方便使用;
          后面就是makefile需要的一個(gè)變量


          export IDF_PATH=/home/rsd/workspace/esp32project/esp-idf

          因?yàn)榫幾g鏈接時(shí)依靠工程下的makefile文件。有興趣的讀者可以了自行了解一下

          再后面就是if -else 通過(guò)運(yùn)行參數(shù)決定編譯還是下載等等。

          使用方法 

          編譯:./go.sh build 清除 : ./go.sh clean 

          下載:./go.sh flash 監(jiān)視器:./go.sh monitor 

          注意 在下載與調(diào)用監(jiān)視器時(shí)如果不是root用戶 需要將 /dev/ttyUSB0 修改權(quán)限

          sudo chmod 777  /dev/ttyUSB0

          ?當(dāng)我們將./espressif里的 idf-env.json python_env tools 移動(dòng)到 工程文件下,再使用git進(jìn)行版本管理,團(tuán)隊(duì)其他人就可以不需要配置環(huán)境 ,只需要修改esp_tools="/home/rsd/.espressif"就可以 。真正實(shí)現(xiàn)了環(huán)境與虛擬機(jī)分離。個(gè)人的環(huán)境也非常方便 不因?yàn)槠渌?xiàng)目的環(huán)境沖突。

          五 參考

          https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html#get-started-set-up-env

          六 聲明

          個(gè)人的水平有限,僅供參考或舉一反三 ,如有錯(cuò)誤或其他敬請(qǐng)諒解。

          References

          [1] ESP-IDF 編程指南: https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html


          瀏覽 233
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  男女做爱视频网站 | 国产一区二区性爱视频 | 日韩精品无码系列视频 | 一区二区三区在线看 | 18禁网站在线 |