Цитата(jcxz @ Aug 16 2017, 22:06)

Я не знаю как обстоит дело в данном МК, но допускаю наличие небольшого write buffer-а либо в ядре либо где-то на межшинных гейтах.
Да, в варианте с выключенным кэшем про dsb/dmb как-то я забыл, а буфер таки есть - если все сбросить в память, то и невыровненный доступ не работает:
Вот теперь полный порядок

- все работает точно, как должно быть в теории.
Кстати про буфер:
DDI0489D_cortex_m7_trm_5.8.2.pdf ( 612.04 килобайт )
Кол-во скачиваний: 36Цитата
Иногда так бывает. А потом когда немного изменишь алгоритм и вдруг начинает глючить совершенно неожиданно в неожиданных местах. И потом думаешь "а как оно вообще работало?"

Да, редко, но бывает. В принципе основные нюансы выяснил, и теория в общем-то совпадает с практикой. Остался один "скользкий момент" описанный в п.5.8.1 Cortex-M7 TRM:
DDI0489D_cortex_m7_trm_5.8.1.pdf ( 329.98 килобайт )
Кол-во скачиваний: 54 Т.е. в теории запись может таки пройти мимо кэша, в реальности этого не наблюдаю (или оно каким-то образом таки собирает байты в слова в этом случае - может тот же буфер работает?). Не люблю я таких моментов, в принципе можно переделать на доступ 16ти или даже 32х битными словами, заодно и чуть быстрее будет.
Цитата
PS: А байтовый DMA в эту область работает нормально? Если конечно он есть в ПО...
Нет, несколько DMA с SDRAM только 32битными словами у меня работают. Да и как он может на запись напрямую работать без NBL_x? Тут как по мне все очевидно.
Цитата(skripach @ Aug 17 2017, 02:41)

Биты ШД можно менять только впределах байта.
Если в общем случае, то да, но если доступ к памяти будет только 16битными словами, то не вижу проблем. Более того в этом случае NBL_x у SDRAM можно просто посадить на землю и освободить две ноги у МК.
Основной вопрос был, как будет обработан байтовый доступ в этом случае - ответы найдены. Всем спасибо!