tda2xx chip, GPIO2_13 can be interrupted on M4, but not on A15, the code is the same, only the interrupt number is different, What should I do, or is there an example in A15
Similarly, I can't interrupt using uart in A15.
Best Regards.
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
tda2xx chip, GPIO2_13 can be interrupted on M4, but not on A15, the code is the same, only the interrupt number is different, What should I do, or is there an example in A15
Similarly, I can't interrupt using uart in A15.
Best Regards.
Hi,
Sorry, I can't find that reference you provided.but I tested interrupt in A15 using the following code:
GPIO:
If you take a look at osal.c, you can find BspOsal_irqXbarConnect(). CPU ID is set based on the macro. Please make sure "__ARM_ARCH_7A__" is set in your A15 build.
void BspOsal_irqXbarConnect(UInt32 xbarInstance, UInt32 intSource) { CSL_XbarIrqCpuId cpuId = CSL_XBAR_IRQ_CPU_ID_IPU1; Int32 retVal = STW_EFAIL; #if defined (__TI_ARM_V7M4__) || defined (BUILD_IPU1_0) || defined (BUILD_IPU1_1) cpuId = CSL_XBAR_IRQ_CPU_ID_IPU1; retVal = STW_SOK; #endif #if defined (BUILD_IPU2_0) || defined (BUILD_IPU2_1) /* Overrides core id if its ipu2, __TI_ARM_V7M4__ is defiend for both IPUs */ cpuId = CSL_XBAR_IRQ_CPU_ID_IPU2; retVal = STW_SOK; #endif #if defined (BUILD_DSP_1) cpuId = CSL_XBAR_IRQ_CPU_ID_DSP1; retVal = STW_SOK; #endif #if defined (BUILD_DSP_2) cpuId = CSL_XBAR_IRQ_CPU_ID_DSP2; retVal = STW_SOK; #endif #if defined (__ARM_ARCH_7A__) cpuId = CSL_XBAR_IRQ_CPU_ID_MPU; retVal = STW_SOK; #endif #if defined (BUILD_ARP32_1) cpuId = CSL_XBAR_IRQ_CPU_ID_EVE1; retVal = STW_SOK; #endif #if defined (BUILD_ARP32_2) cpuId = CSL_XBAR_IRQ_CPU_ID_EVE2; retVal = STW_SOK; #endif #if defined (BUILD_ARP32_3) cpuId = CSL_XBAR_IRQ_CPU_ID_EVE3; retVal = STW_SOK; #endif #if defined (BUILD_ARP32_4) cpuId = CSL_XBAR_IRQ_CPU_ID_EVE4; retVal = STW_SOK; #endif if (STW_SOK == retVal) { CSL_xbarIrqConfigure(cpuId, xbarInstance, (CSL_XbarIrq) intSource); } return; }
Thanks you for your informations,use CSL_xbarIrqConfigure() At the end of BspOsal_irqXbarConnect() . I changed my code use CSL_xbarIrqConfigure() example:
[HOST ] 25.204721 s: ### XDC ASSERT - ERROR CALLBACK START ###
[HOST ] 25.204721 s:
[HOST ] 25.204752 s: assertion failure: A_badThreadType: Cannot call a C runtime library API from a Hwi or Swi thread.
[HOST ] 25.204782 s:
[HOST ] 25.204782 s: ### XDC ASSERT - ERROR CALLBACK END ###
[HOST ] 25.204721 s: ### XDC ASSERT - ERROR CALLBACK START ###
[HOST ] 25.204721 s:
[HOST ] 25.204752 s: assertion failure: A_badThreadType: Cannot call a C runtime library API from a Hwi or Swi thread.
[HOST ] 25.204782 s:
[HOST ] 25.204782 s: ### XDC ASSERT - ERROR CALLBACK END ###
Beacuse i use Vps_printf() in GPS_PPS_GpioIsr()(it's Interrupt service function ) , after delete Vps_printf() , input rise edge on the gpio2_13, A15 breakdown.