ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法摘要ESP32-Drone四旋翼无人机是乐鑫的一个开源项目,我根据官方的硬件参考设计,重新使用KiCAD绘制了原理图和PCB板,并制作了控制板样板,在配置了ESP-idf-4.4编程环境编译官方的软件包时遇到了二个比较严重的问题,具体过程记录如下:编译问题1:找不到FreeRTOS.h头文件。如图1-1所示,在编译的过程中,发现报没有找到FreeRTOS.h头文件,这应该是C语言程序编译过程中常见的头文件目录环境变量的设置有问题。如图1-2所示,根据报错信息的提示,找到“craz.

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

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

摘要

ESP32-Drone四旋翼无人机是乐鑫的一个开源项目,我根据官方的硬件参考设计,重新使用KiCAD绘制了原理图和PCB板,并制作了控制板样板,在配置了ESP-idf-4.4编程环境编译官方的软件包时遇到了二个比较严重的问题,具体过程记录如下:

编译问题1:找不到FreeRTOS.h头文件。

ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

如图1-1所示,在编译的过程中,发现报没有找到FreeRTOS.h头文件,这应该是C语言程序编译过程中常见的头文件目录环境变量的设置有问题 。

ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

 如图1-2所示,根据报错信息的提示,找到“crazyfile”组件所在的目录,打开“Cmakelists.txt”文件,查找跟FreeRTOS有关的内容。

ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

 图1-3所示,在“Cmakelists.txt”中已经有查找“FreeRTOS”头文件目录,并设置“FREERTOS_ORIG_INCLUDE_PATH”路径的内容,按理说不应该再报跟“FreeRTOS”操作系统有关的错误。

考虑到我下载的软件包ESP-IDF可能与ESP-Drone项目所使用的版本可能不一致的缘故,打算修改“Cmakelists.txt”文件手动加入FreeRTOS的头文件目录进行一下测试。

ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

如图1-4所示,在“Cmakelists.txt”文件中加入如下的语句:

set(FREERTOS_ORIG_INCLUDE_PATH “d:/esp-idf/components/freertos/FreeRTOS-Kernel/include/freertos”)

然后进行了测试,发现报错现象消失了,这进一步验证了前面的判断是真确的,至于执行以下语句:

idf_component_get_property( FREERTOS_ORIG_INCLUDE_PATH freertos ORIG_INCLUDE_PATH )

后,为什么没有能够正确设置“FreeRTOS”头文件路径,待后续有时间再进行查证。

编译问题2:_无法定位log_start、log_stop等函数入口

ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

如图2-1所示,编译编译代码时发现错误,具体如下:

undefined reference to `_log_start’

undefined reference to `_log_stop’

undefined reference to `_param_start’

undefined reference to `_param_stop’

根据上述报错信息,上网查询,发现以下网址有关于此报错信息的解决方法:搭建开发环境 — ESP-Drone 文档

访问上述网址后,提示说要在文件”esp32s2.project.ld.in”中添加以下的内容。

ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

可在我的ESP-IDF软件目录中并没有找到“esp32s2.project.ld.in”文件,考虑到ESP-IDF版本的问题,猜测是文件被改了名字,经过检索发现在目录“D:\esp-idf\components\esp_system\ld\esp32s2”有二个跟系统软件链接定位有关的文件“memory.ld.in”、”sections.ld.in”。

ESP32-Drone四旋翼无人机代码编译发现的二个问题及解决方法

 如图2-2所示,打开文件“sections.ld.in”,可找到.flash.rodata 段的信息, 在末尾添加以下代码:

/* Parameters and log system data */

    _param_start = .;

    KEEP(*(.param))

    KEEP(*(.param.*))

    _param_stop = .;

    . = ALIGN(4);

    _log_start = .;

    KEEP(*(.log))

    KEEP(*(.log.*))

    _log_stop = .;

    . = ALIGN(4);

然后删除软件工程目录下的“build”目录,“sdkconfig”文件,再运行“idf.py set-target esp32s2”命令重新配置目标处理器,之后运行“idf.py build”发现此编译问题已经解决。

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

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

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


相关推荐

  • cms垃圾收集器采用的回收算法_垃圾回收处理厂

    cms垃圾收集器采用的回收算法_垃圾回收处理厂CMSconcurrentmarkssweep并行标记清除垃圾回收机制。此篇文章是根据众多网上资料总结的关于CMS垃圾回收器的相关知识点。便于个人总结和回忆。垃圾回收器类型1、串行回收,Serial回收器,单线程回收,全程stw;2、并行回收,名称以Parallel开头的回收器,多线程回收,全程stw;3、并发回收,cms与G1,多线程分阶段回收,只有某阶段会stw;CMS垃圾回…

    2022年10月13日
    3
  • CoreOS裸机iso安装和相关配置

    CoreOS裸机iso安装和相关配置

    2022年4月3日
    184
  • 一个计算机爱好者的不完整回忆(七)还是游戏

    一个计算机爱好者的不完整回忆(七)还是游戏游戏没写完 继续写游戏 这回简单点写 争取这一章把游戏相关的写完 以下以及以前所写的内容都是凭记忆所写 想到哪就写到哪 肯定会有遗漏会有不准确的地方 条理也会比较混乱 记性不好没办法 本来写游戏 但可能有些想不到 没准写到后面编程反而想到了游戏 大家多多谅解 另一个我非常喜欢的即时战略游戏是帝国时代 最开始玩的时间不比星际少 后来的 2 代 3 代也都玩了 一直觉得还可以 但不像星际这么经典可以

    2026年3月18日
    2
  • 【保姆级】3分钟搞定 OpenClaw 大龙虾环境:Docker 一键部署,零基础!

    【保姆级】3分钟搞定 OpenClaw 大龙虾环境:Docker 一键部署,零基础!

    2026年3月13日
    2
  • poe交换机可以当普通交换机吗?-芝士回答_poe交换机和poe交换机对接

    poe交换机可以当普通交换机吗?-芝士回答_poe交换机和poe交换机对接PoE交换机是一种新型的多功能交换机,很多人认为PoE交换机可以自行发电,这种说法并不正确,通常所讲的PoE交换机供电指的是PoE交换机通过网线来给其他设备供电,与此同时也不丢失传输数据的功能。那么,PoE交换机和普通交换机又有什么区别呢?可以将PoE交换机当做普通的交换机来使用吗?本文将为您揭晓这两个问题的答案。PoE交换机和普通交换机的区别PoE交换机和普通交换机都是可以传输数据的网络设备,但两者之间又有什么差别呢?下文会将PoE交换机和普通交换机进行对比,以便能够帮助您更加深入的了解二者之间的

    2022年10月5日
    3
  • 虚拟机配置opc服务器,组态王怎么配置成opc服务器

    虚拟机配置opc服务器,组态王怎么配置成opc服务器组态王怎么配置成opc服务器内容精选换一换您可以在添加监听器时配置健康检查。通常,使用默认的健康检查配置即可。以下操作步骤以共享型负载均衡健康检查配置为例。健康检查与ELB的后端协议是两个相互独立的能力,所以健康检查协议可以与ELB的后端协议相同,也可以不同。为了减少后端服务器的CPU占用,建议您使用TCP协议做健康检查。如果您希望使用HTTP健康检查协议,建议使用HTTP+静态CHNet-FX…

    2022年6月20日
    29

发表回复

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

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