Pull to refresh

Comments 2

Пара мыслей спросонок. Не претендуя на глубокий смысл, конечно же.

> Max Burst Size – ... Пока этот размер ... записан или прочитан, другие ... не смогут обратиться... .

Наверное, всё-таки, это (по аналогии с сетями) объём данных "сверх пропускной способности", который модуль может прожевать. Но не должен. Иначе бы назывался как-нибудь вроде Min Frame Size (и не имел понятного, по крайней мере для меня, функционального смысла).

В вашем примере с launch_dma_includes() с указателями нигде не используется volatile. Они там все передаются в Xil-функции, где, наверняка, приводятся, но всё же. Возможно, из-за подобного подхода в C-коде у вас не получается работать с кэшами, и приходится их отключать.

Очень интересно было бы посмотреть сколько тактов займёт этот лаунч, если указателям натыкать volatile. По идее столько же, но компилеры умеют удивлять, а любопытство это двигатель прогресса. Впрочем, как и причина травм и преждевременной смерти)))

Сто лет как не занимаюсь ПЛИСами, так что "прошу отнестись с пониманием" ©

  1. Нет, это как раз таки max burst size. Например хотим передать 100 байт, а max burst size равен 64байта, тогда на адресной шине увидем два запроса, один на 64 байта а после короткой паузы ещё один запрос на 36 байт.

  2. Зачастую видел примеры при работе с дма, после его настройки вызывается функция Flush(), которая должна актуализировать все что в кэше. Так что думаю volatile не спасет)

Sign up to leave a comment.

Articles