omap

Ducati for OMAP5


I'm quite familiar with the Ducati framework for OMAP4. I'd like to know if there is any difference in the Ducati framework for OMAP5. Because, in OMAP4, I had viewed the trace logs - trace0 and trace1. But, in OMAP5, only trace0 is available. There are not much documents available on this online.


Solution

  • This isn't really an OMAP4 vs OMAP5 difference. The Ducati subsystem is made of 2 ARM Cortex M cores (2xM3 on OMAP4, 2xM4 on OMAP5). The initial implementation of the RTOS (on OMAP4) did not support SMP, so each M core was running its own RTOS instance, and its own image. Each core was indeed running a different image which was loaded by remoteproc.

    the trace0 and trace1 refered to the running Cortex M core ID, each image was using a different ID. The MPU side could send messages to either one or the other core, explicitly.

    The RTOS running on the Ducati cores (aka TI SYS/BIOS) was later improved and support for SMP was added. For Android OMAP 'releases' that transition happened in OMAP5 timeframe. So the RTOS on OMAP5 Android release was running a single image which was aware of the 2 Cortex M cores, and was able to schedule tasks on 1 core or the other. As a consequence there was a single 'trace' instance (trace0). The MPU would then 'see' the Ducati as a single subsystem, and would send all messages to this instance (instead of sending to either core0 or core1). The messages on the Ducati subsystem would then be dispatched to the right task/thread which was running on one core or the other.

    I said it wasn't an OMAP4 vs OMAP5 difference, since the SMP aware SYSBIOS was also available on OMAP4 at some point (as well as in non Android linux releases).