|
|
  |
stm32f4 + Chan's FatFS, работа с большими SD картами |
|
|
|
Sep 11 2018, 07:46
|

Частый гость
 
Группа: Свой
Сообщений: 162
Регистрация: 12-01-09
Из: Харьков
Пользователь №: 43 270

|
Цитата Единственный плюс SDIO в сравнении с SPI - бОльшая низкоуровневая скорость. А как я говорил выше - для embedded это редко реально нужно. Вы не правы . Например: автономная система сбора информации с сохранением на SD. 400 раз в секунду измерить напряжение (3 канала по 16 бит) накопить в буфер и переписать в SD. Процессор STM32L476 просыпается на время измерения и записи в SD. Применение SDIO в два раза увеличивает продолжительность автономной работы при заданном источнике питания.
|
|
|
|
|
Sep 11 2018, 08:16
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
QUOTE (jcxz @ Sep 11 2018, 14:51)  Не особо большой. Кстати! Стоп  Отклик R мы ещё можем через DMA "ждать", т.к. оверхед будет не более 8 байт. А вот как тогда ждать Data Response Token Start Block Token и т.п., да ещё и следовать логике их обработке. Честно говоря, у меня в голове уже не укладывается, как тут DMA использовать. Тем более эти "токкены" не приходят в течение 8 байт. Значит издержки будут уже больше. QUOTE (V_N @ Sep 11 2018, 15:46)  Процессор STM32L476 просыпается на время измерения и записи в SD. Возможно всё это зависит от SDIO, а следовательно - от модели микроконтроллера. И да, всё-таки не процессор
--------------------
Выбор.
|
|
|
|
|
Sep 11 2018, 09:10
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(V_N @ Sep 11 2018, 10:46)  Вы не правы . Например: автономная система сбора информации с сохранением на SD. 400 раз в секунду измерить напряжение (3 канала по 16 бит) накопить в буфер и переписать в SD. Процессор STM32L476 просыпается на время измерения и записи в SD. Применение SDIO в два раза увеличивает продолжительность автономной работы при заданном источнике питания. Да ладно! Так уж и в два раза? Как измеряли? А сколько из всего этого времени что нужно на измерение, обработку, запись (особенно через ФС) составляет собственно пересылка? Сколько %? Я собственно об этом и писал - читайте внимательнее. А сколько нужно времени на включение и стабилизацию питания карты? А после записи нужно ещё дождаться статуса "завершение записи", время появления которого вообще никак не связано со скоростью пересылки, а только со скоростью карты. Ну сэкономите целых 10мкс на пересылке, а карта писать/стирать будет ещё 200мс. И сколько процентов прироста скорости даёт SDIO vs SPI? 1% или целых 2%? Боюсь что даже 1% выигрыша не будет от SDIO.
|
|
|
|
|
Sep 11 2018, 09:45
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(jcxz @ Sep 11 2018, 12:10)  И сколько процентов прироста скорости даёт SDIO vs SPI? 1% или целых 2%? Боюсь что даже 1% выигрыша не будет от SDIO. На чтении внезапно дает примерно столько, во сколько раз больше линий передачи. Просто полный набор штампов: SD - плохо, лучше SPI FS - плохо, будем колхозить свой велосипед Скорость больше 1Мбайт/с в эмбеддед не бывает и не нужна Это для PIC16 актуально, а не для STM32F4. P.S. SD, не SDIO
|
|
|
|
|
Sep 11 2018, 12:31
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(aaarrr @ Sep 11 2018, 12:45)  На чтении внезапно дает примерно столько, во сколько раз больше линий передачи. На чтении чего? Какая прикладная задача? В синтетическом тесте? И кто бы сомневался. И вообще-то отвечаете Вы на пост о системе сбора информации. На кой там чтение??? Цитата(aaarrr @ Sep 11 2018, 12:45)  Просто полный набор штампов: SD - плохо, лучше SPI Вы похоже не умеете читать... Где я писал что "плохо" или "хорошо"? Ещё раз- я писал: в большинстве прикладных задач время передачи данных по интерфейсу карты - не принципиально, так как вносит очень малый вклад в общее быстродействие задачи. Если есть что сказать по теме - расскажите в каких таких задачах бОльшая скорость чтения по SDIO принесёт заметный плюс? Цитата(aaarrr @ Sep 11 2018, 12:45)  Это для PIC16 актуально, а не для STM32F4. Это актуально для чего угодно, пока не изобрели МК с бесконечно большим числом ног.
|
|
|
|
|
Sep 11 2018, 14:06
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(jcxz @ Sep 11 2018, 15:31)  И вообще-то отвечаете Вы на пост о системе сбора информации. На кой там чтение??? Думаете, запись не ускорится? Ускорится, просто не так показательно. Цитата(jcxz @ Sep 11 2018, 15:31)  Вы похоже не умеете читать... Где я писал что "плохо" или "хорошо"? Ещё раз- я писал: в большинстве прикладных задач время передачи данных по интерфейсу карты - не принципиально, так как вносит очень малый вклад в общее быстродействие задачи. Вы писали буквльно следущее: Цитата Если уж есть нужда в увеличении скорости обмена с картой, то первым делом нужно от FS избавляться. А это, уж извините, бред. Не вносит FS заметного оверхеда, как раз таки единицы процентов. Цитата(jcxz @ Sep 11 2018, 15:31)  Это актуально для чего угодно, пока не изобрели МК с бесконечно большим числом ног. Так используйте однобитный SD для экономии. SPI - это в любом случае костыль, придуманный в мрачные времена. Да, а ручной подсчет CRC не напрягает?
|
|
|
|
|
Sep 11 2018, 15:21
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(aaarrr @ Sep 11 2018, 17:06)  Думаете, запись не ускорится? Ускорится, просто не так показательно. Ага, не на 2%, а на 1% Какой процент времени при записи на карту составляет время пересылки по интерфейсу в общем времени включения карты+пересылки+ожидания_завершения+выключении? Цитата(aaarrr @ Sep 11 2018, 17:06)  Вы писали буквльно следущее: А это, уж извините, бред. Не вносит FS заметного оверхеда, как раз таки единицы процентов. Да ладно - единицы процента? Вот касательно приведённого выше V_N примера системы сбора данных со сном, предположим что при каждом просыпании система пишет один сектор данных в файл, после чего засыпает. Перед засыпанием закрывает файл, получается - обновляется запись каталога (дата/время файла+размер) и FAT-таблица (размещение). Итого - получаем запись до 3-х секторов вместо одного если бы делали просто на кольцевой цепочке секторов. И не надо выдёргивать мои слова из контекста. Главный смысл их был в том, что выигрыш по скорости обмена по интерфейсу карты незначителен для большинства прикладных embedded-задач. "Прикладная задача" к Вашему сведению - это не запись или чтение файла. Или может Вы в руководствах по эксплуатации своих устройств пишете "оно пишет и читает файлы со встроенной SD". Если карта внутренняя, то заказчику фиолетово - пишет оно файлы или что-то другое, ему важна функция, которую оно реализует. А вот решение этой функции через ФС очень часто приводит к увеличению оверхеда по чтениям/записям. Поэтому я и говорю, что работа с SD наиболее оптимальным для задачи способом, а не обязательно через ФС, может даст гораздо бОльший выигрыш в плане общей скорости работы. Цитата(aaarrr @ Sep 11 2018, 17:06)  Да, а ручной подсчет CRC не напрягает? Вы вообще о чём? Где я писал про ручной CRC?
|
|
|
|
|
Sep 11 2018, 15:34
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(jcxz @ Sep 11 2018, 18:21)  Ага, не на 2%, а на 1%  На 50%, например. Цитата(jcxz @ Sep 11 2018, 18:21)  Да ладно - единицы процента? Вот касательно приведённого выше V_N примера системы сбора данных со сном, предположим... Предположим, спит, предположим, выключает при этом питание, предположим, закрывает и не кэширует. Что еще предположим? Цитата(jcxz @ Sep 11 2018, 18:21)  "Прикладная задача" к Вашему сведению - это не запись или чтение файла. Или может Вы в руководствах по эксплуатации своих устройств пишете "оно пишет и читает файлы со встроенной SD".  Вы, надо полагать, в руководствах пишете: "для извлечения информации со встроенной SD-карты воспользуйтесь утилитой XXX (протестировано на Windows 7, требует прав администратора)". Цитата(jcxz @ Sep 11 2018, 18:21)  Если карта внутренняя, то заказчику фиолетово - пишет оно файлы или что-то другое, ему важна функция, которую оно реализует. Внутренняя - это как? Как на фото выше, намертво припаянная? Такого вообще не должно быть. Цитата(jcxz @ Sep 11 2018, 18:21)  Вы вообще о чём? Где я писал про ручной CRC?  А где я писал про включение-выключение питания?
|
|
|
|
|
Sep 11 2018, 17:37
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(aaarrr @ Sep 11 2018, 18:34)  Вы, надо полагать, в руководствах пишете: "для извлечения информации со встроенной SD-карты воспользуйтесь утилитой XXX (протестировано на Windows 7, требует прав администратора)". Я ничего не пишу, так как встроенная карта == неизвлекаемая карта. Цитата(aaarrr @ Sep 11 2018, 18:34)  Внутренняя - это как? Как на фото выше, намертво припаянная? Такого вообще не должно быть. Может объясните это Micron-у, что его e.MMC чипов не должно быть? Оне же намертво припаиваются! как можна! Да и обычная карта может находиться внутри корпуса устройства, без возможности снятия. И не обязательно припаиваться. Цитата(aaarrr @ Sep 11 2018, 18:34)  А где я писал про включение-выключение питания? Вы даже не соизволили обратить внимание к чему относился мой пост на который Вы изначально решили ответить? Если бы соизволили, то увидели бы что это был ответ на сообщение системе сбора данных на SD с режимом энергосбережения. И изначально я спрашивал: приведите реальные примеры где высокая скорость обмена по интерфейсу даст реальный выигрыш. На что и был приведён тот пример. Стоит хоть немного читать то, на что отвечаешь....
|
|
|
|
|
Sep 11 2018, 18:28
|

Частый гость
 
Группа: Свой
Сообщений: 162
Регистрация: 12-01-09
Из: Харьков
Пользователь №: 43 270

|
Цитата Вот касательно приведённого выше V_N примера системы сбора данных со сном, предположим что при каждом просыпании система пишет один сектор данных в файл, после чего засыпает. Перед засыпанием закрывает файл, получается - обновляется запись каталога (дата/время файла+размер) и FAT-таблица (размещение). Итого - получаем запись до 3-х секторов вместо одного если бы делали просто на кольцевой цепочке секторов. Файл не закрывается, питание с карты не снимается, дописывется 16 кбайт в конец файла( каждые пол часа проводится закрытие файла ). Частота ЦП скорость SDIO оптимизированы с целью увеличения времени непрырывной работы . Конкретно в этом примере переход отSPI к SDIO даловозможность увеличить время автономной работы .
|
|
|
|
|
Sep 11 2018, 18:44
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(jcxz @ Sep 11 2018, 20:37)  Может объясните это Micron-у, что его e.MMC чипов не должно быть? Оне же намертво припаиваются! как можна!  Стесняюсь спросить, а почему, например, не Samsung'у или Toshib'е? Цитата(jcxz @ Sep 11 2018, 20:37)  Да и обычная карта может находиться внутри корпуса устройства, без возможности снятия. И не обязательно припаиваться. Карты превращаются в eMMC, а потом снова в карты. Но в ящике. Цитата(jcxz @ Sep 11 2018, 20:37)  Вы даже не соизволили обратить внимание к чему относился мой пост на который Вы изначально решили ответить? Если бы соизволили, то увидели бы что это был ответ на сообщение системе сбора данных на SD с режимом энергосбережения. Почему же, обратил. И именно в вашем ответе внезапно возникло включение и выключение питания карты. Но и до этого много прекрасного, не мог пройти мимо: Цитата SDIO мало где реально нужно в embedded области. Цитата А писать это дело в FatFS, внутренние операции которой Вы не контролируете - это стрелять себе в ногу. Цитата 25МГц - это всего-лишь SCLK. При этом получается скорость передачи около 1МБ/сек. Очень сильно постараться надо, чтобы получилось настолько плохо. Цитата значительно бОльший расход пинов В 1-битном режиме он таки меньше
|
|
|
|
|
Sep 11 2018, 19:17
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(V_N @ Sep 11 2018, 21:28)  Файл не закрывается, питание с карты не снимается, Тогда о чём разговор? Зачем тогда процессор усыплять если невыключенная карта сожрёт в разы больше энергии? И если файл не закрывается, то что с этим файлом будет если карту возьмут и выдернут когда этот файл не закрыт? Или у Вас она - встроенная и её нельзя внезапно выдернуть? Так ув. aaarrr запретил так делать! И если Вы не послушались aaarrr и она всё-таки встроенная, то зачем тогда там вообще ФС? Цитата(V_N @ Sep 11 2018, 21:28)  Конкретно в этом примере переход отSPI к SDIO даловозможность увеличить время автономной работы . Ну да - а невыключение карты сократило это время в разы больше чем получили выигрыш от SDIO. Опять экономия на пуговицах. Цитата(aaarrr @ Sep 11 2018, 21:44)  В 1-битном режиме он таки меньше И можно обойтись всего одним пином??? Нет? А с SPI - можно (дополнительным CS), так как это - шина, и на неё можно повесить несколько слэйвов.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|