kashey 0 24 октября, 2006 Опубликовано 24 октября, 2006 · Жалоба Доброго времени суток! Вот скачав и написав соответствующий драйвер, для имеющегося процессора, удалось запустить EFSL. Но результаты чтения оставляют желать лучшего: ~300 КБ за 15 секунд, и это при максимальной скорости работы SPI на 20МГЦ контроллере. Фрагмент кода чтения файла, взято из примера идущего с библиотекой. while ((e = file_read(&file_w, 16, buf))) { for (i = 0; i < e; i++) { /*TODO:*/ } } Кто может подсказать в чем может быть загвоздка? Заранее благодарен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dm_mur 2 24 октября, 2006 Опубликовано 24 октября, 2006 · Жалоба 20 МГц - это тактовая частота контроллера? У филипков к примеру макс. частота клоков SPI - одна восьмая периферийных клоков, которые меньше или равны тактовой. Кроме того, кроме чтения собственно данных из файла, постоянно читается ФАТ (сектор данных - фат, сектор данных - фат и.т.д.) Так что результат неудивителен. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kashey 0 24 октября, 2006 Опубликовано 24 октября, 2006 · Жалоба 20 МГц - это тактовая частота контроллера? У филипков к примеру макс. частота клоков SPI - одна восьмая периферийных клоков, которые меньше или равны тактовой. Кроме того, кроме чтения собственно данных из файла, постоянно читается ФАТ (сектор данных - фат, сектор данных - фат и.т.д.) Так что результат неудивителен. ... long clk = 20000000; ssp_set_bits_per_word(8); ssp_set_speed(clk / 2); ... Исходя из этого можно предположить, что частота клоков SPI 1/2 Реально если посмотреть осцилографом, то получим ~3МБ/c, но даже если скорость чтения такова и чтение происходит (сектор - фат, ... ), то все равно как то медленно получается... Исходя из вашего ответа, то про эффективное использование EFSL(загрузка полноэкранных картинок 640x480, и т.д.) можно забыть? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dm_mur 2 24 октября, 2006 Опубликовано 24 октября, 2006 · Жалоба Все-таки какой контроллер вы используете? для увеличения скорости можно: - Само собой, увеличить частоту процессора - Использовать не СПИ, а 4-битную шину (если вы пользуете СД-карту) - Не пользовать имеющуюся в файловой системе функцию чтения из файла, а написать более эффективную. Сначала запоминать цепочку кластеров файла и дальше читать уже не обращаясь к фат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kashey 0 24 октября, 2006 Опубликовано 24 октября, 2006 · Жалоба Использую Sharp LH75401. - Увеличить частоту наврятли получится - SD-карты в качестве носителя - Переписывать библиотеку не хотелось бы, но если другого выхода нет, то придеться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
OlegS 0 24 октября, 2006 Опубликовано 24 октября, 2006 · Жалоба Я пробовал на 2148 на SPI0, читал с SD, получалось около 3сек на 1 мегабайт правда читал по 512, да и ссылка была несколько другая (но думаю не принципиально) http://gandalf.arubi.uni-kl.de/avr_project..._arm/index.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kashey 0 24 октября, 2006 Опубликовано 24 октября, 2006 · Жалоба Сделал простой тест на время записи/чтения, получилось ~30 КБ/с. Неужели потери на чтение служебной информации FAT такие объемные? Полагая что чтение служебной информации FAT, занимает столько же времени сколько и чтение данных, даже переписав функцию чтения не получим значительных изменений. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dm_mur 2 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба Сделал простой тест на время записи/чтения, получилось ~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); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alex03 0 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба хм. щас протестировал на скорость свою систему. у меня получилось через 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); съедается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
КонстантинТ 0 25 октября, 2006 Опубликовано 25 октября, 2006 (изменено) · Жалоба Портировал свою файловую систему на SD карточку, основные задержки - в цикле ожидания, те когда записываешь слово по SPI и ждешь его окончания. Выход в использовании DMA или хотя бы использовать весь буфер FIFO. Изменено 25 октября, 2006 пользователем КонстантинТ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dm_mur 2 25 октября, 2006 Опубликовано 25 октября, 2006 · Жалоба Портировал свою файловую систему на SD карточку, основные задержки - в цикле ожидания, те когда записываешь слово по SPI и ждешь его окончания. Выход в использовании DMA или хотя бы использовать весь буфер FIFO. А как в данной ситуации FIFO или DMA могут ускорить работу с картой? Если частота СПИ предельная, то выход в "утолщении" канала связи с картой, т.е. использование не последовательной, а 4-х битной шины СД карты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kashey 0 30 октября, 2006 Опубликовано 30 октября, 2006 · Жалоба хм. щас протестировал на скорость свою систему. у меня получилось через 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) на [email protected] ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergvks 0 2 ноября, 2006 Опубликовано 2 ноября, 2006 · Жалоба Многое ещё зависит от карточки, из того что было под рукой самые лучшие результаты показал трансценд, самые тормозные - кингстон. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
1891ВМ12Я 0 2 ноября, 2006 Опубликовано 2 ноября, 2006 · Жалоба Каков минимальный объём служебной информации, который пишется на SD карту системой EFSL? Можно ли настроить на работу не с SD картой, а например с какой-нибудь другой памятью вроде AT25 и т.п.? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dm_mur 2 3 ноября, 2006 Опубликовано 3 ноября, 2006 · Жалоба Каков минимальный объём служебной информации, который пишется на SD карту системой EFSL? Можно ли настроить на работу не с SD картой, а например с какой-нибудь другой памятью вроде AT25 и т.п.? Служебная информация: MBR (master boot-record 512байт), 1 или 2 таблицы ФАТ (объем зависит от объема флешки), корневой каталог (на запись об 1 файле 32 байта). Да, еще резервированные сектора. К примеру, на SD капрте объемом 512 мбайт на это все уходит 270 кбайт... Можно настроить на работу с любой памятью. Я работал с использованием файловой системы (PRLLC правда а не EFSL) с флешкой AT45DB321 (4МБ) и даже с линейкой из 8 микросхем 24С512 (общий объем 512 кБ). Переписываются функции записи-чтения сектора и иничиализации переменных фвйловой системы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться