|
Библиотека файловой системы EFSL |
|
|
|
Oct 24 2006, 06:45
|
Группа: Новичок
Сообщений: 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:*/ } } Кто может подсказать в чем может быть загвоздка? Заранее благодарен!
|
|
|
|
|
Oct 24 2006, 08:54
|
Группа: Новичок
Сообщений: 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, и т.д.) можно забыть?
|
|
|
|
|
Oct 24 2006, 09:46
|
Группа: Новичок
Сообщений: 10
Регистрация: 6-12-05
Пользователь №: 11 887

|
Использую Sharp LH75401.
- Увеличить частоту наврятли получится - SD-карты в качестве носителя - Переписывать библиотеку не хотелось бы, но если другого выхода нет, то придеться.
|
|
|
|
|
Oct 24 2006, 09:47
|
Участник

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

|
Я пробовал на 2148 на SPI0, читал с SD, получалось около 3сек на 1 мегабайт правда читал по 512, да и ссылка была несколько другая (но думаю не принципиально) http://gandalf.arubi.uni-kl.de/avr_project..._arm/index.html
|
|
|
|
|
Oct 24 2006, 13:48
|
Группа: Новичок
Сообщений: 10
Регистрация: 6-12-05
Пользователь №: 11 887

|
Сделал простой тест на время записи/чтения, получилось ~30 КБ/с.
Неужели потери на чтение служебной информации FAT такие объемные?
Полагая что чтение служебной информации FAT, занимает столько же времени сколько и чтение данных, даже переписав функцию чтения не получим значительных изменений.
|
|
|
|
|
Oct 25 2006, 03:51
|

Местный
  
Группа: Свой
Сообщений: 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);
|
|
|
|
|
Oct 25 2006, 07:10
|
Местный
  
Группа: Свой
Сообщений: 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); съедается.
|
|
|
|
|
Oct 30 2006, 12:03
|
Группа: Новичок
Сообщений: 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 ?
|
|
|
|
|
Nov 3 2006, 03:10
|

Местный
  
Группа: Свой
Сообщений: 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 кБ). Переписываются функции записи-чтения сектора и иничиализации переменных фвйловой системы.
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|