我会想到这一点有点不同.任何基于闪存的存储设备都可能在写入时具有可变的时序.特别是具有文件系统和磨损均衡和类似功能的一个.它往往是闪光的本质,因为你必须擦除整个块并移动东西.如果你不能忍受可变时序,那么我过去所做的就是将这篇文章移出代码的时间关键部分.
通常我会添加一个时间关键代码写入的队列,然后在后台从队列中拉出并写入SD卡.在RTOS中,这将是一个优先级较低的任务.在轮询循环中,它将是系统空闲时调用的函数.
这将约束从函数调用的最坏情况时序更改为仅能够满足日志记录的平均吞吐量要求.最坏的情况是延迟和吞吐量决定了队列必须有多大; 通常这可能很小.