[an error occurred while processing this directive]
|
Вопрос по работе DMA у FB535 и BF532.
Предыстория. В текущей поделке употребили BF535, проц не без глюков, но в целом все терпимо кроме непонятности в работе DMA через его PCI. Проблема в том что если ядро проца активно пользует память, то при записи через PCI по DMA, возникают косяки типа пишем кусок в 4к, положим первые 2к пишуца нормально, потом 1к выпал, затем 1к снова нормально записался.
Частота и размер неудачных блоков зависит от того в какую память пишем и какую память ядро при этом интенсивней пользует. Если пишем в его быструю внутреннюю (L2) и проц пользует эту же паямть, то глючит меньше, а если ломимся в медленную SDRAM и ядро пользует SDRAM, то сбоит сильнее.
Интересует это вообще можно как-то разрулить? На данном проце? Или поскольку до SDRAM как нпи старайся идет всего одна шина Д и А, то подобные проблемы не избежны?
Как обстоит дело с другими процами? Например у BF532? Если гонять большие куски данных (десятки килобайт) через PPI, в то время как ядро так же работает с памятью?
Как у техаса? Как хостпорт у 55хх?
Могут ли быть какие-то механизмы буферизации, ведь у ядра большие паузы между обращениями во внешнюю память (код во внутренней L1, она типа двух портовая)?
Или тут неизбежно надо вводить программную синхронизацию и за раз к памяти обращаецо только что-то одно или ядро или DMA?
А то что-то не нашел у аналога упоминаний о подобной проблеме.