Part Number:OMAP-L138
I have been up and running with a pair of functional applications for a couple years.
1) OMAP-L138 ARM core application: user bootloader
Purpose:Boot the OMAP-L138 DSP core application
After the user bootloader boots the DSP core application, it does not do anything else.
2) OMAP-L138 DSP core application
Purpose: Process incoming messages and send outgoing status messages.
After initialization, the DSP core application uses the power & sleep controller (PSC) to power off the ARM core. It also holds the ARM core in reset.
These are "bare metal" applications. There is no operating system on either core.
Code Composer Studio v6.1.2
C6000 compiler version: 7.4.14
ARM compiler version: 5.2.5
JTAG Emulator: XDS560v2STM via USB
--
Now, I want the ARM core to process some data.
I want the following:
a) DSP core gets data into a shared buffer.
b) DSP core interrupts the ARM core.
c) ARM core runs an interrupt service routine (ISR) to process the data in the shared buffer.
I disabled the code in the DSP application that powers off the ARM core and holds it in reset.
I can run both applications simultaneously.
I can single step through both the ARM application and the DSP application in Code Composer Studio.
I added code the ARM application to set up CHIPINT0:
a) register my ISR with system interrupt event SYSCFG_CHIPINT0 (28)
b) Set channel 3 for CHIPINT0 (28) in CMR7, bits 3:0.
c) Enable IRQ in CPSR
d) Enable global interrupts in GER
e) Enable IRQ host interrupts in HIER
f) Clear CHIPSIG0 via CHIPSIG_CLR
g) Clear CHIPINT0 via SECR1
h) Enable CHIPINT0 interrupt via ESR1 bit 28.
I added code in the DSP application to assert CHIPSIG0 in SYSCFG_CHIPSIG.
When I single-step through the DSP application, the device resets when I execute the line that sets CHIPSIG0.
What could cause this?
How should I troubleshoot this?