完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本次遇见的问题就非常奇怪:首先,我用的是Arduino IDF,当前产品中,使用的MCU为 ESP32-PICO-D4,开发板还有ESP32-WROOM-32等参与测试。之前使用的开发库是1.0.6版本,没有发现有大问题,但我的应用中需要用到“MCPWM”功能,需要用到其中 mcpwm_group_set_resolution()等功能设置,在1.0.6版本中,我没有找到相关的设置,于是就用虚拟机安装了 2.0.4版本。此2.0.4版本使用过程中,出现了一些问题:
起初,我发现同一段程序,使用2.0.4版本的执行效率要比1.0.6版本低很多,不明就里我就写了一段程序,看看同一颗MCU在不同库文件版本中的差异: 使用1.0.6(2.0之前的版本基本都是)每秒可以达到 6615903的loop计数频率。 而使用 2.0.4(2.0以后的版本,试了2.0.0,2.0.4,2.0.5) 每秒只能达到 不到 140000 的loop计数频率。 这个性能差异巨大,还请有这方面经验的朋友帮忙看看,是哪里出来什么问题吗? 在此先谢谢诸位了。 |
|
相关推荐
1个回答
|
|
在Arduino开发环境中,从1.0.6版本升级到2.0.4版本后,可能会遇到效率低下的问题,这可能是由以下几个原因导致的:
1. **API变更**:2.0版本相较于1.0.6版本,可能对一些API进行了重构或修改,这可能导致原有代码的效率受到影响。如果2.0版本引入了新的抽象层或更复杂的实现方式,这可能会增加执行时间。 2. **库的优化程度**:2.0.4版本可能在某些方面进行了优化,但在其他方面可能还不够成熟或优化。如果1.0.6版本在某些特定任务上进行了特别优化,而2.0.4版本在这方面的优化不足,就可能导致效率降低。 3. **编译器和工具链**:不同版本的Arduino IDE可能使用了不同的编译器或工具链,这也可能影响程序的执行效率。如果2.0.4版本的工具链在某些方面不如1.0.6版本,那么即使代码相同,执行效率也可能不同。 4. **硬件支持和驱动**:2.0.4版本可能引入了对新硬件的支持,但这些新支持可能还没有完全优化,或者与现有硬件的驱动存在兼容性问题,这也可能影响程序的执行效率。 5. **内存管理**:新的版本可能采用了不同的内存管理策略,如果这些策略在某些情况下不够高效,也可能导致整体效率下降。 6. **多任务和中断处理**:如果2.0.4版本在多任务处理或中断响应方面有所改变,这可能会影响到程序的实时性能和响应速度。 7. **测试和基准**:确保你的测试是公平和准确的。有时候,效率的差异可能来自于测试方法的不同,或者测试环境的差异。 解决这些问题的方法可能包括: - **检查文档**:查看2.0.4版本的文档,了解新版本的特性和可能的变更。 - **优化代码**:根据新版本的API和特性,重新优化你的代码。 - **更新IDE和库**:确保你使用的是最新版本的Arduino IDE和库,以获得最佳的性能和兼容性。 - **社区支持**:寻求Arduino社区的帮助,看看是否有其他人遇到了类似的问题,并找到解决方案。 - **性能分析**:使用性能分析工具来确定程序的瓶颈所在,然后针对性地进行优化。 最后,如果你发现2.0.4版本确实存在性能问题,可以考虑向Arduino社区或ESP-IDF团队报告这个问题,以便他们可以调查并可能在后续版本中解决这些问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
1118 浏览 1 评论
574浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
461浏览 5评论
461浏览 4评论
435浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 21:22 , Processed in 0.759715 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号