ESP-Drone开源 Wi-Fi 无人机固件首次编译与错误排查

ESP-Drone开源 Wi-Fi 无人机固件首次编译与错误排查**ESP-Drone原名ESP-Plane***代码仓库:[esp-drone](https://github.com/espressif/esp-drone)*中文文档:[gettingstarted](https://docs.espressif.com/projects/espressif-esp-drone/zh_CN/latest/index.html)*展示视频:[安装与试飞](https://b23.tv/hnLq8Z)

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

文章更新版本 时间 备注 修订人
V0.1 2020.08.06 初始版本 bob

开源仓库地址

ESP-Drone 原名 ESP-Plane

在这里插入图片描述

编译成 ESP32-S2 固件

1. ESP32-S2 环境搭建

全新安装 ESP-IDF 环境

目前(2020.08.06)乐鑫在 master 分支对 ESP32-S2 提供最新支持,因此必须使用
master 版本的 ESP-IDF

请严格按照开发环境搭建-ESP32S2-Latest,按步骤完成环境搭建工作:

已搭建其它 IDF 环境,如何进行切换?

  1. cd 进入 IDF 根目录

  2. 使用 git log 查看当前版本信息

  3. 使用 git fetch 拉取分支信息

  4. 使用 git checkout master 切换到 master

  5. 执行 install.sh 安装 master 版本的工具链

  6. 执行 git submodule update --init --recursive 更新子仓库

如果 Windows 中无法正常切换到 master,可以查看解决方案

注意 Windows 中使用 .bat 代替 .sh,例如第 5 变为执行 install.bat安装 master 版本的工具链。

2. 设置编译目标

使用 idf.py set-target esp32s2 将编译目标切换为 esp32s2(默认为 esp32),如果中途切换编译目标,请将 build 目录和 sdkconfig sdkconfig.old 删除,重新 set-target

ESP32-S2 编译错误与解决方案

1. 编译目标错误 This chip is ESP32-S2 not ESP32

如果忘记通过 idf.py set-target esp32s2 将编译目标切换为esp32s2,会默认编译为esp32版本的固件,下载时会出现以下错误,请将 build目录和 sdkconfig sdkconfig.old 删除,重新 set-target

在这里插入图片描述

2. 未设置链接脚本 undefined reference to _param_stop

如果环境搭建之后未设置链接脚本,请参考ESP32/ESP32-S2链接脚本修改进行设置。

在这里插入图片描述

3. 编译优化报错 outside array bounds of TCB_t * volatile[1]

由于 ESP32-S2 为单核芯片,综合性能目前不如 ESP32,因此在项目配置sdkconfig.defaults 中默认开启了编译性能优化,该优化项打开后,会导致报错outside array bounds of TCB_t * volatile[1]

在这里插入图片描述

需要注意在 components/freertos/tasks.c 中函数taskYIELD_OTHER_CORE 第一行添加xCoreID = 0;

在这里插入图片描述

编译成 ESP32 固件

1. ESP32 环境搭建

全新安装 ESP-IDF 环境:请严格按照开发环境搭建-ESP32,按步骤完成环境搭建工作,ESP32 对 IDF 版本没有要求,可使用 master 也可使用4.0 及以上的 release 分支或4.0.1版本。

2. 设置编译目标

使用 idf.py set-target esp32 将编译目标切换为 esp32 (默认为 esp32)

如果中途切换编译目标,请将 build 目录和 sdkconfig sdkconfig.old 删除,重新
set-target

ESP32 编译错误与解决方案

1. 未设置链接脚本 undefined reference to _param_stop

如果环境搭建之后未设置链接脚本,请参考ESP32/ESP32-S2链接脚本修改进行设置。

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170575.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月15日 上午8:00
下一篇 2022年8月15日 上午8:00


相关推荐

  • LM567鉴频电路设计

    LM567鉴频电路设计LM567 概述编辑 LM567 为通用锁相环电路音调译码器 LM567 的内部电路及详细工作过程非常复杂 具体的可参考 音频 567 芯片详解 这里仅将其基本功能概述如下 当 LM567 的 脚输入幅度 25mV 频率在其带宽内的信号时 脚由高电平变成低电平 脚输出经频率 电压变换的调制信号 如果在器件的 脚输入音频信号 则在 脚输出受 脚输入调制信号调制的调频方波信号 用外接元件独立设定

    2026年3月20日
    2
  • 什么是互联网,以太网,广域网,局域网的代码_局域网和广域网和城域网的区别

    什么是互联网,以太网,广域网,局域网的代码_局域网和广域网和城域网的区别计算器网络

    2022年10月9日
    3
  • windows无法安装iis信息服务器,windows server 2016 安装iis教程

    windows无法安装iis信息服务器,windows server 2016 安装iis教程如何在新安装的服务器上安装 IIS 呢 下面就有我来详细的给大家介绍如何在新装的 windowsserve 上安装 IIS 1 打开 服务器管理器 不知道怎么打开的 服务器管理器 的可以单击 winserver201 的开始菜单 2 单击 添加角色和功能 选项 3 出现 iis 安装前的开始向导 单击 下一步 即可 4 勾选 基于角色或基于功能的安装 选项 5 在 服务器选择 步骤 我们默认即可 然

    2026年3月17日
    3
  • JavaScript刷新页面的几种方法

    JavaScript刷新页面的几种方法1 reload 方法 该方法强迫浏览器刷新当前页面 语法 location reload bForceGet 参数 bForceGet 可选参数 默认为 false 从客户端缓存里取当前页 true 则以 GET 方式 从服务端取最新的页面 相当于客户端点击 F5 刷新 2 replace 方法方法通过指定 URL 替换当前缓存在历史里 客户端 的项目 因此当使

    2026年3月19日
    1
  • Hessian矩阵(黑塞矩阵)

    Hessian矩阵(黑塞矩阵)文章目录黑塞矩阵与多元函数的极值黑塞矩阵与多元函数的极值一元函数求极值 例如函数

    2026年3月16日
    1
  • iphone上的设备管理去哪里了_设备管理在哪里

    iphone上的设备管理去哪里了_设备管理在哪里正常是没有设备管理的选项的,当你的iPhone上有未信任程序(已经安装好的才行,正在下载/安装的都不算)时才会有这个选项设置>通用>设备管理

    2022年8月1日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号