Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с SD/MMC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Paramon
Нажмите для просмотра прикрепленного файла
/собрано по ссылкам и информации с этого форума/
Как то раз я задавал вопрос по __SWI.(Здесь не реализовано)
Но перед этим мне было необходимо заставить работать SD/MMC (AT91SAM7S256 от OLIMEX)
Вот сырая, но рабочая заготовка. Сделана мной криво. Это просто проба.
Ради бога не бейте сильно.
Может кому-то нужно (как было нужно мне)
Это для KEIL (uVision3 V3.20a). Конечнно старьё!
под ARTX.



Возник вопрос: Требуется заставить эту штуку понимать длинные имена файлов.
Пока непонятно как это сделать.
Поднимать документацию по FAT и переписывать всё? Или есть возможность воспользоваться чем-то практически готовым как в этом примере?

с уважением PARAMON!
etoja
Длинные имена файлов соответствуют спецификации FAT32.
Paramon
Прошу прощения - я поспешил!
Сейчас стал испытывать копирование...
Не работает sad.gif

/вот текст с терминала/
SD/MMC/test>dir
TEST1 ( 0 bytes )
MANUAL PDF ( 346004 bytes )
SD/MMC/test>copy /test/manual.pdf /test/test1/manual.pdf
SD/MMC/test>cd /test/test1
SD/MMC/test/test1>dir
MANUAL PDF ( 176188 bytes ) /размер файла не тот 01.gif
SD/MMC/test/test1>

за основу применил ARM7_efsl_0_2_7.

кусок кода:
/*copy*/
else if(strcmp(cmdwork,scmd_copy) == 0)
{
if(file_fopen( &filer,&(efs.myFs), cmdparam, 'r') == 0)
{
file_fopen( &filew,&(efs.myFs), cmdparam2, 'w');
while((e = file_read(&filer,512,buf)))
{
file_write(&filew,strlen((char*)buf),buf);
};
file_fclose(&filer);
file_fclose(&filew);
fs_umount(&(efs.myFs));
};
}

может чтото не так?
Paramon
Цитата(Paramon @ Jul 27 2007, 13:38) *
Прошу прощения - я поспешил!
Сейчас стал испытывать копирование...
Не работает sad.gif

/вот текст с терминала/
SD/MMC/test>dir
TEST1 ( 0 bytes )
MANUAL PDF ( 346004 bytes )
SD/MMC/test>copy /test/manual.pdf /test/test1/manual.pdf
SD/MMC/test>cd /test/test1
SD/MMC/test/test1>dir
MANUAL PDF ( 176188 bytes ) /размер файла не тот 01.gif
SD/MMC/test/test1>

за основу применил ARM7_efsl_0_2_7.

кусок кода:
/*copy*/
else if(strcmp(cmdwork,scmd_copy) == 0)
{
if(file_fopen( &filer,&(efs.myFs), cmdparam, 'r') == 0)
{
file_fopen( &filew,&(efs.myFs), cmdparam2, 'w');
while((e = file_read(&filer,512,buf)))
{
file_write(&filew,strlen((char*)buf),buf); //изменённая строка
};
file_fclose(&filer);
file_fclose(&filew);
fs_umount(&(efs.myFs));
};
}

может чтото не так?


прошу прощения !
там,где надпись "изменённая строка"
надо поставить: file_write(&filew,e,buf);
Ведь правдо сказано:
круглое - носим
квадратное - катаем
эта проблема решена!



Попробывал удаление фалов:
/*erase*/
else if(strcmp(cmdwork,scmd_erase) == 0)
{
rmfile(&(efs.myFs),cmdparam);
}
Работает, но вот незадача...
Каким образом удалять директории? 01.gif
Что использовать из примера?
etoja
Не суетись.
Paramon
Изменено, хотя мусора так же достаточно!
Paramon
Убрал немного мусора и
добавил инициализацию при установке SD/MMC.


Пока не получается удалять дирекорию.
Можно ли средствами efsl_0_2_7 реализовать это?
Сам разобраться пока немогу.

Заранее благодарен!
Paramon
По подобию удаления файла сделал удаление папки
Заработало!?? Возникают сомнения в правильности моих действий.
Может надо подругому?
Подскажите пожалуйста!!!!
/и устранил ошибку защиты от записи в примере/
Paramon
Длинные имена файлов пока не научился поддерживать 01.gif
Проверить правильность удаления папки (RMDIR) проверить нет возможности.
Может кто-нибудь поскажет?

Спасибо!
Paramon
RMDIR - похоже, что корректно работает!
Спасибо за наводку на ссылки!
/"SD -Card программная реализация" я и раньше был там , но кое-чего не углядел/
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.