|
stm32f4 + Chan's FatFS, работа с большими SD картами |
|
|
|
 |
Ответов
|
Sep 10 2018, 00:00
|

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

|
QUOTE (jcxz @ Sep 6 2018, 12:52)  Вы не поверите, но и на приём - тоже можно!  Поверю! QUOTE (jcxz @ Sep 6 2018, 12:52)  SDIO мало где реально нужно в embedded области. Как я понимаю, SDIO даёт более высокую скорость, ведь SPI это только 25 МГц максимум + полупрограммные издержки. Мне пришлось делать на SPI, т.к. дали такое железо. Если бы я имел право выбирать, то настоял бы на SDIO, т.к. придерживаюсь принципа: аппаратный блок справится с задачей лучше, чем софтварная реализация. Хотя, есть исключения.
--------------------
Выбор.
|
|
|
|
|
Sep 10 2018, 07:56
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(haker_fox @ Sep 10 2018, 03:00)  Как я понимаю, SDIO даёт более высокую скорость, ведь SPI это только 25 МГц максимум + полупрограммные издержки. О каких издержках речь? 25МГц - это всего-лишь SCLK. При этом получается скорость передачи около 1МБ/сек. Можете привести пример в каких именно embedded-задачах (на МК из заголовка темы) дальнейшее увеличение скорости передачи выше означенного 1МБ/сек приведёт к заметному увеличению скорости работы прикладной задачи с картой? Не тест скорости, не высосанную из пальца задачу - сферического коня в вакууме, а реальную задачу? Скажем: чтение конфига-файла и старт устройства по SPI выполнялся за 2 секунды, а та же задача, но по SDIO - 1 секунда? Могу Вас разочаровать, но при таких скоростях обмена, значительную величину начинает занимать остальная обработка (не собственно задержка связанная с передачей) и низкоуровневого драйвера SD и всего что выше него. Тем более там ещё FatFS болтается. И увеличение в скорости передачи карты даст выигрыш общей производительности прикладной задачи всего несколько % в большинстве embedded-задач. Если уж есть нужда в увеличении скорости обмена с картой, то первым делом нужно от FS избавляться. Цитата(haker_fox @ Sep 10 2018, 03:00)  Мне пришлось делать на SPI, т.к. дали такое железо. Если бы я имел право выбирать, то настоял бы на SDIO, т.к. придерживаюсь принципа: аппаратный блок справится с задачей лучше, чем софтварная реализация. Так SPI-контроллеры обычно тоже в МК аппаратные, не надо ногодрыгать. Да и правильно что Вам дали, так как "аппаратный блок справится с задачей лучше" - не аргумент. Не блок справляется с задачей, а программист. А при выборе способа решения исходят из того сколько то или иное решение займёт ресурсов (времени МК, количества ног или интерфейсов). И какие из этих ресурсов наиболее важные/дефицитные в данной задаче. А какой-то блок там справится или нет - не аргумент, не справиться может только программист.
|
|
|
|
|
Sep 10 2018, 10:08
|

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

|
QUOTE (jcxz @ Sep 10 2018, 15:56)  О каких издержках речь? Да хотябы циклически ждать (до 64 циклов SCLK) отклик от карты (R0, R1...). Это же надо отправлять по шине 0xff, читать данные, и проверять MSB. По любому нужно либо прерывание каждый принятый байт дёргать (и там проверять), либо в основном цикле. Я не знаю иного способа. Считаю, что это издержки. QUOTE (jcxz @ Sep 10 2018, 15:56)  Можете привести пример в каких именно embedded-задачах (на МК из заголовка темы) дальнейшее увеличение скорости передачи выше означенного 1МБ/сек приведёт к заметному увеличению скорости работы прикладной задачи с картой? Не тест скорости, не высосанную из пальца задачу - сферического коня в вакууме, а реальную задачу? К сожалению, нет. Всё вышесказанное является лишь моим мнением. QUOTE (jcxz @ Sep 10 2018, 15:56)  Так SPI-контроллеры обычно тоже в МК аппаратные, не надо ногодрыгать. Да, но SPI, на мой взгляд, является "побочным" интерфейсом для SD-карты, идущим из далёкого прошлого. Поэтому, если есть SDIO в МК, его лучше использовать. QUOTE (jcxz @ Sep 10 2018, 15:56)  Да и правильно что Вам дали Ну дали не потому, что это правильно. А банально не осталось свободных пинов у МК. Вот на SPI и навесили "остатки". А мне потом ещё пришлось доводить систему на макетке - добавить буфер (т.к. внутреннюю шину просто вывели на улицу, что вносило сбой в работу при установке карты, а также давало возможность подпитывать её паразитным питанием) и сделать некоторые другие доработки. QUOTE (jcxz @ Sep 10 2018, 15:56)  А какой-то блок там справится или нет - не аргумент, не справиться может только программист.  Ну как посмотреть. Где-то на форуме уважаемый Rst7 лет 10 назад приводил код, который отправляет, и (не очень стабильно) принимает манчестер для 10 Мбит Ethernet. Для этого использовался аппаратный UART. Ну если он справился да ещё и на 8-битной AVR'ке, почему бы в современных "толстых" армах не использовать подобное решение. Не везде ведь нужно 100 или более Мбит. А UART'ов даже в маленьком МК Cortex-M0 как правило не менее двух. И если будет работать неправильно, то - программист плохой. Не смог(((
--------------------
Выбор.
|
|
|
|
|
Sep 10 2018, 11:30
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(haker_fox @ Sep 10 2018, 13:08)  Да хотябы циклически ждать (до 64 циклов SCLK) отклик от карты (R0, R1...). Это же надо отправлять по шине 0xff, читать данные, и проверять MSB. По любому нужно либо прерывание каждый принятый байт дёргать (и там проверять), либо в основном цикле. Я не знаю иного способа. Считаю, что это издержки. Не надо. Драйвер естественно должен использовать DMA. По завершению блока DMA анализировать полученные данные с SD и искать там первый не 0xFF. Программно это очень незначительно по времени, так как в цикл-е про-AND-ить 32-битные данные - ерунда. Цитата(haker_fox @ Sep 10 2018, 13:08)  Ну дали не потому, что это правильно. А банально не осталось свободных пинов у МК. Вот на SPI и навесили "остатки". Вот я об этом и говорю: свободные ноги - это как правило очень ценный ресурс в МК и его дефицит был во всех моих проектах. Тем более - на SPI легко можно объединить несколько устройств на одной шине. А с SDIO - придётся пины только под SD отдать. И зачем? А какое-то там "удобство" - это вопрос больше в компетентности программиста - ну будет немного больше строчек кода и всего-то. Цитата(haker_fox @ Sep 10 2018, 13:08)  Ну как посмотреть. Где-то на форуме уважаемый Rst7 лет 10 назад приводил код, который отправляет, и (не очень стабильно) принимает манчестер для 10 Мбит Ethernet. Для этого использовался аппаратный UART. Ну если он справился да ещё и на 8-битной AVR'ке, почему бы в современных "толстых" армах не использовать подобное решение. Не везде ведь нужно 100 или более Мбит. А UART'ов даже в маленьком МК Cortex-M0 как правило не менее двух. И если будет работать неправильно, то - программист плохой. Не смог((( Ну вообще-то - не могу знать о каком Ethernet идёт речь. Есть множество внешних Ethernet-чипов с логикой Ethernet внутри. И если такой Ethernet предполагает подключение по UART - то так и следует подключать. О чём разговор? Мы в каких-то из своих проектов использовали внешний чип Ethernet с подключением по SPI и что? Хотя при этом в МК был аппаратный Ethernet и даже со встроенной физикой. Но по требованиям ТЗ он не походил. Поставили внешний.
|
|
|
|
|
Sep 11 2018, 05:23
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(Сергей Борщ @ Sep 11 2018, 00:15)  Я мимо проходил, протокола не знаю, просто смотреть последний байт блока недостаточно? Я тонкостей уже не помню, но насколько помню байт статуса там передаётся только один раз. По смещению от 0-го до некоторого N-го клока SCLK от конца фрейма. Да и вроде он имеет смещение кратное 8 клокам. Цитата(haker_fox @ Sep 11 2018, 02:43)  Вернее не просто CLK, а 0xff передавать на карту?! Естественно. Команды должны отсутствовать. Цитата(haker_fox @ Sep 11 2018, 02:43)  Я вас понял, из двух разрешённых интерфейсов вы просто предпочитаете использовать тот, который наиболее удобен. При прочих равных требованиях - всегда предпочитаю использовать тот интерфейс, который требует меньше ресурсов. Так как их всегда не хватает. Чтоб потом не переделывать всё. Сколько тут на форуме уже слышал воплей от новичков "девайс уже сделан, и когда делали не подумали что нужно будет ещё и это и то, а теперь ног/интерфейсов/памяти/... не хватает. И как мне прикостылить ещё и эту плюшку ведь заказчику очень нуно?". Единственный плюс SDIO в сравнении с SPI - бОльшая низкоуровневая скорость. А как я говорил выше - для embedded это редко реально нужно. Да и низкоуровневая скорость, при использовании кучи довесок сверху в виде ФС и пользовательского кода, в результате скорей всего будет очень мало влиять на общее быстродействие системы. Увеличите low level скорость в 2 раза, а общее быстродействие вырастет на пару %. А цена при этом - значительно бОльший расход пинов.
|
|
|
|
Сообщений в этой теме
klen stm32f4 + Chan's FatFS Aug 1 2018, 20:40 Genadi Zawidowski кэши, выравнивание... Все там работает. Версию пон... Aug 1 2018, 20:52 Integro Поддерживаю, работал с одной из последних версий, ... Aug 2 2018, 08:04 klen спасибо!
вроде заработало.
тестировался на шес... Aug 3 2018, 07:27  Grape Цитата(klen @ Aug 3 2018, 10:27) ...
еще ... Aug 27 2018, 13:19 Genadi Zawidowski Вот мой конфиг, служит хорошо. За FF_USE_FASTSEEK ... Aug 3 2018, 07:36 klen здравcтуйте.
с помощью такой то матери дописал sdi... Aug 26 2018, 15:38  mantech Цитата(klen @ Aug 26 2018, 18:38) ... теп... Aug 27 2018, 08:00   aaarrr Цитата(mantech @ Aug 27 2018, 11:00) А во... Aug 27 2018, 08:25    klen дело в том что платы летают+вибрируют, и иногда с ... Aug 27 2018, 09:06     Arlleex Цитата(klen @ Aug 27 2018, 12:06) я сам н... Aug 27 2018, 12:36      Obam Цитата(Arlleex @ Aug 27 2018, 15:36) Изи ... Aug 27 2018, 15:50       Arlleex Цитата(Obam @ Aug 27 2018, 18:50) Ну, есл... Aug 27 2018, 15:57        mantech Цитата(Arlleex @ Aug 27 2018, 18:57) Да д... Sep 6 2018, 19:10         Arlleex Цитата(mantech @ Sep 6 2018, 22:10) Так-т... Sep 7 2018, 14:15          mantech Цитата(Arlleex @ Sep 7 2018, 17:15) Они ф... Sep 7 2018, 16:44       MrYuran Цитата(Obam @ Aug 27 2018, 18:50) Ну, есл... Aug 31 2018, 12:12 haker_fox Тоже недавно сделал свой драйвер для SD. Правда дл... Aug 31 2018, 01:42 AlanDrakes Гарантия есть. Она в самой команде CMD25, которая ... Aug 31 2018, 08:55 haker_fox QUOTE (AlanDrakes @ Aug 31 2018, 16:55) П... Aug 31 2018, 10:04 AlanDrakes Помнится мне, что вся работа с секторами происходи... Sep 3 2018, 16:27 Genadi Zawidowski Цитата"Пиши вот это, вот сюда, в таком-то кол... Sep 3 2018, 19:31 haker_fox QUOTE (Genadi Zawidowski @ Sep 4 2018, 03... Sep 4 2018, 01:50 AlanDrakes Пилил я как-то свой тест скорости карточек. Не опт... Sep 4 2018, 05:34 haker_fox QUOTE (AlanDrakes @ Sep 4 2018, 13:34) Ес... Sep 5 2018, 14:08  jcxz Цитата(haker_fox @ Sep 5 2018, 17:08) С S... Sep 6 2018, 04:52   klen Цитата(jcxz @ Sep 6 2018, 07:52) Вы не по... Sep 6 2018, 17:05    aaarrr Цитата(klen @ Sep 6 2018, 20:05) Почему о... Sep 6 2018, 18:29    jcxz Цитата(klen @ Sep 6 2018, 20:05) SDIO мож... Sep 7 2018, 04:40     Axel Цитата(jcxz @ Sep 7 2018, 07:40) ...Заказ... Sep 8 2018, 04:02      jcxz Цитата(Axel @ Sep 8 2018, 07:02) В общем ... Sep 8 2018, 11:01 aaarrr Цитата(haker_fox @ Sep 10 2018, 03:00) SP... Sep 10 2018, 00:37  haker_fox QUOTE (aaarrr @ Sep 10 2018, 08:37) 50, h... Sep 10 2018, 01:34   aaarrr Цитата(haker_fox @ Sep 10 2018, 04:34) Мо... Sep 10 2018, 15:13    haker_fox QUOTE (jcxz @ Sep 10 2018, 19:30) Не надо... Sep 10 2018, 14:33     jcxz Цитата(haker_fox @ Sep 10 2018, 17:33) Т.... Sep 10 2018, 20:23      haker_fox QUOTE (jcxz @ Sep 11 2018, 04:23) Почитай... Sep 10 2018, 23:43      haker_fox QUOTE (jcxz @ Sep 11 2018, 13:23) Естеств... Sep 11 2018, 06:35       jcxz Цитата(haker_fox @ Sep 11 2018, 09:35) Чт... Sep 11 2018, 06:51 V_N ЦитатаЕдинственный плюс SDIO в сравнении с SPI - б... Sep 11 2018, 07:46 jcxz Цитата(V_N @ Sep 11 2018, 10:46) Вы не пр... Sep 11 2018, 09:10  aaarrr Цитата(jcxz @ Sep 11 2018, 12:10) И сколь... Sep 11 2018, 09:45   jcxz Цитата(aaarrr @ Sep 11 2018, 12:45) На чт... Sep 11 2018, 12:31    aaarrr Цитата(jcxz @ Sep 11 2018, 15:31) И вообщ... Sep 11 2018, 14:06     haker_fox QUOTE (aaarrr @ Sep 11 2018, 22:06) Так и... Sep 11 2018, 14:16     jcxz Цитата(aaarrr @ Sep 11 2018, 17:06) Думае... Sep 11 2018, 15:21      aaarrr Цитата(jcxz @ Sep 11 2018, 18:21) Ага, не... Sep 11 2018, 15:34       jcxz Цитата(aaarrr @ Sep 11 2018, 18:34) Вы, н... Sep 11 2018, 17:37        aaarrr Цитата(jcxz @ Sep 11 2018, 20:37) Может о... Sep 11 2018, 18:44       Aner QUOTE (aaarrr @ Sep 11 2018, 18:34) Внутр... Sep 11 2018, 18:17 haker_fox QUOTE (jcxz @ Sep 11 2018, 14:51) Не особ... Sep 11 2018, 08:16 V_N ЦитатаВот касательно приведённого выше V_N примера... Sep 11 2018, 18:28 jcxz Цитата(V_N @ Sep 11 2018, 21:28) Файл не ... Sep 11 2018, 19:17  aaarrr Цитата(jcxz @ Sep 11 2018, 22:17) И можно... Sep 11 2018, 19:37   jcxz Цитата(aaarrr @ Sep 11 2018, 22:37) Забыл... Sep 11 2018, 19:53    aaarrr Цитата(jcxz @ Sep 11 2018, 22:53) Хммм...... Sep 11 2018, 20:03     jcxz Цитата(aaarrr @ Sep 11 2018, 23:03) Разум... Sep 11 2018, 20:40      aaarrr Цитата(jcxz @ Sep 11 2018, 23:40) А по де... Sep 11 2018, 20:53 haker_fox QUOTE (jcxz @ Sep 12 2018, 03:17) и она в... Sep 12 2018, 00:26 jcxz Цитата(haker_fox @ Sep 12 2018, 03:26) Я ... Sep 12 2018, 05:56  aaarrr Цитата(jcxz @ Sep 12 2018, 08:56) И если ... Sep 12 2018, 08:21   jcxz Цитата(aaarrr @ Sep 12 2018, 11:21) А нич... Sep 12 2018, 08:55    aaarrr Цитата(jcxz @ Sep 12 2018, 11:55) Несколь... Sep 12 2018, 10:33 V_N ЦитатаТогда о чём разговор? Зачем тогда процессор ... Sep 12 2018, 06:13 jcxz Цитата(V_N @ Sep 12 2018, 09:13) Запитанн... Sep 12 2018, 06:35  haker_fox QUOTE (jcxz @ Sep 12 2018, 14:35) И винов... Sep 12 2018, 07:50 Genadi Zawidowski ЦитатаДля особо одаренных пользователей ( карта на... Sep 12 2018, 07:11 V_N ЦитатаЦитатаКак-то странно делать выводы о потребл... Sep 12 2018, 09:24 haker_fox QUOTE (jcxz @ Sep 12 2018, 16:55) Я прост... Sep 12 2018, 09:40 Arlleex Мне все-таки нужна консультация, чем отличается SD... Sep 12 2018, 11:45 haker_fox QUOTE (Arlleex @ Sep 12 2018, 19:45) Если... Sep 12 2018, 12:04 aaarrr Цитата(Arlleex @ Sep 12 2018, 14:45) Если... Sep 12 2018, 12:13
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|