|
stm32 и FatFs от Chan |
|
|
|
Mar 30 2017, 02:04
|
Участник

Группа: Участник
Сообщений: 50
Регистрация: 7-06-05
Пользователь №: 5 797

|
Здравствуйте, Уважаемые коллеги. Снова нуждаюсь в Ваших подсказках. Наконец-то подключил файловую систему от Чана и решил её опробовать. Версия R0.11 от 02-02-2015. Пробую открыть файл и дописать в его конец данные: Код f_open(&MyFile, "stm32.txt", FA_WRITE | FA_OPEN_ALWAYS); f_lseek(&MyFile, f_size(&MyFile)); f_write(&MyFile, wtext, strlen((char *)wtext), &wbytes); По описанию, FA_OPEN_ALWAYS должна открывать файл, если он есть и создавать если его нет. Код выполняется, но: - если такой файл уже есть, то очень быстро, менее 1с. - если файла нет, то f_open и f_lseek срабатывают быстро, а вот f_write - долго, примерно минута. файл с данными появляются. С чем это может быть связано? Куда "копать"? _FS_NORTC пробовал (время не организовывал). портирование от Domen Puncer, немного переделал. Спасибо.
|
|
|
|
|
 |
Ответов
|
Oct 13 2017, 04:46
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Нашел карту SDHC 4 класс 8 ГБ. Или что-то с картой не так, или с драйвером: Цитата 17/10/13 11:36:04->[EXT MEM: SDCARD]->Free: 7 833 767 936 (7.29 GB) 17/10/13 11:36:04->[EXT MEM: SDCARD]->Total: 7 846 363 136 (7.30 GB) 17/10/13 11:36:13->[EXT MEM: SDCARD]->Write end, speed: 557 KB/s ( 4 194 304 (4.00 MB) in 7345 ms) 17/10/13 11:36:13->[EXT MEM: SDCARD]->Read end, speed: 5165 KB/s ( 4 194 304 (4.00 MB) in 793 ms) Читает/пишет без ошибок, однако скорость никуда не годится. На ПК показывает 4 МБ/с Надо поискать 10-й класс.
|
|
|
|
|
Oct 13 2017, 08:20
|
Гуру
     
Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025

|
Цитата(Hold @ Oct 13 2017, 06:46)  Читает/пишет без ошибок, однако скорость никуда не годится. На ПК показывает 4 МБ/с Надо поискать 10-й класс. Это не столько от класса карточки зависит, сколько от организации программы и от организации карточки. Попробуйте разобраться, на что именно у Вас тратится основное время, например, при file append: 1) поиск первого кластера файла в FAT 2) прохождение по цепочке кластеров до последнего 3) чтение нужного сектора 3а) поиск свободного кластера (если нужен) 4) обновление сектора 5) запись сектора обратно 6) обновление FAT и всех копий FAT (изменение длины файла, добавка кластера в цепочку если нужно) Только (5) и (6) от класса карточки и зависят, остальное- от быстродействия программы и расположения файла на карточке. Тут гораздо больше чтения, чем записи. И очень часто этот бесконечный поиск-обновление FAT занимает много времени. Я в критичной к времени записи задаче (запись кольцевого файла кэша определенной длины) делал при старте поиск цепочки кластеров нужной длины, объявлял их занятыми файлом, и далее напрямую пихал туда данные. Было значительно быстрее чем на каждый 200-байтовый чих проходить полную стандартную цепочку с поиском в FAT. В общем случае помогает укорочение цепочки в FAT (использование длинного кластера), нахождение файла в начале карточки (первые кластеры) и несегментированность карточки (кластеры файла следуют друг за другом). Ну и расположение файлов в корневой директории, чтобы цепочка поиска была короче.
|
|
|
|
|
Oct 16 2017, 09:37
|
Участник

Группа: Участник
Сообщений: 40
Регистрация: 27-01-17
Пользователь №: 95 184

|
Цитата(jcxz @ Oct 13 2017, 22:51)  У автора, судя из письма, имеется SDRAM. Простое и очевидное решение в этом случае - кеширование по чтению. Тогда описанные Вами проблемы минимизируются. Кеширование на уровне ниже FatFS. SDRAM не бесконечна, 64 Мбайта на всё. Там и так крутится кэш(зеркало на чтение) AT45DB641 и нескольких FM25V10, память GUI, куча lwIP и виртуальный диск в FatFs (помимо карточки). Как именно логичнее сделать кэш на чтение с карточки? В случае с небольшой AT45, достаточно хранить полную копию, для максимально быстрого чтения, а вот с задачей кэширования карточки не сталкивался.
|
|
|
|
Сообщений в этой теме
Ioann_II stm32 и FatFs от Chan Mar 30 2017, 02:04 Genadi Zawidowski три вопроса:
0) почему не последняя версия?
1) поч... Mar 30 2017, 07:36 MiklPolikov Цитата(Ioann_II @ Mar 30 2017, 05:04) С ч... Mar 30 2017, 16:54 Ioann_II 0) почему не последняя версия?
Версия та, что была... Mar 30 2017, 23:57 MiklPolikov Цитата(Ioann_II @ Mar 31 2017, 02:57) Пол... Mar 31 2017, 06:31  Ioann_II Цитата(MiklPolikov @ Mar 31 2017, 09:31) ... Mar 31 2017, 07:41   jcxz Цитата(Ioann_II @ Mar 31 2017, 09:41) Воп... Mar 31 2017, 09:02    Ioann_II Цитата(jcxz @ Mar 31 2017, 12:02) Если по... Mar 31 2017, 11:56   MiklPolikov Цитата(Ioann_II @ Mar 31 2017, 10:41) Пох... Mar 31 2017, 12:23    Ioann_II Цитата(MiklPolikov @ Mar 31 2017, 15:23) ... Mar 31 2017, 14:15     Шаманъ Цитата(Ioann_II @ Mar 31 2017, 17:15) При... Mar 31 2017, 14:40 jcxz Цитата(Ioann_II @ Mar 31 2017, 01:57) Пол... Mar 31 2017, 06:37 Genadi Zawidowski ЦитатаТаймауты сделаны без таймеров.
Это где? Там ... Mar 31 2017, 14:34 Rash Потеря скорости и времени будет, если писать по 82... Mar 31 2017, 19:47 Ioann_II Отформатировал карту.
Записал большой объём данных... Apr 1 2017, 10:21  jcxz Цитата(Ioann_II @ Apr 1 2017, 12:21) Выво... Apr 1 2017, 13:23   Ioann_II Цитата(jcxz @ Apr 1 2017, 16:23) Ещё врод... Apr 1 2017, 14:42 Hold На обычной SD 2 ГБ емкостью получал скорости запис... Oct 12 2017, 07:10 mantech Цитата(Hold @ Oct 12 2017, 10:10) Если пи... Oct 12 2017, 12:05  Огурцов Цитата(mantech @ Oct 12 2017, 12:05) Это ... Oct 13 2017, 05:35   mantech Цитата(Огурцов @ Oct 13 2017, 08:35) а та... Oct 13 2017, 07:43    Огурцов Цитата(mantech @ Oct 13 2017, 08:43) Дак ... Oct 13 2017, 17:16    Ruslan1 Цитата(Hold @ Oct 16 2017, 11:37) Как име... Oct 16 2017, 10:00    jcxz Цитата(Hold @ Oct 16 2017, 12:37) Как име... Oct 16 2017, 10:19     sadat Цитата(mantech @ Oct 16 2017, 16:13) Если... Oct 16 2017, 15:08      mantech Цитата(sadat @ Oct 16 2017, 18:08) У ФМ-к... Oct 16 2017, 15:25       Огурцов Цитата(mantech @ Oct 16 2017, 16:38) Хоти... Oct 16 2017, 20:39 Hold Да, дело было в размере кластера. Флешку не формат... Oct 13 2017, 09:19 Ruslan1 Цитата(Hold @ Oct 13 2017, 11:19) Понятно... Oct 13 2017, 09:41 Hold У меня интерес по поводу скорости был скорее акаде... Oct 13 2017, 09:51 Ruslan1 Цитата(Hold @ Oct 13 2017, 11:51) решил г... Oct 13 2017, 10:14  mantech Цитата(Ruslan1 @ Oct 13 2017, 13:14) влож... Oct 13 2017, 14:07 Hold На будущее запомню, однако не думаю что сейчас с н... Oct 16 2017, 12:50 Hold На FM25V10 в количестве 4х штук лежит критически в... Oct 16 2017, 17:56 mantech Цитата(Hold @ Oct 16 2017, 20:56) На FM25... Oct 16 2017, 18:21 Hold Лог на sdram особо не в счет - питания нет 3 секун... Oct 16 2017, 18:36 mantech Цитата(Hold @ Oct 16 2017, 21:36) Лог на ... Oct 16 2017, 20:23  Hold Цитата(mantech @ Oct 17 2017, 03:23) Опят... Oct 17 2017, 03:58   mantech Цитата(Hold @ Oct 17 2017, 06:58) За день... Oct 17 2017, 08:01   jcxz Цитата(Hold @ Oct 17 2017, 06:58) Основна... Oct 17 2017, 08:45    Hold Цитата(jcxz @ Oct 17 2017, 15:45) А каков... Oct 17 2017, 09:58     sadat Цитата(Hold @ Oct 17 2017, 12:58) Фрам вс... Oct 17 2017, 10:36     jcxz Цитата(Hold @ Oct 17 2017, 12:58) В это в... Oct 17 2017, 17:04      Hold Цитата(jcxz @ Oct 18 2017, 00:04) Всё опи... Oct 18 2017, 02:20       jcxz Цитата(Hold @ Oct 18 2017, 05:20) Что бы ... Oct 18 2017, 10:59     Огурцов Цитата(Hold @ Oct 17 2017, 09:58) Фрам вс... Oct 17 2017, 18:55 Hold Ставить серьезные диски ради 512К (по факту их там... Oct 18 2017, 11:38 mantech Цитата(Hold @ Oct 18 2017, 14:38) Ставить... Oct 18 2017, 13:14 Hold Кэши(зеркало) удобнее читать чем тянуть байты из A... Oct 18 2017, 16:52 mantech Цитата(Hold @ Oct 18 2017, 19:52) Кэши уд... Oct 18 2017, 17:08 Hold Эти самые резервные копии через фтп верхнее ПО раз... Oct 18 2017, 17:15 mantech Цитата(Hold @ Oct 18 2017, 20:15) Эти сам... Oct 18 2017, 17:26  sadat Цитата(mantech @ Oct 18 2017, 20:26) ... Oct 18 2017, 17:46   mantech Цитата(sadat @ Oct 18 2017, 20:46) Думаю,... Oct 18 2017, 17:52    sadat Цитата(mantech @ Oct 18 2017, 20:52) В сл... Oct 18 2017, 17:56     mantech Цитата(sadat @ Oct 18 2017, 20:56) Иногда... Oct 18 2017, 18:06 jcxz Цитата(Hold @ Oct 18 2017, 20:15) Эти сам... Oct 19 2017, 06:48 Hold Сливаются копии FRAM а не прошивка. Но да, прошивк... Oct 18 2017, 17:41 mantech Цитата(Hold @ Oct 18 2017, 20:41) Бэкап f... Oct 18 2017, 17:47  sadat Цитата(mantech @ Oct 18 2017, 20:47) И ча... Oct 18 2017, 17:49 Hold Питания ионистора хватает на то, чтобы несколько р... Oct 18 2017, 18:06 Hold Не буду особо ничего опровергать, скажу лишь, что ... Oct 19 2017, 09:16 jcxz Цитата(Hold @ Oct 19 2017, 12:16) Не буду... Oct 19 2017, 09:39 Hold Атомарность, он же совместный доступ, обеспечивает... Oct 24 2017, 15:14 jcxz Цитата(Hold @ Oct 24 2017, 18:14) Атомарн... Oct 25 2017, 08:29  mantech Цитата(jcxz @ Oct 25 2017, 11:29) Т.е. - ... Oct 25 2017, 09:21 uriy На STM32F407 сделал mass storage in ram. Выделил 6... Oct 25 2017, 13:16 Hold Признаться да, такой защиты у меня нет, новые данн... Oct 25 2017, 16:01 jcxz Цитата(Hold @ Oct 25 2017, 19:01) Признат... Oct 26 2017, 06:18
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|