|
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 ?
|
|
|
|
|
 |
Ответов
|
Nov 24 2012, 17:07
|
Профессионал
    
Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763

|
aaarrr, видимо нужна Ваша помощь. Я попробовал так: Код SDIO_CmdInitStructure.SDIO_Argument = 0x80FFFF01; // magic word meas HS mode SDIO_CmdInitStructure.SDIO_CmdIndex = SD_CMD_HS_SWITCH; SDIO_SendCommand(&SDIO_CmdInitStructure); delay_ms(10); errorstatus = CmdResp1Error(SD_CMD_HS_SWITCH); Пока по простому, не анализируя может ли карта работать в HighSpeed (не разобрался еще, как это проверять). Результат - в 1-битном режиме 1-гиговая карточка перестала глючить, с 4-х гиговой - ничего не изменилось. Запись-чтение работают, скорость записи изменилась незначительно (и это понятно), скорость чтения возросла сильно, почти вдвое на 4-16К блоках. В 4-х битном режиме - по прежнему ничего не работает, ни запись и чтение не проходят. И вот еще что интересно - обратите внимание на delay_ms(10) после отсылки команды. вначале его небыло, я ставит в дебаггере брейкпойнт на errorstatus = CmdResp1Error(SD_CMD_HS_SWITCH); и все работало. Потом запустил без брейкпойнта или не под дебаггером - и все висло. Вставил задержку - заработало.
|
|
|
|
|
Nov 27 2012, 20:53
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(Allregia @ Nov 24 2012, 21:07)  Пока по простому, не анализируя может ли карта работать в HighSpeed (не разобрался еще, как это проверять). Проверить можно следующим образом: 1. Посылаем CMD6 с аргументом 0x00000001 (Mode 0, Function: High-Speed) 2. Принимаем 512 бит данных, в них смотрим бит 400 == 1, биты 379:376 == 1 - функция поддерживается, разрешено переключение 3. Посылаем CMD6 с аргументом 0x80fffff1 (Mode 1, Function: High-Speed) 4. Принимаем 512 бит данных, проверяем биты 379:376 == 1 - успешно переключились 5. Ждем минимум 8 тактов, затем переключаем частоту Важный момент: некоторые карты требуют паузы после CMD6, даже если осуществляется только проверка, а не переключение. А "железо" тянет 50MHz (настройки IO, трассировка)?
|
|
|
|
Сообщений в этой теме
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 Lotor Самое лучшее - найти на электрониксе тему, где это... Sep 3 2012, 17:37 Allregia Цитата(Lotor @ Sep 3 2012, 19:37) Самое л... Sep 3 2012, 20:23  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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|