高级会员

- 积分
- 561
- 金钱
- 561
- 注册时间
- 2017-8-29
- 在线时间
- 89 小时
|
1金钱
现在需要定时向TF卡中写入固定大小的数据, 所以需要测试数据写入的时间。
现在简单编写了一个测试代码,定时器1s调用一次下面函数,每次写入40K的数据量。
现象:通过打印的时间显示,每间隔一段时间,数据写入的时间明显增加(有规律性)。
如果是随着被写入的文件变大,时间随之递增倒是好理解;但是打印出的时间是隔一段时间来个“波峰”随之平稳。
测试代码:
void TEST_WirteData(void)
{
//DWORD clmt[SZ_TBL]; //
static ULONG ulVal = 256;
ULONG ulByteCnt = 0;
ULONG i = 0;
ULONG ulTickStart = 0;
FRESULT FatRes = FR_OK;
FIL fil;
UINT pw;
/* 装测试数据 , 全局变量随意装数据, 可以忽略*/
for (i = 0; i < (40 * 1024); i++)
{
g_TestDataBuffer = (i % ulVal);
}
if ((ulVal -= 2) == 0) ulVal = 256;
ulTickStart = HAL_GetTick();
/* 打开文件,不存在则新建,追加 */
FatRes = f_open(&fil, "0:/pylon/lb_test.txt", FA_WRITE | FA_OPEN_ALWAYS | FA_OPEN_APPEND);
if (FatRes != FR_OK)
{
printf("\r\nCreate Or Open File Fail.");
return;
}
{
/* 写入测试数据 */
FatRes = f_write(&fil, g_TestDataBuffer, (40 * 1024), &pw);
if (FatRes != FR_OK)
{
printf("\r\nWrite File Fail.");
return;
}
}
/* 关闭文件 */
f_close(&fil);
printf("\r\nTotalTime: %dms", (HAL_GetTick() - ulTickStart));
return;
}
打印现象:
[17:04:14]TotalTime: 378ms
[17:04:16]TotalTime: 365ms
[17:04:18]TotalTime: 374ms
[17:04:20]TotalTime: 365ms
[17:04:22]TotalTime: 363ms
[17:04:24]TotalTime: 360ms
[17:04:26]TotalTime: 377ms
[17:04:28]TotalTime: 369ms
[17:04:30]TotalTime: 361ms
[17:04:32]TotalTime: 381ms
[17:04:35]TotalTime: 363ms
[17:04:36]TotalTime: 1002ms
[17:04:38]TotalTime: 368ms
[17:04:40]TotalTime: 381ms
[17:04:42]TotalTime: 364ms
[17:04:44]TotalTime: 374ms
[17:04:46]TotalTime: 364ms
[17:04:48]TotalTime: 379ms
[17:04:50]TotalTime: 367ms
[17:04:52]TotalTime: 367ms
[17:04:54]TotalTime: 382ms
[17:04:56]TotalTime: 377ms
[17:04:58]TotalTime: 358ms
[17:05:00]TotalTime: 794ms
[17:05:02]TotalTime: 386ms
[17:05:04]TotalTime: 370ms
[17:05:06]TotalTime: 361ms
[17:05:08]TotalTime: 373ms
[17:05:10]TotalTime: 379ms
[17:05:12]TotalTime: 364ms
[17:05:14]TotalTime: 374ms
[17:05:16]TotalTime: 372ms
[17:05:18]TotalTime: 374ms
[17:05:20]TotalTime: 371ms
[17:05:22]TotalTime: 391ms
[17:05:25]TotalTime: 364ms
[17:05:26]TotalTime: 1002ms
[17:05:28]TotalTime: 375ms
[17:05:30]TotalTime: 365ms
[17:05:32]TotalTime: 388ms
[17:05:34]TotalTime: 386ms
[17:05:36]TotalTime: 366ms
[17:05:38]TotalTime: 370ms
[17:05:40]TotalTime: 380ms
[17:05:42]TotalTime: 363ms
[17:05:44]TotalTime: 391ms
[17:05:46]TotalTime: 367ms
[17:05:48]TotalTime: 366ms
[17:05:51]TotalTime: 367ms
[17:05:52]TotalTime: 1017ms
[17:05:54]TotalTime: 393ms
[17:05:56]TotalTime: 367ms
[17:05:58]TotalTime: 361ms
[17:06:00]TotalTime: 395ms
[17:06:02]TotalTime: 378ms
[17:06:04]TotalTime: 392ms
[17:06:06]TotalTime: 376ms
[17:06:08]TotalTime: 374ms
请教:
1、这中现象正常吗? 是否与我底层驱动有关系?(FF_MAX_SS = FF_MIN_SS = 512)写入长度都是512Bytes的整数倍
2、如何使每次写入的时间平稳?至少不会突变。
3、请老师们指教。谢谢!!!
|
|