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

 
 
> STM32L4 + SD + DMA + FatFs
Allregia
сообщение Jul 26 2017, 18:49
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 28-06-07
Из: Israel
Пользователь №: 28 763



Джентельмены, нет ли у кого работающего примера работы SD+FatFs через DMA на L4? Буду очень признателен.

Пробовали пример от STM32L476G_EVAL, но там только в поллинге.
Попробовали пределать под DMA, но пока не работает, читает только первый килобайт а потом ошибка, с записью вообще пока не работает.
В поллинге нет проблем, но он работает только при выключенных прерываниях (оно есть в коде на еваборду).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Jul 28 2017, 22:03
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
buf структуры FIL не помогает

Я два поля упомянул. Чтобы выравнивание работало, надо и саму структуру (структуры) выровнять. И секцию соответственно в скрипье линкера вырповнять.
Я не боролся с выравниванием для DMA, я решал поблемы с DCache.
Цитата
всё равно FatFs при определённых условиях передаёт в функцию записи блока невыровненный указатель

Детский сад... fatfs в исходниках, ловится и дебажится, я без дебагера полдня возился.

Сообщение отредактировал Genadi Zawidowski - Jul 28 2017, 22:11
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Jul 29 2017, 11:11
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Genadi Zawidowski @ Jul 29 2017, 03:03) *
Я два поля упомянул. Чтобы выравнивание работало, надо и саму структуру (структуры) выровнять. И секцию соответственно в скрипье линкера вырповнять.

Да хоть обвыравнивайся. Раз вы не хотите читать по ссылке, я здесь повторю.
Итак. Пишем в в файл последовательно два раза блок размером 971байт. (Блок выровнен).
При этом будут следующие вызовы:
для первого раза:
Код
  disk_write(0, block, sector, 1);       // первый сектор берётся прямо из блока
  disk_write(0, file.buf, sector+1, 1);  // второй сектор пока не полный, поэтому пишется через файловый буфер

для второго раза:
Код
  disk_write(0, file.buf, sector+1, 1);   // дописываем 53 байта во второй сектор (1024-911) (через файловый буфер)
  disk_write(0, block[53], sector+2, 1);  // вот здесь плохо, адрес block[53] - не выровнен на границу слова.

Видите, в четвёртом вызове в функцию disk_write() передан адрес block[53], который, очевидно, не выровнен. (Хотя сам блок выровнен).

Цитата(Genadi Zawidowski @ Jul 29 2017, 03:03) *
Детский сад... fatfs в исходниках, ловится и дебажится, я без дебагера полдня возился.

Не знаю, что вы там отдебажили, разве что переделали FatFs на запись строго через файловый буфер. Но это однозначное уменьшение быстродействия. Думаю, что вы просто не заметили проблемы, потому что у вас настроен побайтовый доступ DMA к памяти.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Allregia   STM32L4 + SD + DMA + FatFs   Jul 26 2017, 18:49
- - Genadi Zawidowski   Есть для не "L" а для "F" htt...   Jul 26 2017, 18:54
- - Allregia   Спасибо, попробую.   Jul 26 2017, 19:24
- - Allregia   Трудно там разобраться, тем более что L4 и F4 немн...   Jul 27 2017, 08:20
- - Genadi Zawidowski   Да, у L проще... так попробовали бы по аналогии......   Jul 27 2017, 08:57
- - Шаманъ   Genadi Zawidowski, а зачем разные размеры источник...   Jul 27 2017, 11:34
|- - AHTOXA   Цитата(Шаманъ @ Jul 27 2017, 16:34) Genad...   Jul 27 2017, 14:46
|- - Шаманъ   Цитата(AHTOXA @ Jul 27 2017, 17:46) А, ту...   Jul 27 2017, 20:03
- - Genadi Zawidowski   Там было много непонятного... много казалось бы ра...   Jul 27 2017, 11:41
|- - Шаманъ   Цитата(Genadi Zawidowski @ Jul 27 2017, 14...   Jul 27 2017, 11:49
- - Genadi Zawidowski   Если посмотришь, у меня только инициализация DMA с...   Jul 27 2017, 11:58
- - Allregia   У L4, как я понял. в DMA нет барста, поэтому так в...   Jul 27 2017, 18:53
|- - AHTOXA   Дело не только и не столько в burst, сколько в пос...   Jul 27 2017, 19:43
|- - Allregia   Цитата(AHTOXA @ Jul 27 2017, 20:43) Дело ...   Jul 29 2017, 08:22
- - Genadi Zawidowski   Используя у себя FatFs R0.12b, дорабатывал напильн...   Jul 28 2017, 17:06
|- - AHTOXA   Выравнивание buf структуры FIL не помогает, всё ра...   Jul 28 2017, 19:28
- - Genadi Zawidowski   невыровненные обращения к фпайлу fatfs делает чере...   Jul 29 2017, 11:29
- - Шаманъ   Народ, может просто сделать RTFM? Отсюда и дальше...   Jul 30 2017, 06:22
|- - AHTOXA   Цитата(Шаманъ @ Jul 30 2017, 11:22) Народ...   Jul 30 2017, 07:37
- - Genadi Zawidowski   ЦитатаНичего править в FatFs надобности нет. Включ...   Jul 30 2017, 06:44
- - Шаманъ   Цитата(Genadi Zawidowski @ Jul 30 2017, 09...   Jul 30 2017, 07:58
|- - Allregia   Джентельмены, мы пишем стрим строго по 8К или 16К ...   Jul 30 2017, 08:05
|- - AHTOXA   Цитата(Шаманъ @ Jul 30 2017, 12:58) Однак...   Jul 30 2017, 08:17
|- - Шаманъ   Цитата(AHTOXA @ Jul 30 2017, 11:17) А как...   Jul 30 2017, 08:43
|- - AHTOXA   Цитата(Шаманъ @ Jul 30 2017, 13:43) Более...   Jul 30 2017, 09:13
|- - Шаманъ   Цитата(AHTOXA @ Jul 30 2017, 12:13) Вот, ...   Jul 30 2017, 09:24
|- - AHTOXA   Цитата(Шаманъ @ Jul 30 2017, 14:24) Так м...   Jul 30 2017, 12:06
- - Genadi Zawidowski   ЦитатаГеннадия доступ к памяти побайтный, и я прив...   Jul 30 2017, 13:29
- - Шаманъ   Цитата(Genadi Zawidowski @ Jul 30 2017, 16...   Jul 30 2017, 15:35


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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 13:40
Рейтинг@Mail.ru


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