ESP_IDF安装经验(未完待续。。。。)

本文介绍ESP32开发环境中ESP_IDF的安装教程。推荐参考乐鑫官方教程,作者分享多次安装踩坑经验。内容包括安装工具链并配置环境变量,将工具链压缩包解压到esp文件夹;安装ESP_IDF并配置环境变量,使用git下载IDF。
部署运行你感兴趣的模型镜像

安装IDF极力推荐参考乐鑫官方的教程,不要在其他论坛中找类似的,因为个人写的流程都回有所疏漏,当你遇到和教程不一样的地方时,就很难解决问题
下面言归正传,据不完全统计,本人安装IDF起码有20次,每次都遇到不同的问题,所以今天将曾经踩过的坑都一一列举出来,希望能帮助到看到这篇文章的同学们
step 1

安装工具链,配置环境变量

下载 安装工具链
这里可以直接复制连接在网站上下载,也可以直接使用官方教程的sudo指令安装

sudo apt-get install gcc git wget make libncurses-dev flex bison gperf python python-pip python-setuptools python-serial python-cryptography python-future python-pyparsing python-pyelftools

下载之后将压缩包直接解压到esp文件夹就好(注意esp文件夹是自己新建的默认是在home根目录下新建一个文件夹命名为esp)跟ESP32相关的文件我们都可以放在这个文件夹里。
配置 PATH 环境变量
配置环境变量时,只需用vim 打开~/.profile文件 添加环境变量(如果不会使用vim的同学,可以参考vim使用教程

vim ~/.profile

添加

PATH="$HOME/esp/xtensa-esp32-elf/bin:$PATH"

配置环境变量完成之后要重启unbuntu才会永久生效,若想不重启,且配置的环境变量生效需要输入指令

source ~/.profile

输入指令

printenv PATH

可以验证环境变量是否配置成功,成功即可看到工具链的目录
step 2

安装IDF,配置环境变量

下载 安装ESP_IDF
注意这里一定要使用git下载IDF 需要输入指令

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

配置 IDF_PATH 环境变量
和为工具链配置环境变量相同,利用vim,为IDF添加环境变量输入

vim ~/.profile

添加环境变量

export IDF_PATH=~/esp/esp-idf

最近安装idf发现的许多问题,故重新做了整理 戳我!!!

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

esp32-freertos-sdk 工具包 See the Getting Started guide links above for a detailed setup guide. This is a quick reference for common commands when working with ESP-IDF projects: Setup Build Environment (See Getting Started guide for a full list of required steps with details.) Install host build dependencies mentioned in Getting Started guide. Add tools/ directory to the PATH Run python -m pip install -r requirements.txt to install Python dependencies Configuring the Project idf.py menuconfig Opens a text-based configuration menu for the project. Use up & down arrow keys to navigate the menu. Use Enter key to go into a submenu, Escape key to go out or to exit. Type ? to see a help screen. Enter key exits the help screen. Use Space key, or Y and N keys to enable (Yes) and disable (No) configuration items with checkboxes "[*]" Pressing ? while highlighting a configuration item displays help about that item. Type / to search the configuration items. Once done configuring, press Escape multiple times to exit and say "Yes" to save the new configuration when prompted. Compiling the Project idf.py build ... will compile app, bootloader and generate a partition table based on the config. Flashing the Project When the build finishes, it will print a command line to use esptool.py to flash the chip. However you can also do this automatically by running: idf.py -p PORT flash Replace PORT with the name of your serial port (like COM3 on Windows, /dev/ttyUSB0 on Linux, or /dev/cu.usbserial-X on MacOS. If the -p option is left out, idf.py flash will try to flash the first available serial port. This will flash the entire project (app, bootloader and partition table) to a new chip. The settings for serial port flashing can be configured with idf.py menuconfig. You don't need to run idf.py build before running idf.py flash, idf.py flash will automatically rebuild anything which needs it. Viewing Serial Output The idf.py monitor target uses the idf_monitor tool to display se
PS D:\ESP_IDF\project-name> idf.py menuconfig Executing action: menuconfig Running cmake in directory D:\ESP_IDF\project-name\build Executing "cmake -G Ninja -DPYTHON_DEPS_CHECKED=1 -DPYTHON=D:\ESP_IDF\espressif\python_env\idf5.4_py3.11_env\Scripts\python.exe -DESP_PLATFORM=1 -DCCACHE_ENABLE=1 D:\ESP_IDF\project-name"... -- ccache will be used for faster recompilation -- git rev-parse returned 'fatal: not a git repository (or any of the parent directories): .git' -- Could not use 'git describe' to determine PROJECT_VER. -- Building ESP-IDF components for target esp32s3 -- Project sdkconfig file D:/ESP_IDF/project-name/sdkconfig -- Compiler supported targets: xtensa-esp-elf -- USING O3 -- App "project-name" version: 1 -- Adding linker script D:/ESP_IDF/project-name/build/esp-idf/esp_system/ld/memory.ld -- Adding linker script D:/ESP_IDF/project-name/build/esp-idf/esp_system/ld/sections.ld.in -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.api.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.bt_funcs.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.libgcc.ld-- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.wdt.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.version.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_master.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_50.ld-- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_smp.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_dtm.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_test.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.ble_scan.ld -- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom/esp32s3/ld/esp32s3.rom.newlib.ld-- Adding linker script D:/ESP_IDF/v5.4.3/esp-idf/components/soc/esp32s3/ld/esp32s3.peripherals.ld -- Components: app_trace app_update bootloader bootloader_support bt cmock console cxx driver efuse esp-tls esp_adc esp_app_format esp_bootloader_format esp_coex esp_common esp_driver_ana_cmpr esp_driver_cam esp_driver_dac esp_driver_gpio esp_driver_gptimer esp_driver_i2c esp_driver_i2s esp_driver_isp esp_driver_jpeg esp_driver_ledc esp_driver_mcpwm esp_driver_parlio esp_driver_pcnt esp_driver_ppa esp_driver_rmt esp_driver_sdio esp_driver_sdm esp_driver_sdmmc esp_driver_sdspi esp_driver_spi esp_driver_touch_sens esp_driver_tsens esp_driver_uart esp_driver_usb_serial_jtag esp_eth esp_event esp_gdbstub esp_hid esp_http_client esp_http_server esp_https_ota esp_https_server esp_hw_support esp_lcd esp_local_ctrl esp_mm esp_netif esp_netif_stack esp_partition esp_phy esp_pm esp_psram esp_ringbuf esp_rom esp_security esp_system esp_timer esp_vfs_console esp_wifi espcoredump esptool_py fatfs freertos hal heap http_parser idf_test ieee802154 json log lwip main mbedtls mqtt newlib nvs_flash nvs_sec_provider openthread partition_table perfmon protobuf-c protocomm pthread rt sdmmc soc spi_flash spiffs tcp_transport touch_element ulp unity usb vfs wear_levelling wifi_provisioning wpa_supplicant xtensa -- Component paths: D:/ESP_IDF/v5.4.3/esp-idf/components/app_trace D:/ESP_IDF/v5.4.3/esp-idf/components/app_update D:/ESP_IDF/v5.4.3/esp-idf/components/bootloader D:/ESP_IDF/v5.4.3/esp-idf/components/bootloader_support D:/ESP_IDF/v5.4.3/esp-idf/components/bt D:/ESP_IDF/v5.4.3/esp-idf/components/cmock D:/ESP_IDF/v5.4.3/esp-idf/components/console D:/ESP_IDF/v5.4.3/esp-idf/components/cxx D:/ESP_IDF/v5.4.3/esp-idf/components/driver D:/ESP_IDF/v5.4.3/esp-idf/components/efuse D:/ESP_IDF/v5.4.3/esp-idf/components/esp-tls D:/ESP_IDF/v5.4.3/esp-idf/components/esp_adc D:/ESP_IDF/v5.4.3/esp-idf/components/esp_app_format D:/ESP_IDF/v5.4.3/esp-idf/components/esp_bootloader_format D:/ESP_IDF/v5.4.3/esp-idf/components/esp_coex D:/ESP_IDF/v5.4.3/esp-idf/components/esp_common D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_ana_cmpr D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_cam D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_dac D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_gpio D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_gptimer D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_i2c D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_i2s D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_isp D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_jpeg D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_ledc D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_mcpwm D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_parlio D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_pcnt D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_ppa D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_rmt D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_sdio D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_sdm D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_sdmmc D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_sdspi D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_spi D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_touch_sens D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_tsens D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_uart D:/ESP_IDF/v5.4.3/esp-idf/components/esp_driver_usb_serial_jtag D:/ESP_IDF/v5.4.3/esp-idf/components/esp_eth D:/ESP_IDF/v5.4.3/esp-idf/components/esp_event D:/ESP_IDF/v5.4.3/esp-idf/components/esp_gdbstub D:/ESP_IDF/v5.4.3/esp-idf/components/esp_hid D:/ESP_IDF/v5.4.3/esp-idf/components/esp_http_client D:/ESP_IDF/v5.4.3/esp-idf/components/esp_http_server D:/ESP_IDF/v5.4.3/esp-idf/components/esp_https_ota D:/ESP_IDF/v5.4.3/esp-idf/components/esp_https_server D:/ESP_IDF/v5.4.3/esp-idf/components/esp_hw_support D:/ESP_IDF/v5.4.3/esp-idf/components/esp_lcd D:/ESP_IDF/v5.4.3/esp-idf/components/esp_local_ctrl D:/ESP_IDF/v5.4.3/esp-idf/components/esp_mm D:/ESP_IDF/v5.4.3/esp-idf/components/esp_netif D:/ESP_IDF/v5.4.3/esp-idf/components/esp_netif_stack D:/ESP_IDF/v5.4.3/esp-idf/components/esp_partition D:/ESP_IDF/v5.4.3/esp-idf/components/esp_phy D:/ESP_IDF/v5.4.3/esp-idf/components/esp_pm D:/ESP_IDF/v5.4.3/esp-idf/components/esp_psram D:/ESP_IDF/v5.4.3/esp-idf/components/esp_ringbuf D:/ESP_IDF/v5.4.3/esp-idf/components/esp_rom D:/ESP_IDF/v5.4.3/esp-idf/components/esp_security D:/ESP_IDF/v5.4.3/esp-idf/components/esp_system D:/ESP_IDF/v5.4.3/esp-idf/components/esp_timer D:/ESP_IDF/v5.4.3/esp-idf/components/esp_vfs_console D:/ESP_IDF/v5.4.3/esp-idf/components/esp_wifi D:/ESP_IDF/v5.4.3/esp-idf/components/espcoredump D:/ESP_IDF/v5.4.3/esp-idf/components/esptool_py D:/ESP_IDF/v5.4.3/esp-idf/components/fatfs D:/ESP_IDF/v5.4.3/esp-idf/components/freertos D:/ESP_IDF/v5.4.3/esp-idf/components/hal D:/ESP_IDF/v5.4.3/esp-idf/components/heap D:/ESP_IDF/v5.4.3/esp-idf/components/http_parser D:/ESP_IDF/v5.4.3/esp-idf/components/idf_test D:/ESP_IDF/v5.4.3/esp-idf/components/ieee802154 D:/ESP_IDF/v5.4.3/esp-idf/components/json D:/ES(Top) Espressif IoT Development Framework Configuration Build type ---> Bootloader config ---> Security features ---> Application manager ---> Boot ROM Behavior ---> Serial flasher config ---> Partition Table ---> Compiler options ---> Component config ---> [ ] Make experimental features visible [Space/Enter] Toggle/enter [ESC] Leave menu [S] Save [O] Load [?] Symbol info [/] Jump to symbol [F] Toggle show-help mode [C] Toggle show-name mode [A] Toggle show-all mode [Q] Quit (prompts for save) [D] Save minimal config (advanced)
最新发布
11-28
<think> 我们正在解决两个问题: 1. 执行 `idf.py menuconfig` 时出现 'git rev-parse returned 'fatal: not a git repository (or any of the parent directories): .git'' 错误。 2. 理解 ESP-IDF 配置菜单的使用。 首先,第一个错误是因为 ESP-IDF 在构建过程中尝试获取 Git 仓库的版本信息(例如用于生成版本号),但当前项目目录不是一个 Git 仓库(或者没有初始化 Git 仓库)。 解决方案有两种思路: a) 将当前项目初始化为 Git 仓库(如果项目还没有使用版本控制,这是一个好习惯)。 b) 告诉 ESP-IDF 不要尝试获取 Git 版本信息(通过设置环境变量)。 其次,关于 ESP-IDF 配置菜单(menuconfig)的使用,我们将简要介绍其功能和基本操作方法。 下面分步骤说明: ### 步骤 1: 解决 Git 仓库错误 #### 方法 A: 初始化 Git 仓库(推荐) - 进入项目根目录(包含 `CMakeLists.txt` 的目录)。 - 执行以下命令: git init git add . git commit -m "Initial commit" - 这样,项目就成为一个 Git 仓库,`idf.py menuconfig` 就不会再报错。 #### 方法 B: 设置环境变量(如果不想使用 Git) - 在运行 `idf.py` 命令之前,设置环境变量 `IDF_GIT_REV` 为任意值(例如当前日期),以覆盖 Git 版本信息。 - 在 Linux/macOS 中: export IDF_GIT_REV=$(date +%s) idf.py menuconfig - 在 Windows 中(命令提示符): set IDF_GIT_REV=%date% idf.py menuconfig - 或者,在 Windows PowerShell 中: $env:IDF_GIT_REV = Get-Date -Format "yyyyMMdd" idf.py menuconfig 注意:方法 B 只是临时解决方案,每次新打开终端都需要重新设置。如果要永久设置,可以将环境变量添加到系统或用户的环境变量中。 或者,你可以在项目的根目录下创建一个 `version.txt` 文件,内容为自定义版本字符串(例如 `1.0.0`),这样 ESP-IDF 会使用这个文件中的版本而不是 Git 版本。但这种方法需要你手动维护版本号。 ### 步骤 2: 理解 ESP-IDF 配置菜单(menuconfig) `idf.py menuconfig` 是一个基于文本的配置界面(使用 ncurses 库),用于配置 ESP-IDF 项目的各种选项,包括: - 串口设置(如烧录串口、监视器串口) - 分区表配置 - 功能选项(如启用蓝牙、Wi-Fi 等) - 组件配置(如 FreeRTOS 设置、日志级别等) - 内核设置(如 CPU 频率、优化等级等) #### 基本操作: - 上下箭头:移动光标 - 左右箭头:切换底部菜单(Select, Exit, Help, Save, Load) - Enter 键:进入子菜单或选中选项 - 空格键:切换选项状态(如 [*] 表示启用,[ ] 表示禁用) - ? 键:显示当前选项的帮助信息 - / 键:搜索配置项(输入关键字查找配置- 按两次 Esc 键:返回上一级菜单 配置完成后,选择 "Save" 保存,然后退出。配置信息会保存在项目根目录下的 `sdkconfig` 文件中(该文件不要手动编辑)。 #### 重要配置项: - **Serial flasher config**:设置烧录相关的参数,如串口端口、烧录波特率、Flash 模式、大小和频率等。 - **Partition Table**:选择分区表(内置或自定义),分区表定义了 Flash 的分区布局。 - **Component config**:对各个组件(如 Wi-Fi、蓝牙、文件系统等)进行详细配置。 ### 注意事项: - 如果你在项目中没有看到某些配置项,可能是因为该项目没有包含对应的组件。确保在 `CMakeLists.txt` 中已经添加了相关组件。 - 修改配置后,需要重新编译项目(`idf.py build`)以使更改生效。 ### 示例:设置串口端口和波特率 1. 运行 `idf.py menuconfig` 2. 进入 "Serial flasher config" 3. 设置 "Default serial port"(如 `/dev/ttyUSB0` 或 `COM3`) 4. 设置 "Default baud rate"(如 921600) 5. 保存并退出。 ### 总结 - Git 仓库错误可以通过初始化仓库或设置环境变量解决。 - menuconfig 是配置 ESP-IDF 项目的重要工具,掌握其使用对开发至关重要。 如果按照上述步骤操作后问题仍然存在,请检查 ESP-IDF 环境变量(如 `IDF_PATH`)是否正确设置,并确保使用最新稳定版的 ESP-IDF。 §§相关问题§§ 1. 如何正确设置 ESP-IDF 项目的分区表? 2. 如何在 ESP-IDF 项目中添加自定义组件? 3. ESP-IDF 的 sdkconfig 文件有什么作用? 4. 如何解决 ESP-IDF 编译时的其他常见错误? </think> ### 解决 `idf.py menuconfig` 的 Git 仓库错误及配置菜单使用指南 #### 问题 1: 解决 `git rev-parse` 错误 当执行 `idf.py menuconfig` 时出现 `fatal: not a git repository` 错误,表明 ESP-IDF 在尝试获取 Git 版本信息时失败。以下是解决方案: 1. **初始化 Git 仓库**(推荐) 在项目根目录执行: ```bash git init git add . git commit -m "Initial commit" ``` 这将创建本地 Git 仓库,解决版本查询问题[^1]。 2. **设置版本覆盖变量**(临时方案) 在运行命令前设置环境变量: ```bash # Linux/macOS export IDF_GIT_REV="custom_version" # Windows set IDF_GIT_REV=custom_version idf.py menuconfig ``` 3. **创建伪版本文件** 在项目根目录创建 `version.txt` 文件: ```bash echo "v1.0.0" > version.txt ``` ESP-IDF 会优先使用此文件而非 Git 版本[^1]。 --- #### 问题 2: ESP-IDF 配置菜单使用详解 `menuconfig` 是 ESP-IDF 的交互式配置工具,基于 Kconfig 系统。核心功能区域如下: | 配置区域 | 功能说明 | 关键参数示例 | |----------|----------|--------------| | **Serial Flasher Config** | 烧录设置 | `Default Serial Port`, `Flash Size`, `Flash Mode` | | **Partition Table** | 分区表设置 | `Partition Table` (选择内置或自定义分区表) | | **Component Config** | 组件配置 | Wi-Fi/BT 开关、日志级别、FreeRTOS 设置 | | **Compiler Options** | 编译选项 | 优化等级(-O2)、调试符号、警告级别 | ##### 操作指南: 1. **导航** - 方向键 ↑↓ 移动光标 - →← 切换菜单层级 - `Enter` 进入子菜单 2. **修改参数** - 空格键 切换布尔选项(`[*]` 表示启用) - 字符串/数值选项直接编辑后按 `Enter` 3. **保存与退出** - `S` 保存到 `sdkconfig` 文件 - `Q` 退出(自动提示保存) 4. **搜索功能** 按 `/` 输入关键字,如搜索 `Wi-Fi` 配置 ##### 示例:设置串口烧录参数 ```text → Serial Flasher Config → Default Serial Port: /dev/ttyUSB0 → Flash Baud Rate: 921600 → Flash SPI Mode: DIO ``` > 提示:修改分区表需在 `Partition Table` 中选择 `Custom partition table CSV` 并指定文件路径[^1]。 --- #### 注意事项 1. **环境一致性** 确保已激活 ESP-IDF 环境: ```bash source $IDF_PATH/export.sh # Linux/macOS .\$IDF_PATH\export.bat # Windows ``` 2. **权限问题** 在 Linux 下出现设备访问错误时: ```bash sudo usermod -aG dialout $USER # 添加用户组 sudo chmod a+rw /dev/ttyUSB0 # 临时授权 ``` 3. **配置继承** `sdkconfig` 文件优先级: ```mermaid graph TD A[项目根目录/sdkconfig] -->|最高优先级| B[构建] C[IDF全局默认] -->|最低优先级| B ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值