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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Выбор файловой системы для LPC2378, Какую систему лучше выбрать под модуль MCI
ar__systems
сообщение Apr 9 2009, 16:32
Сообщение #16


self made
****

Группа: Свой
Сообщений: 855
Регистрация: 7-03-09
Из: Toronto, Canada
Пользователь №: 45 795



Цитата(Vitaliy_ARM @ Apr 9 2009, 11:23) *
Это дорого.

Я не понимаю -- 150-200 баксов за штуку дорого, а оплачивать работу инженера за один а то и два месяца -- недорого? Не считая расходов на изготовление этих трех...
Go to the top of the page
 
+Quote Post
Wano
сообщение Apr 9 2009, 17:52
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



Цитата(aaarrr @ Apr 9 2009, 16:18) *
500кБайт в секунду можно писать без каких-либо ухищрений, просто по одному сектору.


Хорошая скорость. USB+FatFS никак быстрее 70 кБайт не вышло sad.gif . Правдо записывал по 150 байт, но файл был всё время открыт.
А вот FatFS+MCI вышло быстрее, раза в два. Правдо тестировал на древней SD-шке.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 9 2009, 19:28
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Да вот меня и удивляет, откуда берутся настолько плохие цифры - ~150кБ/с. Тут в консерватории что-то править надо.
Go to the top of the page
 
+Quote Post
Wano
сообщение Apr 9 2009, 22:13
Сообщение #19


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



Цитата(aaarrr @ Apr 9 2009, 21:28) *
Да вот меня и удивляет, откуда берутся настолько плохие цифры - ~150кБ/с. Тут в консерватории что-то править надо.


SD на 256 метров, FAT16, пишу по 512 байт 10000 раз ,MCLCLK frequency=6МГц - время минута. Меняю делитель на 12МГц - и один чёрт 40 секунд. Вставляю в ноут 12,8 метра за 110 секунд smile.gif
Флэха старая, но не думал что на столько.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 9 2009, 22:35
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Wano @ Apr 10 2009, 02:13) *
Вставляю в ноут 12,8 метра за 110 секунд smile.gif

12.8 одним куском? Просто удивительные тормоза.
Go to the top of the page
 
+Quote Post
MALLOY2
сообщение Apr 10 2009, 04:43
Сообщение #21


Знающий
****

Группа: Validating
Сообщений: 838
Регистрация: 31-01-05
Пользователь №: 2 317



Цитата
Я не понимаю -- 150-200 баксов за штуку дорого, а оплачивать работу инженера за один а то и два месяца -- недорого? Не считая расходов на изготовление этих трех...


Ну как я понял здесь инженер и программист одно лицо, да и купив платы надо все равно оплачивать работу программиста. А изготовление 3 таких образцов может быть дешевле 200$.
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Apr 10 2009, 13:55
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Попробовал настроить тактовую на 25Мбит в примере Mci в папке яра. Получил ~22кБита/c по четырехбитной шине с использованием DMA. smile3046.gif


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Apr 17 2009, 07:45
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Протестировал 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 МБ/сек.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
IgorMarx
сообщение Apr 17 2009, 09:17
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 5-10-05
Из: Зеленоград
Пользователь №: 9 268



Если интересно, я попробовал чтение на 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) и велико количество багов самого чипа.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Apr 17 2009, 09:35
Сообщение #25


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(IgorMarx @ Apr 17 2009, 13:17) *
Из-за багов в чипе (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 этой информации на данный момент нет.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
IgorMarx
сообщение Apr 17 2009, 10:02
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 5-10-05
Из: Зеленоград
Пользователь №: 9 268



Я не работал с контроллером на 2478, но думаю, что он должен работать аналогично тому, что на 2888. С ним ситуация такая: он может перемещать блоки данных размером не более 0x1000 "юнитов", где "юнит" может быть байт, слово и двойное слово. Соответственно, для байтов выравнивание не требуется, для слов - выравнивание на границу 2 байта (я это не проверял) и для двойных слов необходимо выравнивание по границе 4 байт. Поскольку MCI FIFO (а впринципе не важно, чъё FIFO) имеет разрядность 32, то для DMA можно использовать только режим чтения (или записи) двойными словами, и как следствие, необходимо иметь буфер, выровненный по границе двойного слова.

Забыл добавить - в Errata нет и более серьёзных проблем, чем эти.

Далее, DMA реально останавливается, когда FIFO ещё не пустое - видать, при разводке чипа DMA прицепили к сигналу "FIFO наполовину заполнено". Вот он и не дочитывает. И подобного геммороя у NXP полно, странно то, что они не перевыпускают свои даташиты с исправлениями.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Apr 17 2009, 10:46
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(IgorMarx @ Apr 17 2009, 14:02) *
Я не работал с контроллером на 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


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Vitaliy_ARM
сообщение Apr 17 2009, 13:47
Сообщение #28


Знающий
****

Группа: Свой
Сообщений: 509
Регистрация: 19-07-07
Из: г. Таганрог
Пользователь №: 29 246



Всем спасибо за ответы.
Скромные результаты для карточек.

Сейчас написал низкоуровневую библиотеку по работе с картами MMC/SD для файловой системы.
Использую DMA, частота MCICLK = 24Мгц, запись делаю по четыре блока командой WR_MUL_BLOCK.
Размер блока - 512байт.
Протестировал на запись флешку - получилось около 550кБайт/с.
на чтение - 3Мбайт/с

Теперь буду пробовать прикручивать этот драйвер к файловой системе.
Пока еще не знаю, к какой...


--------------------
Умные речи подобны строкам, напечатанным курсивом. К. Прутков
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Apr 20 2009, 07:36
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Vitaliy_ARM @ Apr 17 2009, 16:47) *
Пока еще не знаю, к какой...

На lpc2478 FatFs дала скорость раза в четыре больше, чем efsl.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Sanek_spb
сообщение Apr 30 2009, 08:04
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 28-02-07
Пользователь №: 25 746



Цитата(Vitaliy_ARM @ Apr 17 2009, 17:47) *
Сейчас написал низкоуровневую библиотеку по работе с картами MMC/SD для файловой системы.
Использую DMA, частота MCICLK = 24Мгц, запись делаю по четыре блока командой WR_MUL_BLOCK.
Размер блока - 512байт.
Протестировал на запись флешку - получилось около 550кБайт/с.
на чтение - 3Мбайт/с

Теперь буду пробовать прикручивать этот драйвер к файловой системе.
Пока еще не знаю, к какой...


Странные у вас результаты, правда я старыми картами не балуюсь, но у меня результаты немного другие
проц на 8 мгц, скорость чтения 350кбайт/с, запись 190.
на 24 в 2.5 раза быстрее, те 450 запись, 850 чтение
И при этом карта подключена через СПИ, быстрее не разгонял - было в лом плл включать.
По поводу файловых систем - положил болт: мне надо писать одновременно 2 потока данных с разным битрэйтом и читать ещё что-нить. По этому поводу написал свою маленькую фс-ку, пишет двухпотоковые файлы, при этом одновременно можно читать один из двух потоков. Написание заняло 2 часа, час на прогоны.
Go to the top of the page
 
+Quote Post

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

 


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


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