Цитата(Oleg_IT @ Dec 22 2010, 20:10)

LPC2478. Разобрался с MassStorage с SD картой, но скорость, мягко говоря, низкая, на LPC 33-35 ед., та же карта с кардридером ~5000 ед. Как заставить эту парочку быстрее работать?
Для этого надо быстро закидывать в трубу чанки, а не щелкать клювом.
Если упрощенно, то когда хост забирает у вас первый чанк 64 байта, он тут же требует следующий чанк. Если вы его не предоставите в течении 43 мкс (для FS), то планировщик хоста решит, что ваш девайс тормозит безмерно и в следующий раз запросит у него чанк только в следующем фрейме, т.е. через 1 мс, или даже через фрейм. Так что для тормозных девайсов предел скорости обмена - 64 кбайт/сек, а в действительности еще меньше. А если будете подсовывать чанки оперативно, без жевания соплей, то хост может забрать у вас до 19 чанков за один фрейм, это дает в пределе 1216 кбайт/сек для FS.
На практике используется два буфера. Пока хост выкачивает чанк из одного буфера, вы заполняете второй, а потом ваша USB железяка мгновенно и автоматически меняет их местам, как только хост выкачал чанк и потребовал следующий. При скорости 12 Мбит/сек хост выкачивает чанк в 64 байта примерно за 43 мкс . Вот за это время вам надо успеть заполнить второй буфер. Не успели - кирдык, будете загорать как минимум до следующего фрейма.