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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Библиотека файловой системы EFSL
kashey
сообщение Oct 24 2006, 06:45
Сообщение #1





Группа: Новичок
Сообщений: 10
Регистрация: 6-12-05
Пользователь №: 11 887



Доброго времени суток!

Вот скачав и написав соответствующий драйвер, для имеющегося процессора, удалось запустить EFSL. Но результаты чтения оставляют желать лучшего: ~300 КБ за 15 секунд, и это при максимальной скорости работы SPI на 20МГЦ контроллере.

Фрагмент кода чтения файла, взято из примера идущего с библиотекой.
Код
while ((e = file_read(&file_w, 16, buf)))
    {
        for (i = 0; i < e; i++)
        {
            /*TODO:*/
        }
    }


Кто может подсказать в чем может быть загвоздка?

Заранее благодарен!
Go to the top of the page
 
+Quote Post
dm_mur
сообщение Oct 24 2006, 07:48
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 255
Регистрация: 10-03-05
Из: Омск
Пользователь №: 3 195



20 МГц - это тактовая частота контроллера? У филипков к примеру макс. частота клоков SPI - одна восьмая периферийных клоков, которые меньше или равны тактовой. Кроме того, кроме чтения собственно данных из файла, постоянно читается ФАТ (сектор данных - фат, сектор данных - фат и.т.д.) Так что результат неудивителен.
Go to the top of the page
 
+Quote Post
kashey
сообщение Oct 24 2006, 08:54
Сообщение #3





Группа: Новичок
Сообщений: 10
Регистрация: 6-12-05
Пользователь №: 11 887



Цитата(dm_mur @ Oct 24 2006, 10:48) *
20 МГц - это тактовая частота контроллера? У филипков к примеру макс. частота клоков SPI - одна восьмая периферийных клоков, которые меньше или равны тактовой. Кроме того, кроме чтения собственно данных из файла, постоянно читается ФАТ (сектор данных - фат, сектор данных - фат и.т.д.) Так что результат неудивителен.


Код
...
long clk = 20000000;

ssp_set_bits_per_word(8);
ssp_set_speed(clk / 2);
...


Исходя из этого можно предположить, что частота клоков SPI 1/2

Реально если посмотреть осцилографом, то получим ~3МБ/c, но даже если скорость чтения такова и чтение происходит (сектор - фат, ... ), то все равно как то медленно получается...

Исходя из вашего ответа, то про эффективное использование EFSL(загрузка полноэкранных картинок 640x480, и т.д.) можно забыть?
Go to the top of the page
 
+Quote Post
dm_mur
сообщение Oct 24 2006, 09:26
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 255
Регистрация: 10-03-05
Из: Омск
Пользователь №: 3 195



Все-таки какой контроллер вы используете?

для увеличения скорости можно:

- Само собой, увеличить частоту процессора
- Использовать не СПИ, а 4-битную шину (если вы пользуете СД-карту)
- Не пользовать имеющуюся в файловой системе функцию чтения из файла, а написать более эффективную. Сначала запоминать цепочку кластеров файла и дальше читать уже не обращаясь к фат.
Go to the top of the page
 
+Quote Post
kashey
сообщение Oct 24 2006, 09:46
Сообщение #5





Группа: Новичок
Сообщений: 10
Регистрация: 6-12-05
Пользователь №: 11 887



Использую Sharp LH75401.

- Увеличить частоту наврятли получится
- SD-карты в качестве носителя
- Переписывать библиотеку не хотелось бы, но если другого выхода нет, то придеться.
Go to the top of the page
 
+Quote Post
OlegS
сообщение Oct 24 2006, 09:47
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 38
Регистрация: 28-11-05
Пользователь №: 11 519



Я пробовал на 2148 на SPI0, читал с SD, получалось около 3сек на 1 мегабайт
правда читал по 512, да и ссылка была несколько другая (но думаю не принципиально)
http://gandalf.arubi.uni-kl.de/avr_project..._arm/index.html
Go to the top of the page
 
+Quote Post
kashey
сообщение Oct 24 2006, 13:48
Сообщение #7





Группа: Новичок
Сообщений: 10
Регистрация: 6-12-05
Пользователь №: 11 887



Сделал простой тест на время записи/чтения, получилось ~30 КБ/с.

Неужели потери на чтение служебной информации FAT такие объемные?

Полагая что чтение служебной информации FAT, занимает столько же времени сколько и чтение данных, даже переписав функцию чтения не получим значительных изменений.
Go to the top of the page
 
+Quote Post
dm_mur
сообщение Oct 25 2006, 03:51
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 255
Регистрация: 10-03-05
Из: Омск
Пользователь №: 3 195



Цитата(kashey @ Oct 24 2006, 16:48) *
Сделал простой тест на время записи/чтения, получилось ~30 КБ/с.

Неужели потери на чтение служебной информации FAT такие объемные?

Полагая что чтение служебной информации FAT, занимает столько же времени сколько и чтение данных, даже переписав функцию чтения не получим значительных изменений.


хм. щас протестировал на скорость свою систему. у меня получилось через SPI на LPC2292 порядка 170 кб/сек. Исходники ФАТ у меня от PRLLC. Тест такой:

fp = fopen("work.tmp", READ);
printf ("\r\nначел\r\n");
do
{
i = fgetc(fp);
} while (i != EOF);
printf ("\r\nкончел\r\n");
fclose(fp);
Go to the top of the page
 
+Quote Post
Alex03
сообщение Oct 25 2006, 07:10
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 359
Регистрация: 9-12-05
Пользователь №: 12 034



Цитата(dm_mur @ Oct 25 2006, 09:51) *
хм. щас протестировал на скорость свою систему. у меня получилось через SPI на LPC2292 порядка 170 кб/сек. Исходники ФАТ у меня от PRLLC. Тест такой:

fp = fopen("work.tmp", READ);
printf ("\r\nначел\r\n");
do
{
i = fgetc(fp);
} while (i != EOF);
printf ("\r\nкончел\r\n");
fclose(fp);


Так оно поди всё строчкой
Код
i = fgetc(fp);
съедается.
Go to the top of the page
 
+Quote Post
KostyantynT
сообщение Oct 25 2006, 07:59
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 27-06-05
Из: Киев
Пользователь №: 6 345



Портировал свою файловую систему на SD карточку, основные задержки - в цикле ожидания, те когда записываешь слово по SPI и ждешь его окончания. Выход в использовании DMA или хотя бы использовать весь буфер FIFO.

Сообщение отредактировал КонстантинТ - Oct 25 2006, 08:03


--------------------
Если в сердце дверь закрыта - надо в печень постучать..
Go to the top of the page
 
+Quote Post
dm_mur
сообщение Oct 25 2006, 09:41
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 255
Регистрация: 10-03-05
Из: Омск
Пользователь №: 3 195



Цитата(КонстантинТ @ Oct 25 2006, 10:59) *
Портировал свою файловую систему на SD карточку, основные задержки - в цикле ожидания, те когда записываешь слово по SPI и ждешь его окончания. Выход в использовании DMA или хотя бы использовать весь буфер FIFO.


А как в данной ситуации FIFO или DMA могут ускорить работу с картой? Если частота СПИ предельная, то выход в "утолщении" канала связи с картой, т.е. использование не последовательной, а 4-х битной шины СД карты.
Go to the top of the page
 
+Quote Post
kashey
сообщение Oct 30 2006, 12:03
Сообщение #12





Группа: Новичок
Сообщений: 10
Регистрация: 6-12-05
Пользователь №: 11 887



Цитата(dm_mur @ Oct 25 2006, 07:51) *
хм. щас протестировал на скорость свою систему. у меня получилось через SPI на LPC2292 порядка 170 кб/сек. Исходники ФАТ у меня от PRLLC. Тест такой:

fp = fopen("work.tmp", READ);
printf ("\r\nначел\r\n");
do
{
i = fgetc(fp);
} while (i != EOF);
printf ("\r\nкончел\r\n");
fclose(fp);


А можно скинуть исходники FAT (PRLCC) на kashey@monada.ks.ua ?
Go to the top of the page
 
+Quote Post
sergvks
сообщение Nov 2 2006, 17:38
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 251
Регистрация: 26-07-05
Пользователь №: 7 117



Многое ещё зависит от карточки, из того что было под рукой самые лучшие результаты показал трансценд, самые тормозные - кингстон.
Go to the top of the page
 
+Quote Post
AVR
сообщение Nov 2 2006, 21:46
Сообщение #14


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Каков минимальный объём служебной информации, который пишется на SD карту системой EFSL? Можно ли настроить на работу не с SD картой, а например с какой-нибудь другой памятью вроде AT25 и т.п.?


--------------------
Go to the top of the page
 
+Quote Post
dm_mur
сообщение Nov 3 2006, 03:10
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 255
Регистрация: 10-03-05
Из: Омск
Пользователь №: 3 195



Цитата(AVR @ Nov 3 2006, 00:46) *
Каков минимальный объём служебной информации, который пишется на SD карту системой EFSL? Можно ли настроить на работу не с SD картой, а например с какой-нибудь другой памятью вроде AT25 и т.п.?


Служебная информация: MBR (master boot-record 512байт), 1 или 2 таблицы ФАТ (объем зависит от объема флешки), корневой каталог (на запись об 1 файле 32 байта). Да, еще резервированные сектора. К примеру, на SD капрте объемом 512 мбайт на это все уходит 270 кбайт...

Можно настроить на работу с любой памятью. Я работал с использованием файловой системы (PRLLC правда а не EFSL) с флешкой AT45DB321 (4МБ) и даже с линейкой из 8 микросхем 24С512 (общий объем 512 кБ). Переписываются функции записи-чтения сектора и иничиализации переменных фвйловой системы.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:57
Рейтинг@Mail.ru


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