嵌入式linux查看cpu实时频率,实时嵌入式Linux中的数据记录时延迟峰值

我有一个机器人运行控制代码,在Beaglebone Black上的PREEMPT-RT补丁

Linux操作系统上具有实时优先级.所有代码都用C语言编写,运行频率为500Hz.

在运行代码时,我经常注意到几百毫秒的延迟,我已将其跟踪到我编写的数据记录功能.这种延迟导致我的机器人控制失败,因为我有很多,具体取决于实时功能.

代码的相关部分如下.为了清晰起见,我已经删除了很多代码,但如果需要的话,我会编辑这篇文章.

FILE *file;

int main(int argc,char** argv) {

file = fopen(logname,"w");

while (1) {

/* Control code stuff*/

logData();

time_msec = time_msec + controlLoopTime;

}

}

void logData() {

if (time_msec - logTimer_msec >= LOG_TIMER) {

logTimer_msec = time_msec;

if (!bLogCreated) {

fprintf(file,"SensorData1 SensorData2 SensorDatan"

);

bLogCreated = TRUE;

}

// log data to file

fprintf(file,"%.2f %.2f\n",sensorData1,sensorData2,sensorDatan

);

}

}

我需要以很好的速率(可能是100-125Hz)记录来自多个变量(可能是20-50)的数据.数据不需要以控制速率(每2ms)记录,但我已经将其减少到12ms,我仍然看到每隔几分钟出现延迟峰值.

延迟可能是fprintf调用的问题.这是BeagleBone Black的限制,我的代码,还是数据记录的本质?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值