Other Parts Discussed in Thread: OMAP-L138, SYSBIOS, TCA6416, OMAPL138, TMS320C6452
Hi,
I want to use my ARM9 on the OMAP-L138 to do peripheral work such as sending/receiving I2C/SPI/UART messages, while the DSP calculates stuff and communicates via MessageQ with the ARM side. For the I2C/SPI/UART driver EDMA is used and therefore I downloaded the EDMA LLD as well.
My RTSC setup:
- XDCtools version 3.20.8.88
- EDMA3 ow Level Driver (2.11.0)
- Inter-processor Communication (1.22.5.27)
- PSP DRIVERS (2.10.1)
- SYS/BIOS (6.31.4.27)
Now I've got the following problem: The Sample Code for ARM9 executes when the platform ti.platforms.evmOMAPL138 is selected. I need different memory mappings though to perform Inter Process Communication between the processors, therefore I want to use the platform ti.sdo.ipc.examples.platforms.evmOMAPL138.arm and the .dsp version which are provided by the IPC Multiprocessor MessageQ example. With this platform I'm getting an assertion.
1) As said the I2CSample project works with ti.platforms.evmOMAPL138.
2) I2CSample project doesn't work with ti.sdo.ipc.examples.platforms.evmOMAPL138.arm I get the following assertion during a Stream_write(...):
CONSOLE:
EDMA driver initialization PASS.
I2C Sample Application
I2C :Start of I2C sample application
Stream_create(outHandle) returned status = 0
Stream_create(inHandle) returned status = 0
I2C exapnder/LEDs write/read test started
ti.psp.i2c.I2c: line 2688: E_timeOut: Error in Timeout
ti.sysbios.gates.GateMutex: line 114: assertion failure: A_badContext: bad calling context. See GateMutex API doc for details.
xdc.runtime.Error.raise: terminating execution
There is not much difference in the platform files. Only in the memory mapping of the ARM program code (using 0xC3000000 for 1) and using 0xC0000000 for 2), which seems to be the only difference I see).
The I2C Example includes
var Edma = xdc.loadPackage("ti.sdo.edma3.drv.sample");
This package (...\Texas Instruments\edma3_lld_02_11_01_02\packages\ti\sdo\edma3\drv\sample) includes the initialization of the EDMA3 and has plenty of code referring to and handling platform names of which I'm not sure what exactly is done. Maybe this is a starting point but it's only a guess.
Thanks for any help on this,
Stefan