Да, если с настройками в цинке все просто - поставил галочку на HPC, указал ширину, потом на PL дизайне поднял два бита AxCACHE как надо и выставил AxPROT, то с CCI немного более мудрёно:
Где-то я слышал, что с каких-то недавних версий CCI включен по умолчанию, не могу найти этому подтверждение, знаю лишь что на 2021.2 мне пришлось его включать самому.
Мораль здесь простая - нужно проверять обязательно.
Да, если с настройками в цинке все просто - поставил галочку на HPC, указал ширину, потом на PL дизайне поднял два бита AxCACHE как надо и выставил AxPROT, то с CCI немного более мудрёно:
нужно записать в регистр цинка LPD_SLCR https://docs.amd.com/r/en-US/ug1087-zynq-ultrascale-registers/lpd_smmu-LPD_SLCR-Register соответствующий AxCACHE бит. Но беда в том что сделать это можно лишь когда APU в ресете. С линуксом xilinx предлагает провернуть это через Register Initialization Table https://docs.amd.com/r/2021.1-English/ug1283-bootgen-user-guide/Zynq-UltraScale-MPSoC-Register-Initialization-Table
Через petalinux tools это выглядит как создание "regs.init" файла со следующим содержимым
И потом упаковка его в образ для запуска
Где-то я слышал, что с каких-то недавних версий CCI включен по умолчанию, не могу найти этому подтверждение, знаю лишь что на 2021.2 мне пришлось его включать самому.
Мораль здесь простая - нужно проверять обязательно.