-
- Ты можешь написать функцию считать сектор n и записать сектор n? Поиграться n от 0 до 1024, скажем, запротоколировать время выполнения. - Evgeny_CD(07.07.2015 19:38)
- 1024 вызова disk_write с буфером 500 байт на запись прошло за 3,6 секунды. Т.е. имеем около около 140 кб/с. А с FAT падаем до 50 кб/с. Эх, где ж обещанные мегабайты/сек? - rod-i-on(14.07.2015 00:42)
- 500 буфер и 512 сектор - нормально? Я на знаю, как там код и промежуточные буфера устроены... FAT кластер какой размер имеет при твоей фс? Попробуй задать буфер боьльше кластера. - Evgeny_CD(14.07.2015 01:00)
- Записывал буфер 1024 байта. Те же 55 кб/с - rod-i-on(15.07.2015 00:25)
- Поиграю. А вообще блок 512 байт, я заполнял только 500 байт в буфер и писал. Волнует что выше сотки не получается в принципе. И это с DMA и SDIO! - rod-i-on(14.07.2015 21:11)
- Две копии ФАТа пишутся. На каждый сектор данных - еще плюс две записи. И скорее всего карта не любит random write, снижая скорость в несколько раз против linear write. Если нужна скорость, сначала создавайте файл на весь размер, а потом пишите. У vmp_в_отпуске(143 знак., 14.07.2015 21:32, )
- Думаю, надо начинать надо не с fatfs а с разбора почему запись блока такая медленная - rod-i-on(14.07.2015 23:05)
- Так это очевидно. Какой там размер страницы у современных nand-flash того же объема? Вот при посекторной записи контроллер в карточке считывает страницу, модифицирует нужный сектор, пишет в чистый блок, переписывает в него остаток старого блока и vmp в отпуске(169 знак., 15.07.2015 22:33, )
- +1 - Evgeny_CD(15.07.2015 01:24)
- Думаю, надо начинать надо не с fatfs а с разбора почему запись блока такая медленная - rod-i-on(14.07.2015 23:05)
- Две копии ФАТа пишутся. На каждый сектор данных - еще плюс две записи. И скорее всего карта не любит random write, снижая скорость в несколько раз против linear write. Если нужна скорость, сначала создавайте файл на весь размер, а потом пишите. У vmp_в_отпуске(143 знак., 14.07.2015 21:32, )
- 500 буфер и 512 сектор - нормально? Я на знаю, как там код и промежуточные буфера устроены... FAT кластер какой размер имеет при твоей фс? Попробуй задать буфер боьльше кластера. - Evgeny_CD(14.07.2015 01:00)
- 1024 вызова disk_write с буфером 500 байт на запись прошло за 3,6 секунды. Т.е. имеем около около 140 кб/с. А с FAT падаем до 50 кб/с. Эх, где ж обещанные мегабайты/сек? - rod-i-on(14.07.2015 00:42)
- Проверьте с совсем нулевой картой, из коробки. Проверьте скорость чтения. И попробуйте отпрофайлить драйвер - сколько времени он делает те или иные операции. - Evgeny_CD(06.07.2015 00:22)
- Настроил профилирование, оч. понравилось! При записи данных получил rod-i-on(82 знак., 07.07.2015 00:20 - 00:23)
- Ошибок много. Кури еррату STM32, причем своей версии камня, и смотри схемотехнику - там лажа где-то может быть. - Evgeny_CD(07.07.2015 15:33)
- Дык к если отрываешь CmdResp1Error, то там видно, что идет проверка на ошибки. И пока что ни в одну не выпадало. - rod-i-on (с работы)(07.07.2015 16:59, )
- А это точно не индикатор того, что карточка ответила признаком ошибки? - Evgeny_CD(07.07.2015 17:23)
- Дык к если отрываешь CmdResp1Error, то там видно, что идет проверка на ошибки. И пока что ни в одну не выпадало. - rod-i-on (с работы)(07.07.2015 16:59, )
- Ошибок много. Кури еррату STM32, причем своей версии камня, и смотри схемотехнику - там лажа где-то может быть. - Evgeny_CD(07.07.2015 15:33)
- Попробую. Для начала надо разобраться как в IAR профилировать с stlink - Rodi on(06.07.2015 07:09, )
- Настроил профилирование, оч. понравилось! При записи данных получил rod-i-on(82 знак., 07.07.2015 00:20 - 00:23)
- Я б сначала отформатил в фотике и писал бы с первого сектора (если считать с нуля) - Vit(05.07.2015 21:37)
- Сделал. Даже карточку поменял. Результат тот же - rod-i-on(05.07.2015 22:31)
- Ты можешь написать функцию считать сектор n и записать сектор n? Поиграться n от 0 до 1024, скажем, запротоколировать время выполнения. - Evgeny_CD(07.07.2015 19:38)