Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Bопрос по АРМ9
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Страницы: 1, 2
aaarrr
Цитата(axa09 @ Feb 26 2009, 18:10) *
Не совсем понял.
команду очистки давать до старта дма, когда уже в буфер(массив в программе) записали данные?

Да.

Цитата(axa09 @ Feb 26 2009, 18:10) *
а если я пишу в этот массив через другое адресное пространство(ремэп) которое кэшировано+буферизовано?

Тогда нужно еще и сбросить кэш, если он write-back.

Цитата(axa09 @ Feb 26 2009, 18:10) *
где и когда следует выполнять префетч для кода?

Как правило, эта процедура выполняется при необходимости "залочить" код в кэше. Просто так большого смысла не имеет.
axa09
Подскажите пожалуйста где здесь функция очистки буфера и сброса кэша которые необходимы в моем случае:

Function/operation Data format Instruction
Invalidate ICache and DCache SBZ MCR p15, 0, <Rd>, c7, c7, 0
Invalidate ICache SBZ MCR p15, 0, <Rd>, c7, c5, 0
Invalidate ICache single entry (MVA) MVA MCR p15, 0, <Rd>, c7, c5, 1
Invalidate ICache single entry (Set/Way) Set/Way MCR p15, 0, <Rd>, c7, c5, 2
Prefetch ICache line (MVA) MVA MCR p15, 0, <Rd>, c7, c13, 1
Invalidate DCache SBZ MCR p15, 0, <Rd>, c7, c6, 0
Invalidate DCache single entry (MVA) MVA MCR p15, 0, <Rd>, c7, c6, 1
Invalidate DCache single entry (Set/Way) Set/Way MCR p15, 0, <Rd>, c7, c6, 2
Clean DCache single entry (MVA) MVA MCR p15, 0, <Rd>, c7, c10, 1
Clean DCache single entry (Set/Way) Set/Way MCR p15, 0, <Rd>, c7, c10, 2
Test and clean DCache - MRC p15, 0, <Rd>, c7, c10, 3
Clean and invalidate DCache entry (MVA) MVA MCR p15, 0, <Rd>, c7, c14, 1
Clean and invalidate DCache entry (Set/Way) Set/Way MCR p15, 0, <Rd>, c7, c14, 2
Test, clean, and invalidate DCache - MRC p15, 0, <Rd>, c7, c14, 3
Drain write buffer SBZ MCR p15, 0, <Rd>, c7, c10, 4
Wait for interrupt SBZ MCR p15, 0, <Rd>, c7, c0, 4
Invalidate TLB Invalidate set-associative TLB SBZ MCR p15, 0, <Rd>, c8, c7, 0
Invalidate TLB single entry (MVA) Invalidate single entry MVA MCR p15, 0, <Rd>, c8, c7, 1
Invalidate instruction TLB Invalidate set-associative TLB SBZ MCR p15, 0, <Rd>, c8, c5, 0
Invalidate instruction TLB single entry (MVA) Invalidate single entry MVA MCR p15, 0, <Rd>, c8, c5, 1
Invalidate data TLB Invalidate set-associative TLB SBZ MCR p15, 0, <Rd>, c8, c6, 0
Invalidate data TLB single entry (MVA) Invalidate single entry MVA MCR p15, 0, <Rd>, c8, c6, 1

Там ещё есть какие-то примерчики, только из описания ничего непонятно что делают и для чего надо:

tc_loop: MRC p15, 0, r15, c7, c10, 3 ; test and clean
BNE tc_loop

tci_loop: MRC p15, 0, r15, c7, c14, 3 ; test clean and invalidate
BNE tci_loop

Помогите плиз!
aaarrr
Цитата(axa09 @ Feb 27 2009, 02:09) *
Подскажите пожалуйста где здесь функция очистки буфера и сброса кэша которые необходимы в моем случае:

В Вашем случае сначала нужно разобраться с работой кэша и составить четкое представление, когда он нужен/полезен, а когда наоборот.
Для буфера, который будет только отправлен наружу через DMA, он однозначно вреден.

Очистка буфера записи:
Код
Drain write buffer SBZ MCR p15, 0, <Rd>, c7, c10, 4
axa09
тоесть Rd должен быть равен нулю:

mov r0, 0
mcr p15, 0, r0, c7, c10, 4

так?

какую бы вы литературу посоветуете по кэшам?
axa09
в чём хорош режим сквозной записи кэша по сравнению с обратной записью?
ведь каждый раз пишем во внешнюю память вместе с кэшем.

раздобыл книгу 'современные микропроцессоры' Корнеев, Киселёв.
кое-что прояснил.
при сквозном кэшировании кэш сбрасывать не надо, что и подтвердилось.

паралельно нашёл про software dma- команды
ldmia
stmia
за один присест сразу 8 слов копирует!
есть ли смысл применить их в функции отрисовки, чтоб быстрее было?

хочу с АРма9 выжать всё smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.