IAR EW ARM работи с файлова система FAT на SD карти

Проектът е предназначен за IAR Вградена работна маса за ARM 5.20 и разработка Olimex SAM7-EX256 (въпреки че може да работи на всяко друго устройство с минимално козметично ощипване).

Той демонстрира четене на файловата система на картата SD/MMC използвайки библиотеката EFSL (виж [6]). Карта SD свързан с SPI0 микроконтролер AT91SAM7X256 (точно както в примера с USB устройство за масово съхранение). Взех 512 мегабайтова SD карта, но по някаква причина MMC картата не работи за 16 мегабайта. Грешката не е била в картата или в серийния интерфейс, тъй като устройството за масово съхранение на тази карта е работило и обемът на тази карта е бил открит правилно. Нещо не се получи в EFSL (може би заради файловата система FAT12?).

работи

файлова

Примери за опции за свързване на SD/MMC карта към ARM7 микроконтролер (AT91SAM7X128, AT91SAM7X256, AT91SAM7X512) са показани в таблицата по-долу. Можете да свържете картата към някоя от двете SPI0, или да SPI1. Например в макет Olimex SAM7-EX256 опция 1 се използва за свързване на SD/MMC карта. За платката за разработка на AT91SAM7X можете да изберете всяка опция за свързване, като конфигурирате съответно портовете и SPI. За да свържете дискретизиращ сигнал

CS има още повече опции, тъй като всеки SPIn има 4 изхода за хардуерно вземане на проби.

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

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