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

 
 
 
Reply to this topicStart new topic
> Работа с SD/MMC, наконец то выпало два дня(позавчера и вчера)
Paramon
сообщение Jul 27 2007, 04:09
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



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



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

с уважением PARAMON!

Сообщение отредактировал Paramon - Jul 27 2007, 04:48
Go to the top of the page
 
+Quote Post
etoja
сообщение Jul 27 2007, 07:01
Сообщение #2


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

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Длинные имена файлов соответствуют спецификации FAT32.
Прикрепленные файлы
Прикрепленный файл  fatgen103.pdf ( 164.57 килобайт ) Кол-во скачиваний: 332
 
Go to the top of the page
 
+Quote Post
Paramon
сообщение Jul 27 2007, 09:38
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



Прошу прощения - я поспешил!
Сейчас стал испытывать копирование...
Не работает 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));
};
}

может чтото не так?
Go to the top of the page
 
+Quote Post
Paramon
сообщение Jul 27 2007, 11:25
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



Цитата(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
Что использовать из примера?
Go to the top of the page
 
+Quote Post
etoja
сообщение Jul 27 2007, 11:35
Сообщение #5


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

Группа: Свой
Сообщений: 1 121
Регистрация: 14-01-05
Из: Москва
Пользователь №: 1 952



Не суетись.
Go to the top of the page
 
+Quote Post
Paramon
сообщение Jul 27 2007, 12:46
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



Изменено, хотя мусора так же достаточно!
Go to the top of the page
 
+Quote Post
Paramon
сообщение Jul 30 2007, 07:15
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



Убрал немного мусора и
добавил инициализацию при установке SD/MMC.


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

Заранее благодарен!

Сообщение отредактировал Paramon - Jul 30 2007, 07:16
Go to the top of the page
 
+Quote Post
Paramon
сообщение Jul 30 2007, 09:35
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



По подобию удаления файла сделал удаление папки
Заработало!?? Возникают сомнения в правильности моих действий.
Может надо подругому?
Подскажите пожалуйста!!!!
/и устранил ошибку защиты от записи в примере/
Прикрепленные файлы
Прикрепленный файл  Test_Sam7_SD_ARTX.zip ( 1.19 мегабайт ) Кол-во скачиваний: 100
 
Go to the top of the page
 
+Quote Post
Paramon
сообщение Aug 2 2007, 08:14
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



Длинные имена файлов пока не научился поддерживать 01.gif
Проверить правильность удаления папки (RMDIR) проверить нет возможности.
Может кто-нибудь поскажет?

Спасибо!
Go to the top of the page
 
+Quote Post
Paramon
сообщение Aug 2 2007, 09:18
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 128
Регистрация: 5-10-06
Пользователь №: 20 997



RMDIR - похоже, что корректно работает!
Спасибо за наводку на ссылки!
/"SD -Card программная реализация" я и раньше был там , но кое-чего не углядел/
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 05:40
Рейтинг@Mail.ru


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