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

 
 
> 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
Сергей Борщ
сообщение Sep 10 2018, 21:15
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
jcxz
сообщение Sep 11 2018, 05:23
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 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 раза, а общее быстродействие вырастет на пару %. А цена при этом - значительно бОльший расход пинов.
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
|- - 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


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 04:46
Рейтинг@Mail.ru


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