Программирование Файловые системы IAR EW ARM: работа с файловой системой FAT на карточках SD/MMC (с использованием библиотеки EFSL) Tue, March 19 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

IAR EW ARM: работа с файловой системой FAT на карточках SD/MMC (с использованием библиотеки EFSL) Печать
Добавил(а) microsin   

Проект предназначен для IAR Embedded Workbench for ARM 5.20 и отладочной платы Olimex SAM7-EX256 (хотя может работать и на любом другом устройстве с минимальной косметической правкой).

Здесь демонстрируется чтение файловой системы карточек SD/MMC с помощью библиотеки EFSL (см. [6]). Карточка SD подключена к SPI0 микроконтроллера AT91SAM7X256 (точно так же, как в примере USB Mass Storage Device). У меня заработала SD-карточка на 512 мегабайт, а на 16 мегабайт карточка MMC почему-то не заработала. Ошибка была не в карте и не в последовательном интерфейсе, так как Mass Storage Device на этой карте работало, и объем этой карточки определялся правильно. Что-то не сложилось в EFSL (может, из-за файловой системы FAT12?). 

MMC_SD02.JPG MMC_SD01.JPG

Примеры вариантов подключения карты SD/MMC к микроконтроллеру ARM7 (AT91SAM7X128, AT91SAM7X256, AT91SAM7X512) приведены в таблице ниже. Можно подключить карту либо к SPI0, либо к SPI1. Например, в макетной плате Olimex SAM7-EX256 используется вариант 1 подключения карты SD/MMC. Для макетной платы AT91SAM7X можно выбрать любой вариант подключения, соответствующим образом настроив порты и SPI. Для подключения сигнала выборки ~CS существует еще больше вариантов, так как каждый из SPIn имеет по 4 аппаратных выхода выборки.


конт.

сигнал
описание
Вариант 1 подключения
(SPI0, PIOA, периферия A)
Вариант 2 подключения
(SPI1, PIOA, периферия B)
1 ~CS выборка карты (режим DAT3 не используется) PA13 PA21
2 MOSI данные, приходящие на вход карты PA17 PA23
3 GND минус питания карты, сигнальная земля
4 VCC плюс питания карты, от 2.7 до 3.6 вольт, самый лучший вариант 3 вольта
5 SCK такты данных, поступающие на вход карты PA18 PA22
6 GND минус питания карты, сигнальная земля
7 MISO данные, уходящие с выхода карты (DAT0) PA16 PA24
8 не используется (DAT1)
9 не используется (DAT2)

Чтобы заработал индикационный светодиод, показывающий обращение к карточке (он подключен к ножке 66 процессора), не забудьте ввести макроопределение OlimexDBG. Поведение библиотеки EFSL настраивается в файле efsl_0_2_7\inc\config.h. Проект нужно компилировать для работы во flash (почему-то в sram у меня библиотека EFSL глючила), и размер HEAP надо задать не меньше 0x1200 байт, иначе вызовы подпрограмм библиотеки EFSL будут производить вываливание в Undefined_Handler. Библиотека EFSL, как выяснилось, штука довольно капризная. Скачать проект arm-basic-efsl можно здесь.

Чтобы EFSL заработала на любой платформе, не только ARM (говорят, что EFSL работает на PC (GNU/Linux, среда разработки), TMS C6000 DSP от Texas instruments и ATMega от Atmel), нужно выполнить следующее:
1. Добавить код низкого уровня, который пишет и читает 512-байтовый сектор у карточки SD/MMC.
2. Для работы непосредственно EFSL (не считая памяти, которая уйдет на основную программу) требуется 1 кбайт RAM, остальная RAM может использоваться дополнительно как кэш (чем больше кэш, тем выше быстродействие). Это требование, наверное, самое жесткое - тут отсеивается сразу много разновидностей микроконтроллеров.
3. Попрыгать с бубном вокруг файла config.h и опций компиляции (настройка HEAP, оптимизация кода и т. п.), чтобы библиотека наконец заработала.

[Ссылки]

1. Другая популярная реализации файловой системы для микроконтроллеров - Petit FAT File System Module. См. также FatFs Generic FAT File System Module, как использовать SD/MMC.
2. Polymuson - отличная разработка, позволяющая проигрывать WAV-файлы на флешке (музыкальный звонок). Применена платная библиотека FlashFile в виде бинарника mmc_fat.r90 (фирмы Progressive Resources LLC, http://www.priio.com). Сайт автора Полимузона часто недоступен, содержимое статьи можно скачать здесь. При известном упорстве на пиратских развалах можно раскопать исходники библиотеки FlashFile и скомпилировать код самому, не используя mmc_fat.r90 (подсказка - ищите файл avr_sd.rar). При компиляции под IAR EW AVR библиотека FlashFile требует размер CLIB HEAP 0x300 и размер CSTACK 0x100.
3. MMC/SD ansteuern mit AVR.
4. AVR-DOS, под BASCOM-AVR.
5. ARM MP3/AAC Player (AT91SAM7S256).
6. Библиотека EFSL. Сайт авторов библиотеки efsl.be.

 

 

Добавить комментарий


Защитный код
Обновить

Top of Page