Linux系統下ESP32開發板搭建RT-Thread開發環境

2021-12-26 RTThread物聯網作業系統
王朝陽:杭州閃易科技嵌入式負責人,從事嵌入式Linux軟體、驅動開發、STM單片機開發、ESP32等開發。目前對Linux及嵌入式RTOS非常感興趣。



1. 搭建步驟

以下步驟是以Ubuntu 16.04 LTS 32bit 英文版中為例,其他Linux系統類似,但不排除有小細節不同(如包管理軟體為yum等)。

ESP32的下載需要使用USB串口工具,請確保自己的開板(ESP-DevkitC、NodeMCU-32S)集成有USB串口功能,或者使用USB轉串口工具,Linux中串口的描述符默認是/dev/ttyUSB0,如果你使用的串口不是/dev/ttyUSB0,燒寫時修改的路徑請自行修改。

以下示例中linux用戶的名稱為ss,請自行替換為自己linux的用戶名。此外,工程及編譯工具都放在用戶根目錄下,你可以根據自己實際情況設置到合適位置中。

在熊大如下的git項目版本中已經經過了測試,不排除最新版本有了完善:

commit a8504d523214ee872ae480106e31cd1db138b74f

Author: Bernard Xiong <bernard.xiong@gmail.com>

Date:   Fri Aug 25 15:29:362017 +0800


1.1. 下載交叉編譯工具

cd ~

wgethttps://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz


1.2. 解壓縮交叉編譯工具

tar -xzf xtensa-esp32-elf-linux32-1.22.0-61-gab8375a-5.2.0.tar.gz


1.3. 安裝必要的軟體

sudo apt-get install git wget make libncurses-devflex bison gperf python python-serial scons


1.4. 獲取代碼

cd ~

git clonehttps://github.com/BernardXiong/rtthread-esp-idf

 

cd rtthread-esp-idf

git submodule init

git submodule update

 

cd esp-idf-port/esp-idf

git submodule init

git submodule update

 

git apply ../0001-cpu_start-patch.patch

git apply ../0002-add-esp_task.h.patch

git apply ../0003-add-memset-to-0.patch

1.5. 修改工程中交叉編譯工具的路徑

修改~/rtthread-esp-idf/rtconfig.py中exec_path的路徑為:

EXEC_PATH   =r'/home/ss/xtensa-esp32-elf/bin'


1.6. 編譯

首先修改個Makefile中的一個小錯誤,python那行命令路徑需要修改:

pythonesp-idf-port/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32elf2image --flash_mode "dio" --flash_freq "40m"--flash_size "4MB"  -ortthread.bin rtthread-esp32.elf

然後進入項目根目錄進行編譯

cd ~/rtthread-esp-idf

make all

1.7. 下載

1) 由於Linux下普通用戶無權限直接操作/dev/ttyUSB0,首先給當前用戶加入相應的權限,以便後邊燒寫時不需要使用sudo權限:

sudo usermod -aG dialout ss

設置完成後註銷重新登錄一下當前用戶即可,之後不再需要執行該命令。

2) 修改~/rtthread-esp-idf/burn_flash.bat中串口的名字(/dev/ttyUSB0)為如下:

python esp-idf-port/esp-idf/components/esptool_py/esptool/esptool.py--chip esp32 --port /dev/ttyUSB0 --baud 115200 --before"default_reset" --after "hard_reset" write_flash -z--flash_mode "dio" --flash_freq "40m" --flash_size detect0x1000 bootloader.bin 0x10000 rtthread.bin 0x8000 partitions_singleapp.bin

3) 給burn_flash.bat設置好執行權限:

chmod a+xburn_flash.bat

4) 將開發板與電腦連接好(如果是虛擬機,需要將設置連入虛擬機),同時如果開發板不支持一鍵燒寫功能,一般需要通過按鍵使其進入燒寫模式(同時按下IO0和reset,然後先鬆開reset,再鬆開IO0);

5) 執行一下命令等待燒寫完成:

cd ~/rtthread-esp-idf

./burn_flash.bat

(波特率:115200)

2. 其他說明2.1. Linux64bit、Windows及macos的交叉編譯工具

具體見https://github.com/BernardXiong/rtthread-esp-idf,裡邊有其他系統交叉編譯工具的下載路徑。

註:windows下需要先安裝MSYS2等GNU-compatible環境軟體。


2.2. 目錄及文件說明

下圖為rttthread-esp-idf的目錄結構:

其中:

 application目錄為rtt應用程式的代碼,其中main.c中的app_main()為應用程式入口函數。你可以在這裡修改、編碼,來熟悉和調試rtt程序。

build目錄為編譯中間文件使用的目錄,編譯中的.o .d等都在這個目錄內。

componets目錄為rtt組件代碼保存的目錄,自己編寫的組件可以放在這裡。

doc為該項目一些使用、功能的介紹文檔。

drivers目錄為rtt用於移植驅動的相關代碼保存的目錄,已有的包括uart、gpio、i2c、psram等。

esp-idf-port目錄為esp-idf移植修改的代碼目錄,由於rtt on esp32是基於esp官方的esp-idf移植的,esp-idf的代碼及移植補丁等在這個目錄中。同時用於下載、打包鏡像等python工具包也在該目錄下。如果你需要更深入地使用ESP32(比如使用自定的分區結構、使用FlashEncryption等功能),可能需要在這個目錄配置修改。

rt-thread為rtt核心的內核及相關組件、驅動等代碼保存的目錄,如果你需要深入了解或調試rtt核心的功能,可以在本目錄中尋找、修改、調試。

鏡像文件或其輔助文件:

-bootloader.bin:esp32的Second stagebootloader

-partitions_singleapp.bin:esp32的分區表數據,目前rtt默認的是非ota的鏡像。

-rttthread-esp32.bin:rtt on esp32的目標代碼。

-esp32.common.ld、esp32_out.ld、rtthread-esp32.elf、rtthread-esp32.map:編譯鏡像的中間文件及腳本工具。

rtconfig.h、rtconfig_project:rtt的配置頭文件。

sdkconfig.h:esp-idf的配置文件

rtconfig.py、rtconfig.pyc:rtt編譯的python腳本。

burn_flash.bat:鏡像燒寫腳本。

Kconfig、Makefile、mkbin.bat、SConscript、SConstruct:項目編譯的各種腳本。

README.md:項目簡介。

- End - 


支持RT-Thread,請關注RT-Thread公眾號

添加微信13924608367 為好友,註明rt-thread,拉進RT-Thread Nano微信交流群,與RT-Thread官方團隊直接交流。

相關焦點

  • RT-Thread Smart上手指南~
    /s/1c2b64ba968748請根據自己的開發環境選擇對用的工具鏈下載使用。下載下來後分別解壓展開到`rt-smart/tools/gnu_gcc`目錄下,rt-smart目錄下的smart-env.bat/sh設置的環境變量,其中工具鏈路徑都指向到這個目錄下。在Linux系統下,需要安裝一些基本的環境,然後才能編譯rt-smart。本文檔是基於Ubuntu16.04系統環境操作,其它Linux版本類似。
  • RT-Thread Smart 上手指南
    相關的幾個主要目錄及說明如下圖所示:準備工具鏈針對Linux和Windows環境需要下載對應的arm-linux-musleabi工具鏈,如果是rt-smart的軟體包,則自帶Linux環境下的工具鏈。
  • STM32平臺RT-Thread最小系統移植搭建 - STM32F107VCT6
    最小系統移植最小系統的作用:萬事開頭難,入門後,方可自由發揮。熟悉環境搭建、引腳配置、供電邏輯、調試接線、調試工具使用、調試環境驗證等。移植好最小系統,才能更進一步研究RT-Thread的內核、組件、設備驅動等。知識體系的不健全,會讓學習嵌入式的道路變得很坎坷。
  • 如何使用 VSCode 開發 RT-Thread Smart 應用程式
    在rt-smart上也一直在思考如何簡化應用程式開發,最初的有RT-Thread Studio集成開發環境,基本上可以做到創建應用程式,編譯,調試的完整過程。但隨著rt-smart的往後延申、發展,因為它同時也提供了完整POSIX環境,可以把Linux的一些應用程式無縫地移植到rt-smart上,在編譯的時候更好的方式是在Linux下進行。這個時候只支持Windows的RT-Thread Studio就有些沒那麼很好的滿足要求了。
  • 【應用筆記】如何在windows及linux平臺使用RT-Thread QEMU BSP
    本文較長,如需要下載pdf文檔閱讀,請在後臺回覆:AN00061  本文的目的和結構1.1    本文的目的 和背景嵌入式軟體開發離不開開發板,在沒有物理開發板的情況下,可以使用QEMU等類似的虛擬機來模擬開發板。QEMU是一個支持跨平臺虛擬化的虛擬機,它可以虛擬很多開發板。
  • RT-Thread教程一之Linux下開發環境及QEMU配置
    RT-Thread原始碼Linux下安裝git後在工程目錄下(比~/Workplace)執行git clone https://github.com/RT-Thread/rt-thread 我們看一下樹目錄結構➜  rt-thread git:(master) ✗ tree . -L 1.
  • 《玩轉ART-Pi開發板》第2講 ART-Pi開發環境搭建 (Keil+env)
    /開發環境:RT-Thread版本:4.0.3作業系統:Windows10Keil版本:V5.30開發板MCU:STM32H750XB在電腦上裝好 git,軟體包管理功能需要 git 的支持。git 的下載地址為https://git-scm.com/downloads,根據嚮導正確安裝 git,並將 git 添加到系統環境變量。注意在工作環境中,所有的路徑都不可以有中文字符或者空格。Env 是 RT-Thread 推出的開發輔助工具,針對基於 RT-Thread 作業系統的項目工程,提供編譯構建環境、圖形化系統配置及軟體包管理功能。
  • RT-Thread Studio開發環境搭建
    從今天開始,我們學習使用RT-Thread Studio IDE開發STM32程序,RT-Thread Studio是一站式的 RT-Thread
  • 基於 NIOS II 處理器的RT-Thread物聯網作業系統移植與使用教程
    RT-Thread作業系統版本:3.0軟體版本:Quartus II 13.0開發環境:Windows7 64位旗艦版硬體平臺:小梅哥AC620 FPGA開發板嵌入式處理器:NIOS II搭建支持RT-Thread作業系統的NIOS II CPU系統在Qsys中搭建能夠支持RT-Thread作業系統的NIOS II 處理器系統,除了必要的NIOS II處理器、RAM存儲器(片上RAM、
  • RT-Thread BK7252 麻雀一號開發板上手體驗
    麻雀一號開發板最近收到了RT-Thread的麻雀一號開發板,這款開發板可真的是:麻雀雖小,五臟俱全啊!OTA 固件升級① 固件打包編譯器編譯出來的應用程式 rtthread.bin 屬於原始固件,並不能用於 RT-Thread OTA 的升級固件,需要用戶使用 RT-Thread OTA 固件打包器打包生成 .rbl 後綴名的固件,然後才能進行 OTA 升級。
  • RT-Thread+STM32實現智能車目標識別系統的教程
    1 ROS 簡介這裡的開發環境搭建其實是需要搭建 2 份,一份是小車上的 ARM 開發板 (樹莓派,NanoPi 什麼的),另一個則是自己的電腦,因為我們希望把電腦作為 ROS 從節點,連接到小車上的 ROS 主節點,不過開發板和電腦的 ROS 安裝是一模一樣的。既然要和 ROS 連接,那麼首先就得要有一個正常運行的 ROS。
  • 國內linux和macos搭建esp32的開發環境
    背景esp32開發方式有許多如在Arduino軟體中Arduino框架開發方式,網上有許多教程在platformIO
  • RT-Thread智能車目標識別系統連載教程——連接 ROS 小車控制(5)
    上期回顧:引言這篇文檔主要介紹 RT-Thread 如何使用串口或者無線和 ROS 連接,會包含這麼些內容:第一部分:ROS 環境搭建1 ROS 簡介這裡的開發環境搭建其實是需要搭建 2 份,一份是小車上的 ARM 開發板 (樹莓派,NanoPi 什麼的),另一個則是自己的電腦,因為我們希望把電腦作為 ROS 從節點,連接到小車上的 ROS 主節點,不過開發板和電腦的 ROS 安裝是一模一樣的。既然要和 ROS 連接,那麼首先就得要有一個正常運行的 ROS。
  • 【RT-Thread RISC-V 評估板】+ 上電,RGB流水燈走一個!
    ✦開發環境IDE:RT-Thread Studio✦下載工具:Downloader_v2.2.0✦開發板硬體版本:AB32VG1✦如果是第一次做這塊板子的開發,那麼新建的時候基於開發板新建工程,然後在添加更多,SDK管理器會彈出來,然後選擇對應開發板,添加即可。
  • 全國大學生嵌入式晶片與系統設計競賽-2021特色應用方向(RT-Thread)
    該賽題要求2021 年正式參賽的境內院校且應用以 RT-Thread 作業系統為平臺設計開發的參賽作品,使用 rt-thread Nano 或 rt-thread 完整版本均可。 硬體平臺選擇🔷 龍芯 1C    BSP:https://gitee.com/rtthread/rt-thread/tree/gitee_master/bsp/ls1cdev 🔷 龍芯 2K    BSP: https://gitee.com/rtthread/rt-thread
  • 免費的一站式 IoT 集成開發環境:RT-Thread Studio
    隨著嵌入式軟體開發規模和複雜性的提高,集成開發環境顯得越來越必不可少,而在嵌入式集成開發環境軟體方面,國內使用的大多數是從國外引進的。但是隨著國內半導體行業逐步的發展,以及在發展中遇到的國外的封鎖,逐步實現自研晶片及其相關工具軟體的自主化變得越來越重要和迫切。
  • 另類的Arduino&ESP32開發環境搭建(一)
    另類的Arduino&ESP32開發環境搭建(一)Arduino IDE下的ESP32
  • 當「樹莓派」遇上RT-Thread Smart——應用編程入門
    樹莓派4B包括了4核的ARM Cortex-A72,1.5GHz的BCM2711晶片,可以執行ARM AArch64位指令,也可以執行ARM AArch32位指令,具備標準化的通用控制器GIC。和樹莓派3B+的硬體規格對比情況:   要在樹莓派上運行smart也很簡單,直接下載smart的發布版,裡面有樹莓派4B上對應的移植代碼,及一些用戶態應用程式。
  • RT-Thread合作夥伴正點原子發布號令者RT1052開發板
    i.MX RT系列MCU基於ARMCortex M7內核,採用6級流水線,性能高達5 CoreMark/MHz,在600MHz工作頻率下測試數據高達3020 CoreMarks,是目前性能最強的Cortex M7產品。
  • RT-Thread RTC設備學習筆記
    /* 保存獲取的當前時間值 */time_t now;/* 獲取時間 */now = time(RT_NULL);/* 列印輸出時間信息 */rt_kprintf("%s\n", ctime(&now));3、RTC設備的使用本次實驗基於小熊派開發板:配置finsh命令、libc以及軟體模擬rtc