往往通用框架为了通用性,往往不会做深度优化(需要传入特定的芯片特性操作

🔍 溯源 ✍️ Jack | 📅 2024-11-20 | 👍 4 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/C语言 #技术/性能优化 #技术/中断 #质量/精华

原帖 | Jack | 2024-11-20 15:53 | 👍4 | 阅读约1

往往通用框架为了通用性,往往不会做深度优化(需要传入特定的芯片特性操作),学员在我的建议下,把中断进行优化,效率吞吐率提高了好多倍。

串口定制优化

这里就有一次拷贝 这是高速IO的忌讳(队列两次拷贝的背景见 我们在使用队列会存在两次数据拷贝,xQueueSend(...)发一次,

测试结果:
测试1.拷贝数据的操作依旧保留在中断里,把Buf从1024缩减到512。压力测试环境不变、依然不丢包。中断执行时间缩短到8us。中断进入的间隔2.5ms左右。

测试2.通过任务通知的方式,中断里面计算DMA每次接收的数据大小和数据所在的位置,在线程里面把DMA接收到数组的数据通过memcpy拷贝保存起来,然后用DMA发送。实测不丢包,中断执行时间压缩到2.6us

869c578a0a99.jpg

977ab0fe97c0.jpg

c1f970399524.jpg

a8cb93d66fb2.png

d30e567ee394.jpg

0db94523a8da.jpg

cc11c00779dc.jpg

35331c0186d2.jpg

c4b43fc43480.jpg


相关笔记