реклама на сайте
подробности

 
 
> stm32f4 + Chan's FatFS, работа с большими SD картами
klen
сообщение Aug 1 2018, 20:40
Сообщение #1


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Здравсвуйте!
с флехами размером 4 гигабайта работает все хорошою с большими 16/32 и тд начинаются глюки.
при отладке выловил в функции clst2sect что индекс сектора становится выше диапазона и FatFS вываливается с ошибкой FR_INT_ERR
это я что то не так делаю или это не только у меня?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
haker_fox
сообщение Sep 10 2018, 00:00
Сообщение #2


Познающий...
******

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



QUOTE (jcxz @ Sep 6 2018, 12:52) *
Вы не поверите, но и на приём - тоже можно! smile3009.gif

Поверю! rolleyes.gif
QUOTE (jcxz @ Sep 6 2018, 12:52) *
SDIO мало где реально нужно в embedded области.

Как я понимаю, SDIO даёт более высокую скорость, ведь SPI это только 25 МГц максимум + полупрограммные издержки.
Мне пришлось делать на SPI, т.к. дали такое железо. Если бы я имел право выбирать, то настоял бы на SDIO, т.к. придерживаюсь принципа: аппаратный блок справится с задачей лучше, чем софтварная реализация. Хотя, есть исключения.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 10 2018, 07:56
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 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-контроллеры обычно тоже в МК аппаратные, не надо ногодрыгать.
Да и правильно что Вам дали, так как "аппаратный блок справится с задачей лучше" - не аргумент. Не блок справляется с задачей, а программист. А при выборе способа решения исходят из того сколько то или иное решение займёт ресурсов (времени МК, количества ног или интерфейсов). И какие из этих ресурсов наиболее важные/дефицитные в данной задаче. А какой-то блок там справится или нет - не аргумент, не справиться может только программист. laughing.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Sep 10 2018, 10:08
Сообщение #4


Познающий...
******

Группа: Свой
Сообщений: 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) *
А какой-то блок там справится или нет - не аргумент, не справиться может только программист. laughing.gif

Ну как посмотреть. Где-то на форуме уважаемый Rst7 лет 10 назад приводил код, который отправляет, и (не очень стабильно) принимает манчестер для 10 Мбит Ethernet. Для этого использовался аппаратный UART. Ну если он справился да ещё и на 8-битной AVR'ке, почему бы в современных "толстых" армах не использовать подобное решение. Не везде ведь нужно 100 или более Мбит. А UART'ов даже в маленьком МК Cortex-M0 как правило не менее двух. И если будет работать неправильно, то - программист плохой. Не смог(((


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 10 2018, 11:30
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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 и даже со встроенной физикой. Но по требованиям ТЗ он не походил. Поставили внешний.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Sep 10 2018, 14:33
Сообщение #6


Познающий...
******

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



QUOTE (jcxz @ Sep 10 2018, 19:30) *
Не надо. Драйвер естественно должен использовать DMA. По завершению блока DMA анализировать полученные данные с SD и искать там первый не 0xFF. Программно это очень незначительно по времени, так как в цикл-е про-AND-ить 32-битные данные - ерунда.

Т.е. вы предлагаете при ожидании отклика просто вычитать априори 8 байт (64 цикла). Затем, по завершению посылки, найти первый с MSB=0? Я просто не предполагал, что так можно. Я думал, что как только мы встретили первый не 0xff, то следует сразу остановиться, и перевести cs в 1. Гм... если это так, то просто супер!!!
QUOTE (jcxz @ Sep 10 2018, 19:30) *
А какое-то там "удобство" - это вопрос больше в компетентности программиста - ну будет немного больше строчек кода и всего-то.

Пока остаюсь при своём мнении. Ведь время программиста тоже денег стоит. И проект ещё сопровождать надо. И исправлять ошибки. И добавлять функции. А так - бухнул сразу чип, подходящий по периферии, и всё.
QUOTE (jcxz @ Sep 10 2018, 19:30) *
Ну вообще-то - не могу знать о каком Ethernet идёт речь.

Вот, самый первый пост. Буквально несколько первых предложений. Хотя, давно это было. И при более внимательном чтении вспомнил, что у Rst7 всё-таки не получилось полностью реализовать программно-аппаратный PHY.


Помню, давным давно, на AVR'ках делали программный USB device, HID. Вот мне тут подумалось, что такое можно сделать в одной из недорогих поделок на STM32F051. Правда я хочу 2 CDC (композит). Но, наверно, ничего не получится. Но пока прицениваюсь. Это как раз тот случай, когда аппаратный модуль просто отсутствует.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 10 2018, 20:23
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(haker_fox @ Sep 10 2018, 17:33) *
Т.е. вы предлагаете при ожидании отклика просто вычитать априори 8 байт (64 цикла). Затем, по завершению посылки, найти первый с MSB=0? Я просто не предполагал, что так можно. Я думал, что как только мы встретили первый не 0xff, то следует сразу остановиться, и перевести cs в 1. Гм... если это так, то просто супер!!!

Нет. Почитайте спецификацию внимательнее - CLK можно гнать сколько угодно. Мой драйвер так и работал. Только не помню - 64 или больше, пока не найдётся !=0xFF.

Цитата(haker_fox @ Sep 10 2018, 17:33) *
Пока остаюсь при своём мнении. Ведь время программиста тоже денег стоит. И проект ещё сопровождать надо. И исправлять ошибки. И добавлять функции. А так - бухнул сразу чип, подходящий по периферии, и всё.

Ну да - это время потом понадобится. Когда ног не хватит и придётся всё переделывать. biggrin.gif
Да и какая разница по затраченному времени - SPI или SD?

Цитата(haker_fox @ Sep 10 2018, 17:33) *

Нет, слишком много буков. Не осилю, после тренировки то. rolleyes.gif
Да и вообще - там похоже что-то странное, вычурное, нетипичное использование периферии. Делать такое нужно или при реальной нужде или как хобби.
А подключение SD на SPI - это вполне себе штатный способ подключения, прописанный в спецификации. Так что это совсем из другой оперы.

Цитата(haker_fox @ Sep 10 2018, 17:33) *
Помню, давным давно, на AVR'ках делали программный USB device, HID. Вот мне тут подумалось, что такое можно сделать в одной из недорогих поделок на STM32F051.

Читал про такое. Тоже имхо - бессмыслица. Ибо - никакого профита на ARM7 в которых как правило есть USB. Во-вторых - там вроде даже не FullSpeed, а LowSpeed да ещё с какими-то ограничениями и косяками (вроде грузит процессор сильно). Т.е. - опять для практического использования бесполезная вещь.
Опять-же - нигде в спецификации USB нет ни слова о реализации через UART. А для SD - SPI есть. laughing.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Sep 10 2018, 23:43
Сообщение #8


Познающий...
******

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



QUOTE (jcxz @ Sep 11 2018, 04:23) *
Почитайте спецификацию внимательнее - CLK можно гнать сколько угодно.

Вернее не просто CLK, а 0xff передавать на карту?!
QUOTE (jcxz @ Sep 11 2018, 04:23) *
А для SD - SPI есть. laughing.gif

Я вас понял, из двух разрешённых интерфейсов вы просто предпочитаете использовать тот, который наиболее удобен.

QUOTE (Сергей Борщ @ Sep 11 2018, 05:15) *
Я мимо проходил, протокола не знаю, просто смотреть последний байт блока недостаточно?

Вроде как нет, отклик на команду появляется однократно в течение 8 байт.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - Сергей Борщ   QUOTE (jcxz @ Sep 10 2018, 14:30) Не надо...   Sep 10 2018, 21:15
|- - jcxz   Цитата(Сергей Борщ @ Sep 11 2018, 00:15) ...   Sep 11 2018, 05:23
|- - 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


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 15:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01555 секунд с 7
ELECTRONIX ©2004-2016