嵌入式系统性能优化总结

嵌入式系统性能优化总结

分享一些日常工作中的系统调优总结:

一、编程模式

  1. DDS编程模式,由wait_set回调,尽量改成周期性读取

  2. 密集计算中(例如多重长循环),要中途调用sleep释放CPU,否则容易出现CPU尖峰

  3. 尽量避免动态申请内存,尤其在循环中,建议使用内存池

  4. 尽量少用除法运算,尤其在中断处理函数中。除法/ 会被翻译成汇编 __div 函数,执行时间根据被除数的不同会动态变化

  5. 减少以太网负载,尽可能把多包数据拼成一包来转发,不管是否有应用在接收,都可以减少io-pkt的负载

  6. 算法模块,减少DDS Participant,每个会多增加3个线程,而且里面的收发会让procnto和io-pkt倍增,去除后CPU狂减

  7. 接收降频,修改DDS QoS,对不需要高频接收的topic,接收端主动降低接收频率,最好是细化每个算法模块dds的收发策略

  8. 减少DDS消息订阅,把高频接收和处理can信息号的模块从soc挪到mcu

  9. DDS QoS配置,使用unicast,真的需要多个接收的时候才用multicast

  10. 模块周期性发送之前还检查reader是否有收到数据,没有收到的也不转发

二、系统调度

  1. 优先级调整,分析软件各个app的工作流程,设置合理的优先级,把一些重要的通信模块调高优先级,保证系统不出现丢帧

  2. sleep/usleep/nanosleep的参数是否过小。出现过某个进程sleep过短,相当于死循环操作了,死循环是不主动释放CPU的

  3. 应用程序cpu绑核或者绑镞

三、系统log

  1. 系统写og,短周期任务内,不应该写很多log

四、芯片配置或底层优化

  1. CPU超频或者提频,但要注意温度、稳定性的影响

  2. 底层驱动,如优化操作系统io pkg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值