Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SD Card Controller DMA
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
sonycman
Приветствую!

Ковыряюсь с файловой системой на карте памяти, думаю задействовать DMA контроллера SD/MMC.

Но вот требование к выравниванию памяти до 32-ух бит портит всю картину.
Для файловой системы невозможно обеспечить выравнивание адреса буфера чтения/записи, соответственно DMA невозможно будет использовать в случае таких адресов.

Может быть, тогда завести промежуточный выровненный буфер, с которым будет работать DMA, а потом копировать из/в него данные по месту назначения?
Но тогда в чем цимес такого DMA, когда все равно приходится работать "ручками"?
cranky.gif
sonycman
Сделал пока так, что DMA работает с выровненным промежуточным буфером в некешируемой области памяти, а я процессором копирую данные на нужный выровненный\невыровненный адрес.

Можно, наверное, для промежуточного буфера использовать часть OnChip памяти, чтобы копирование через memcpy было эффективнее.

Интересно, разве так трудно было сделать, чтобы DMA работало с невыровненными адресами?
Всего-то использовать сигналы byte enable и, наверное, сдвиговый регистр.
Может потом попробую свой модуль для этого написать...
des333
А почему не стали выровненные куски буферов копировать при помощи DMA, а остатки -- "ручками"?
sonycman
Цитата(des333 @ Jun 16 2017, 03:08) *
А почему не стали выровненные куски буферов копировать при помощи DMA, а остатки -- "ручками"?

А как?
Копировать надо из FIFO контроллера SD, к которому тоже доступ должен быть строго выровнен по 32 битам.
С произвольным смещением данные забрать нельзя.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.