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”发现此编译问题已经解决。

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 上海市高校计算机考试准考证

    上海市高校计算机考试准考证大家好啊,距离22考研初试仅剩26天,现在这个时候,大家除了对知识点进行查缺补漏之外,也得关注一些关于考前的准备工作,还有考场的注意事项哦!因为地区的不同,考点的不同,监考老师的不同,考试的要求和规定也会有差异哦,所以大家在拿到准考证之后,一定要仔细查看考试考点的要求~#考研倒计时#打开腾讯新闻,查看更多图片>1、可不可以戴手表、手环?如果要戴手表,那必须是没有记忆及计算功能的,也就是机械表,手环算电子产品大概率是不可以带的,在进考场之前可以询问一下监考老师,确认一下是否可以带

  • Matlab中lsim函数使用

    Matlab中lsim函数使用lsim函数:lsim函数是针对线性时不变模型,给定任意输入,得到任意输出。lsim函数表示任意输入函数的响应,连续系统对任意输入函数的响应可以利用lsim函数求取。语法(常用):1.分子分母形式lsim(num,den,u,t)2.传递函数形式lsim(sys,u,t)3.状态空间形式lsim(A,B,C,D,u,t)其中,u为由给定输入序列构成的矩阵,它的每列对应一个输入,每行对应一个新的时间点,其行数与时间t的长度相等,其它的用法与step函数相同。…

  • java 拦截器 判断url_Spring 的拦截器如何实现url转发

    java 拦截器 判断url_Spring 的拦截器如何实现url转发如何实现Spring的过滤器代码中改写请求的URL,并转发出去,注意,是转发,不是重定向packagecom.blog.inteceptor;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.springframework.web.servl…

  • Dom4j解析XML(详解)

    Dom4j解析XML(详解)Dom4j解析XML(详解)DOM解析SAX解析使用Dom4j解析XML结合XPath解析XML

  • 查看idea激活码-激活码分享

    (查看idea激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html1STL5S9V8F-eyJsaWNlbnNlSWQi…

  • 动态标题怎么写_网站主题

    动态标题怎么写_网站主题1.快并快乐着!2.共享世界,有你才精彩!3.你共享一小文件,对于你来说是一小文件,但对于世界上的骡友来说是一个大文件。4.分享互联网5.梦里寻她千百度,蓦然回首,那资源竟在VeryCD下载处。6.想象力比知识更重要。7.学历代表过去,学习力掌握将来。8.把自己当傻瓜,不懂就问,你会学的更多。9.学问和修持的力量,来使人受益,就等于欠了一份债。10.不是事业为了思想,而是思想为了事业。11.睡觉是为了踏实地工作,工作是为了踏实地睡觉。12.人生在世界是短暂的,对这短暂的人生,我们最好的报答就是工作。13.

发表回复

您的电子邮箱地址不会被公开。

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