|
STM32F4 + FatFS + uSD, проблема со скоростью. |
|
|
|
Sep 3 2012, 13:03
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Нужна помощь клуба. Процессор STM32F407VG, 168МГц. Использую SDIO 4 бита на 24Мгц. DMA. Запись/чтение через SD_ReadMultiBlocks/SD_WriteMultiBlocks. На всех сигналах SDIO пуллапы 10к. проверочный код: Код SDInitResult=SD_Init(); if(SDInitResult==SD_OK) LEDOn(LED1); else LEDOn(LED2);
if(SDInitResult==SD_OK){ if ( f_mount( 1, &MSD_fatfs ) != FR_OK ){ LEDOn(LED2); // fatfs initialisation fails }else{ res = f_open(&myfile, "1:test_sd.dat", FA_CREATE_ALWAYS | FA_WRITE);
for(i=0; i<3000;i++){ res=f_write(&myfile, buffer,4096, &bw); }
f_close(&myfile); f_mount(1, NULL); if(res==0) LEDOn(LED2); else LEDOn(LED1); } } Итого, записывается 3тыс блоков по 4096 байт, засекаю секундомером. На флешке PQI 1Gb (FAT) - 36 секунд, получается 340кБайт/сек или 2.7мбит/с На Кингстон 4Gb (FAT32) - 60с, т.е. 200 кБайт/сек, или 1.6мбит/с. Дополнение - при изменении блока с 4к на 16к, на 4гб фат32 флешке те-эе 60 сек., а на 1гб фат16 уменшилось до 12 сек, т.е. 1МБайт/с или 8 МБит/с. У кого какие результаты получались? Я честно говоря, ожидал скорости побольше (хотя для конкретной задачи мне ее хватит. И попутно другой вопрос - я первый раз с FatFs работаю, функия f_write начинается и ждет пока не закончиться запись блока. Т.е оно блокирует на время записи всю программу и не очень понятно зачем тогда DMA? Это можно как-то обойти без OS ?
|
|
|
|
|
 |
Ответов
|
Sep 3 2012, 17:37
|
Местный
  
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866

|
Самое лучшее - найти на электрониксе тему, где это подробно обсуждается более осведомленными людьми. Там примерно говорится, что SD карта вещь в себе, с собственным контроллером, который может по спецификации давать задержки до 250 мс независимо от класса. Чем меньше объем карты, тем меньше вероятность задержек - вот у Вас скорость и выше при 1ГБ карте. Зная задержку можете рассчитать приемлемый буфер для записи. Я пишу по 6 МБайт в фат32, камень указывал - lpc2478. Помимо записи на карту идет поток на tcp, рисуется чб gui на oled, опрашивается емкостная клавиатура, всякие датчики температуры, акселерометр и т.п. - т.е. секрет успеха в большом буфере под запись.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Sep 3 2012, 20:23
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
Цитата(Lotor @ Sep 3 2012, 19:37)  Самое лучшее - найти на электрониксе тему, где это подробно обсуждается более осведомленными людьми. Пока не нашел. Цитата Там примерно говорится, что SD карта вещь в себе, с собственным контроллером, который может по спецификации давать задержки до 250 мс независимо от класса Это не очень обьясняет, почему на одной карте запись 12МБ идет 12 секунд, а на другой - 60. Цитата . Чем меньше объем карты, тем меньше вероятность задержек - вот у Вас скорость и выше при 1ГБ карте. Зная задержку можете рассчитать приемлемый буфер для записи. Я пишу по 6 МБайт в фат32, камень указывал - lpc2478. Помимо записи на карту идет поток на tcp, рисуется чб gui на oled, опрашивается емкостная клавиатура, всякие датчики температуры, акселерометр и т.п. - т.е. секрет успеха в большом буфере под запись. У Чена есть бенчмарки: http://elm-chan.org/fsw/ff/img/rwtest2.pngТам проц типа Вашего, с 72мгц тактовой, дает при 16К блоках 5.5 МБайт/сек. А тут: http://elm-chan.org/fsw/ff/img/rwtest.png АТМега на 9мгц на 256мб карточке дает при 2К блоках скорость в 300 мбайт/сек, прием я так понимаю это с SPI на 9мгц, а не с SDIO на 25мгц, это выше чем у меня дает 4гб карточка на 168-мегагерцовом проце! Потому я и думаю - что-то тут не так.
|
|
|
|
Сообщений в этой теме
Allregia STM32F4 + FatFS + uSD Sep 3 2012, 13:03 _Артём_ Цитата(Allregia @ Sep 3 2012, 16:03) И по... Sep 3 2012, 13:12 Allregia Цитата(_Артём_ @ Sep 3 2012, 15:12) Обойт... Sep 3 2012, 13:31 Lotor На счет скорости тут на форуме много тем вердикт к... Sep 3 2012, 14:01 Allregia Цитата(Lotor @ Sep 3 2012, 16:01) На счет... Sep 3 2012, 14:15  aaarrr Цитата(Allregia @ Sep 4 2012, 00:23) Пото... Sep 3 2012, 20:42 Lotor Не так, так не так. Я попытался Вас направить в ну... Sep 3 2012, 20:29 Allregia Цитата(Lotor @ Sep 3 2012, 22:29) Не так,... Sep 4 2012, 04:48 Lotor Тема, на которую я дал Вам ссылку должна ответить ... Sep 4 2012, 06:38 Allregia Цитата(Lotor @ Sep 4 2012, 08:38) Тема, н... Sep 4 2012, 07:38  Lotor Цитата(Allregia @ Sep 4 2012, 11:38) Нали... Sep 4 2012, 08:40   Allregia Цитата(Lotor @ Sep 4 2012, 10:40) Абсолют... Sep 4 2012, 10:44 Serg_D скорее всего оно форматирует с выравниваением (так... Sep 4 2012, 14:36 Allregia Цитата(Serg_D @ Sep 4 2012, 16:36) скорее... Sep 4 2012, 15:26 Serg_D А частоту клока карты в 48мгц не пробовали ставить... Sep 4 2012, 16:29 Allregia Цитата(Serg_D @ Sep 4 2012, 18:29) А част... Sep 4 2012, 17:03 Allregia Еще интересный факт:
при переводе SDIO в 1-битный ... Sep 5 2012, 10:19 aaarrr Факты есть, а системы нет.
Вам нужно проверить ра... Sep 5 2012, 10:37 Allregia Да, конечно.
Я просто рассказываю интересные момен... Sep 5 2012, 19:25 Allregia Возникла проблема - пока писал на малой скорости в... Nov 6 2012, 18:40 Allregia Посмотрел более внимательно флешка входит в паузу... Nov 7 2012, 15:42 Allregia Отформатировал карточку в компе при помощи SDForma... Nov 8 2012, 09:17 Lotor Цитата(Allregia @ Nov 8 2012, 13:17) 2) Ф... Nov 8 2012, 10:06  _Pasha Цитата(Lotor @ Nov 8 2012, 13:06) А что и... Nov 8 2012, 11:22  Allregia Цитата(Lotor @ Nov 8 2012, 12:06) А что и... Nov 8 2012, 15:01   Lotor Цитата(Allregia @ Nov 8 2012, 19:01) Проб... Nov 9 2012, 06:47    Allregia Цитата(Lotor @ Nov 9 2012, 08:47) Я прост... Nov 9 2012, 07:47 RabidRabbit Может после форматирования SDFormatter'ом карт... Nov 9 2012, 08:02 Allregia Цитата(RabidRabbit @ Nov 9 2012, 10:02) М... Nov 9 2012, 08:40 Allregia Народ подкажите еще такую штуку:
Посмотрел я что э... Nov 21 2012, 20:54 aaarrr Цитата(Allregia @ Nov 22 2012, 00:54) Что... Nov 21 2012, 21:20  Allregia Цитата(aaarrr @ Nov 21 2012, 23:20) А сам... Nov 21 2012, 22:45   aaarrr Цитата(Allregia @ Nov 22 2012, 02:45) А у... Nov 21 2012, 23:31 Allregia Нашел 3.0, и еще в примераз в IAR.
Попробую завтра... Nov 22 2012, 19:20 Allregia aaarrr, видимо нужна Ваша помощь.
Я попробовал та... Nov 24 2012, 17:07 aaarrr Цитата(Allregia @ Nov 24 2012, 21:07) Пок... Nov 27 2012, 20:53  Allregia Цитата(aaarrr @ Nov 27 2012, 22:53) Прове... Nov 27 2012, 21:25   aaarrr Цитата(Allregia @ Nov 28 2012, 01:25) Я в... Nov 27 2012, 21:35 Allregia У меня стоят по 10к на всех линиях, кроме CLK (ему... Nov 28 2012, 08:31 Allregia А не может это быть тем случаем, описанным в эррат... Nov 29 2012, 06:16 Allregia Вот есть еще интересный вопрос - в F4 используется... Nov 29 2012, 15:03 Stepanov.I.L Здравствуйте товарищи форумчане. Чтобы не плодить ... Oct 31 2013, 03:14 esaulenka Была похожая проблема с использованием ST-шного пр... Oct 31 2013, 16:14 mantech Цитата(esaulenka @ Oct 31 2013, 19:14) US... Oct 31 2013, 19:26 Stepanov.I.L Всем спасибо, все свободны. Проблему решил, причин... Nov 6 2013, 04:00
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|