AnsweredAssumed Answered

i.MXRT1060 problem with the vector table address

Question asked by Armand Ciejak on Jun 22, 2020
Latest reply on Jun 22, 2020 by Kerry Zhou

Hello,

 

We are using the i.MX RT1060 with Zephyr and mcuboot.We had a problem when booting with the ENET driver enabled: the system triggered the NMI and therefore failed to boot. After 2 weeks of investigation I discovered that the problem is related to the vector table.

 

The system boots from a NOR flash attached to the first FlexSPI interface. mcuboot is placed at the beginning of the flash (0x60000000) and Zephyr after it at 0x60040000. The vector table for Zephyr is located in the NOR flash at 0x60040200. When Zephyr starts it correctly set the VTOR register to 0x60040200 but whenever IRQ 114 triggers the CPU jumps to the NMI. I checked the vectors in the table and they are all correct.

 

According to http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0646b/BABIFJFG.html  the alignment of the vector table address is sufficient.

 

If I change the address of the vector table to 0x60040100 or 0x60040400 everything works fine.

 

Here is what I observed: when the vector table is at offset 0x60040200 any interrupt with IRQ above 111 (from 112 to 159) does not trigger its vector but its vector - 128, e.g. ENET IRQ (114) do not jump to vector 130 but to vector 2 (130 - 128) which is the NMI.

 

It is a known problem? or is there other constraint on the vector table address?

Outcomes