slavka012 0 9 апреля, 2009 Опубликовано 9 апреля, 2009 · Жалоба Это дорого. Я не понимаю -- 150-200 баксов за штуку дорого, а оплачивать работу инженера за один а то и два месяца -- недорого? Не считая расходов на изготовление этих трех... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wano 0 9 апреля, 2009 Опубликовано 9 апреля, 2009 · Жалоба 500кБайт в секунду можно писать без каких-либо ухищрений, просто по одному сектору. Хорошая скорость. USB+FatFS никак быстрее 70 кБайт не вышло :( . Правдо записывал по 150 байт, но файл был всё время открыт. А вот FatFS+MCI вышло быстрее, раза в два. Правдо тестировал на древней SD-шке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 апреля, 2009 Опубликовано 9 апреля, 2009 · Жалоба Да вот меня и удивляет, откуда берутся настолько плохие цифры - ~150кБ/с. Тут в консерватории что-то править надо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Wano 0 9 апреля, 2009 Опубликовано 9 апреля, 2009 · Жалоба Да вот меня и удивляет, откуда берутся настолько плохие цифры - ~150кБ/с. Тут в консерватории что-то править надо. SD на 256 метров, FAT16, пишу по 512 байт 10000 раз ,MCLCLK frequency=6МГц - время минута. Меняю делитель на 12МГц - и один чёрт 40 секунд. Вставляю в ноут 12,8 метра за 110 секунд :) Флэха старая, но не думал что на столько. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 9 апреля, 2009 Опубликовано 9 апреля, 2009 · Жалоба Вставляю в ноут 12,8 метра за 110 секунд :) 12.8 одним куском? Просто удивительные тормоза. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость MALLOY2 10 апреля, 2009 Опубликовано 10 апреля, 2009 · Жалоба Я не понимаю -- 150-200 баксов за штуку дорого, а оплачивать работу инженера за один а то и два месяца -- недорого? Не считая расходов на изготовление этих трех... Ну как я понял здесь инженер и программист одно лицо, да и купив платы надо все равно оплачивать работу программиста. А изготовление 3 таких образцов может быть дешевле 200$. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 10 апреля, 2009 Опубликовано 10 апреля, 2009 · Жалоба Попробовал настроить тактовую на 25Мбит в примере Mci в папке яра. Получил ~22кБита/c по четырехбитной шине с использованием DMA. :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_Mozzhevilov 0 17 апреля, 2009 Опубликовано 17 апреля, 2009 · Жалоба Протестировал FatFS на LPC2478 Исходные данные: FatFS 0.07 + uCOS-II LPC2478: Core CLK 72МГц, MCI CLK - 18МГц, трансфер данных между картой и памятью по DMA. При тестировании производилась запись и чтение файла целиком, и для сравнения - в цикле блоками по 512 байт. При чтении/записи целого файла драйвер использует команды SD карты WRITE_MULTIPLE_BLOCK (CMD25) и READ_MULTIPLE_BLOCK (CMD18). FatFS пишет последовательно столько блоков, сколько их содержится в кластере. При чтении/записи блоками по 512 байт драйвер использует команды WRITE_SINGLE_BLOCK (CMD24) и READ_SINGLE_BLOCK (CMD17). SD Card - 16 MB (размер кластера 4096 байт): Test for read/write speed whole file. File size = 262144 bytes File write time = 770152 mks Write speed = 340425 bytes/sec File read time = 87600 mks Read speed = 3011764 bytes/sec Test for read/write speed with blocks. File size = 262144 bytes Block size = 512 bytes File write time = 5824609 mks Block write time= 11375 mks Write speed = 45007 bytes/sec File read time = 270855 mks Block read time = 528 mks Read speed = 969696 bytes/sec Комментарий. Карта старая, запись длится примерно 10 мс. В Windows для этой же карты разультат на запись 650 кБ/сек, на чтение - 6 МБ/сек. SD Card - 2 GB (размер кластера 32768 байт): Test for read/write speed whole file. File size = 262144 bytes File write time = 290314 mks Write speed = 904593 bytes/sec File read time = 39776 mks Read speed = 6736842 bytes/sec Test for read/write speed with blocks. File size = 262144 bytes Block size = 512 bytes File write time = 1438077 mks Block write time= 2808 mks Write speed = 182336 bytes/sec File read time = 268885 mks Block read time = 524 mks Read speed = 977099 bytes/sec В Windows для этой карты разультат на запись 2200 кБ/сек, на чтение - 12 МБ/сек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorMarx 0 17 апреля, 2009 Опубликовано 17 апреля, 2009 · Жалоба Если интересно, я попробовал чтение на LPC2888/D1. DMA, 4-bit width, 6 MHz clock (больше на на соплях не вышло - CRC ERROR) порлучил чтение сектора за время 0.7 mc. Ядро на частоте 60 MHz. Из-за багов в чипе (DMA останавливается раньше, чем вычитает весь FIFO) пришлось читать 120 двойных слов через DMA и потом остатки из FIFO выгребать вручную. Затем перемещать считанный сектор в буфер, если изначально буфер не выровнен по границе 4 байта. Мало того, перед запуском DMA необходимо сбрасывать data cache, если используется. Если интересуют малые размеры, высокая производительность и не пугает пайка BGA корпусов с шагом 0.5, то рекомендую этот чип. Правда, насколько он хорош, настолько же плохая документация (что характерно для NXP) и велико количество багов самого чипа. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_Mozzhevilov 0 17 апреля, 2009 Опубликовано 17 апреля, 2009 · Жалоба Из-за багов в чипе (DMA останавливается раньше, чем вычитает весь FIFO) пришлось читать 120 двойных слов через DMA и потом остатки из FIFO выгребать вручную. Затем перемещать считанный сектор в буфер, если изначально буфер не выровнен по границе 4 байта. Мало того, перед запуском DMA необходимо сбрасывать data cache, если используется. Можно ли об этом поподробнее. На 2478 столкнулся с непонятным поведением DMA, если адрес в памяти не выровнен на границу 4. Буфер находится во внешней SDRAM, забирается напрямую по DMA в MCI при записи. Иногда DMA просто останавливается, и в MCI возникает TxUnderrun. Причем именно иногда, файл размером 1М Байт может без ошибок записаться 2-3 раза, потом где-то в середине трансфера DMA останавливается. Пока пришлось реализовать запись и чтение из невыровненных буферов через промежуточное копирование во внутренний буфер в области USB RAM, он все равно нужен для записи буферов, содержащихся во внутренней RAM и Flash, не доступных для DMA, но тем не менее потеря производительности есть. Хотелось бы уточнить, описаны где-либо проблемы и ошибки DMA контроллера? В errata этой информации на данный момент нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IgorMarx 0 17 апреля, 2009 Опубликовано 17 апреля, 2009 · Жалоба Я не работал с контроллером на 2478, но думаю, что он должен работать аналогично тому, что на 2888. С ним ситуация такая: он может перемещать блоки данных размером не более 0x1000 "юнитов", где "юнит" может быть байт, слово и двойное слово. Соответственно, для байтов выравнивание не требуется, для слов - выравнивание на границу 2 байта (я это не проверял) и для двойных слов необходимо выравнивание по границе 4 байт. Поскольку MCI FIFO (а впринципе не важно, чъё FIFO) имеет разрядность 32, то для DMA можно использовать только режим чтения (или записи) двойными словами, и как следствие, необходимо иметь буфер, выровненный по границе двойного слова. Забыл добавить - в Errata нет и более серьёзных проблем, чем эти. Далее, DMA реально останавливается, когда FIFO ещё не пустое - видать, при разводке чипа DMA прицепили к сигналу "FIFO наполовину заполнено". Вот он и не дочитывает. И подобного геммороя у NXP полно, странно то, что они не перевыпускают свои даташиты с исправлениями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andy_Mozzhevilov 0 17 апреля, 2009 Опубликовано 17 апреля, 2009 · Жалоба Я не работал с контроллером на 2478, но думаю, что он должен работать аналогично тому, что на 2888. С ним ситуация такая: он может перемещать блоки данных размером не более 0x1000 "юнитов", где "юнит" может быть байт, слово и двойное слово. Да, если Flow control - DMA, если Flow control - периферия, то количество этих юнитов не имеет значения, пока периферия запрашивает - он будет отдавать. Я использовал в своей реализации именно MCI контроллер для flow control. Соответственно, для байтов выравнивание не требуется, для слов - выравнивание на границу 2 байта (я это не проверял) и для двойных слов необходимо выравнивание по границе 4 байт. Поскольку MCI FIFO (а впринципе не важно, чъё FIFO) имеет разрядность 32, то для DMA можно использовать только режим чтения (или записи) двойными словами, и как следствие, необходимо иметь буфер, выровненный по границе двойного слова. У них по документации рулится 2 параметра - burst size и wide. Когда wide для памяти устанавливаю 32 бита, то все нормально, а если 8 - то DMA иногда затыкается. Далее, DMA реально останавливается, когда FIFO ещё не пустое - видать, при разводке чипа DMA прицепили к сигналу "FIFO наполовину заполнено". Вот он и не дочитывает. И подобного геммороя у NXP полно, странно то, что они не перевыпускают свои даташиты с исправлениями. Когда ставил DMA в качестве Flow Control - были проблемы, не забирает последнюю "половинку Fifo". Видимо здесь имеется ввиду именно это. Выше подправил результаты тестов для SD Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vitaliy_ARM 0 17 апреля, 2009 Опубликовано 17 апреля, 2009 · Жалоба Всем спасибо за ответы. Скромные результаты для карточек. Сейчас написал низкоуровневую библиотеку по работе с картами MMC/SD для файловой системы. Использую DMA, частота MCICLK = 24Мгц, запись делаю по четыре блока командой WR_MUL_BLOCK. Размер блока - 512байт. Протестировал на запись флешку - получилось около 550кБайт/с. на чтение - 3Мбайт/с Теперь буду пробовать прикручивать этот драйвер к файловой системе. Пока еще не знаю, к какой... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 20 апреля, 2009 Опубликовано 20 апреля, 2009 · Жалоба Пока еще не знаю, к какой... На lpc2478 FatFs дала скорость раза в четыре больше, чем efsl. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sanek_spb 0 30 апреля, 2009 Опубликовано 30 апреля, 2009 · Жалоба Сейчас написал низкоуровневую библиотеку по работе с картами MMC/SD для файловой системы. Использую DMA, частота MCICLK = 24Мгц, запись делаю по четыре блока командой WR_MUL_BLOCK. Размер блока - 512байт. Протестировал на запись флешку - получилось около 550кБайт/с. на чтение - 3Мбайт/с Теперь буду пробовать прикручивать этот драйвер к файловой системе. Пока еще не знаю, к какой... Странные у вас результаты, правда я старыми картами не балуюсь, но у меня результаты немного другие проц на 8 мгц, скорость чтения 350кбайт/с, запись 190. на 24 в 2.5 раза быстрее, те 450 запись, 850 чтение И при этом карта подключена через СПИ, быстрее не разгонял - было в лом плл включать. По поводу файловых систем - положил болт: мне надо писать одновременно 2 потока данных с разным битрэйтом и читать ещё что-нить. По этому поводу написал свою маленькую фс-ку, пишет двухпотоковые файлы, при этом одновременно можно читать один из двух потоков. Написание заняло 2 часа, час на прогоны. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться