Программное прерывание с микроблейзом

Я пытаюсь заставить программное прерывание работать в микроблэйзе, но я вхожу в полный препятствие. Таким образом, в файле xparameter.h, который создается с помощью дизайна Vivado, нет никаких сгенерированных макросов для включенных мной прерываний sw.

Поэтому я начал смотреть на попадание в регистры модуля прерывания. Из таблицы видно, что base_addr+0x0 - это ISR, а base_addr+0x8 - это IER. И тогда есть ИВАР.

Я сделал следующее в коде.

void
software_test( void * args )
{
   uint32_t * isr = (uint32_t * ) XPAR_MICROBLAZE_0_AXI_INTC_BASEADDR;
   isr[0xC/4] = 0x20;
   xil_printf("software test\r\n");
}

int init()
{
   uint32_t * isr = (uint32_t * ) XPAR_MICROBLAZE_0_AXI_INTC_BASEADDR;
   isr[0x114/0x4] = (unsigned)&software_test;

   isr[0x8/0x4] |= 0xFFFFFFF0; /* trying to enable everything */
}

И затем, чтобы начать прерывание, я пытаюсь попасть в регистр ISR

uint32_t * isr = (uint32_t * ) XPAR_MICROBLAZE_0_AXI_INTC_BASEADDR;
isr[0x0/4] = 0x20;

Любая помощь будет принята с благодарностью.

0 ответов

Другие вопросы по тегам