完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
使用HPM6280芯片, 程序使用了FreeRTOS操作系统。SEGGER开发环境gnu11,gnu11++编译。 随便开个中断,比如GPTMR计数器定时中断,PWM重载中断,在中断入口加个控制测试引脚通过示波器查看,跑一段程序,发现耗时很长。 中断优先级7,程序里跑了若干PID运算,耗时160uS,以前用CORTEX M4 192MHZ的MCU, 同样例程用时8uS。 换做普通背景程序里跑也差不多。 HPM6280应该没有这么不堪吧。这个速度在哪里配置优化啊?编译器优不优化没那么多差别吧? 有谁出来指点迷津啊。谢谢 |
|
相关推荐
3个回答
|
|
您好!
关于在6200上提升运算速度的问题,建议参考以下几点: 1、将需要快速运行的代码放在ILM(本地指令存储)中,参考linker文件配置和hpm_common.h中已经定义好的宏。 2、涉及浮点数的运行,需要打开CPU的浮点数指令集,参考hpm_math例程。 3、需要把优化等级开到level 3。 您那边的PID程序我已经在SDK 1.3.0上测试过,在第一次运行时用时约1.2us,后续运行不到0.5us。 关于编译器优化,由于RISC-V与ARM架构有差异,所以开了-O3优化的效果会比不开优化明显很多。 建议按上述方案优化您那边的编译设计。
最佳答案
|
|
|
|
程序优化可以从以下几方面入手:
1. 算法优化:检查程序中的PID算法是否可以使用更快的计算方法或者是否存在冗余计算。 2. 中断优化:检查中断优先级设置是否符合要求,并减少在中断服务函数中的计算和数据传输。 3. 编译器优化:使用编译器提供的优化选项来减少代码大小和运行时间。 4. 系统优化:检查系统配置和堆栈大小是否合适,并优化系统资源的使用方式。 针对您的问题,可以尝试优化算法和中断服务函数,同时检查编译器是否启用了优化选项。如果仍然存在性能问题,可以尝试使用一些性能分析工具来定位瓶颈。 |
|
|
|
设置部分函数段link到cpu内部的ILM内存段,0等待访问运行速度提升很大!
|
|
|
|
只有小组成员才能发言,加入小组>>
358个成员聚集在这个小组
加入小组441 浏览 0 评论
1374 浏览 22 评论
1036 浏览 2 评论
5361之PWM之CMP更新慢至1秒,请各位有经验的高手帮忙!
1159 浏览 1 评论
【先楫HPM5361EVK开发板试用体验】(原创)6.手把手实战红外线传感器源代码
8771 浏览 0 评论
【盖楼抢好礼】欢迎先楫半导体HPMicro入驻电子发烧友社区!
19400浏览 532评论
1390浏览 22评论
USBX范例中启用 double FPU , 运行异常,卡死在tx_risc_v_trap_handler函数
2555浏览 5评论
1311浏览 5评论
请问Segger Embedded Studio这个窗口不小心拉出来悬浮后怎么塞回去?
2355浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-28 21:28 , Processed in 0.630946 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191