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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • gain command of_partitioning

    gain command of_partitioning今天在Centos上进行硬盘分区的时候,分区完成时候需要命令partprobe指令来通知一下内核我刚才进行了系统分区,但是执行的时候发现Centos最小化安装之后没有这个命令,第一时间想到的就是肯定是包含这个指令的rpm包没有装,然后就跑到Centos7上面看一下有没有这条指令,发现有这条指令,然后就查看一下这条指令是来自于哪个安装包[root@zsf~]#whichp…

    2022年10月8日
    4
  • 微信开放平台认证后怎么实现扫码登录功能[通俗易懂]

    微信开放平台认证后怎么实现扫码登录功能[通俗易懂]主题:微信开放平台认证后怎么实现扫码登录功能在面对这些问题时,同时也是很多刚入手做开发朋友疑惑的希望能帮你们快速完成微信登录配置。以我多天的日夜辛苦测试和实践,同时也是我自己在开发过程中遇到的问题被我不断尝试,一遍又一遍的填写参数,建站平台换几十个,最总发现了这些问题所在给大家总结了以下几点问题和解决方案:1.认证微信开放平台和微信公众平台认证有区别吗?如果只用来作微信登录和使用微信支付,那么告诉你:没有区别,同样是三百块钱认证费用(你只注意一下你的开发资料能一次性通过就行)2.同样能实

    2022年6月9日
    78
  • 转:CCriticalSection「建议收藏」

    转:CCriticalSection「建议收藏」类CCriticalSection的对象表示一个“临界区”,它是一个用于同步的对象,同一时刻只允许一个线程存取资源或代码区。临界区在控制一次只能有一个线程修改数据或其它的控制资源时非常有用。例如在链表中增加一个节点就中允许一次一个线程进行。通过使用CCriticalSection对象来控制链表,就可以达到这个目的。在运行性能比较重要而且资源不会跨进程使用时,建议采用临界区代替信号灯。有关在MF…

    2022年7月20日
    15
  • pycharm配置python解释器的问题_python解释器的提示符

    pycharm配置python解释器的问题_python解释器的提示符转载自:https://blog.csdn.net/weixin_37861326/article/details/80327503在安装python环境后,通常可以利用IDEpyCharm来编译我们的python文件。创建一个python文件夹,用pyCharm打开文件夹,在文件夹中新建一个python文件demo.py也许你知道用cmd中的python指令pythondemo.py去运行这个文件,但是如何在pyCharm中运行python文件?pyCharm是一个功能非常强大的工具..

    2022年8月25日
    12
  • QQ农场开挂_农场游戏源码

    QQ农场开挂_农场游戏源码  QQ空间\校友农场外挂源代码12009年08月18日星期二11:41{///////////////////////////////////////////////////////////////////////////////                           声明//本代码不针对任何团体和个人,只为学习\交流\促进游戏的发展而发布//…

    2022年9月12日
    4
  • 冰蝎下的反弹shell连接msfconsole

    冰蝎下的反弹shell连接msfconsole文章目录前言一、使用木马getshell1.搭建环境二、冰蝎配置三、kali监听总结前言好久没碰美少妇(MSF)了,恰巧昨天在群里水群,有个表哥问为什么msf监听不到数据。为此我带着表哥的疑问进行了简单的研究。大体的流程和思路我简单记录一下。其中的坑还是不少的,希望这篇文章对初识冰蝎的表哥们有点用处。一、使用木马getshell冰蝎之所以强还是在于他的动态二进制加密。这里呢,在冰蝎下载的包中给出了官方的webshell。在server文件夹下。这里呢,我踩过一个坑。不知道是我电脑配置的问题还是就

    2022年9月7日
    2

发表回复

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

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