Uses for the Cortex-M4 cores on the OMAP5?


The M4 Cores have no special SIMD instructions like a normal DSP or?
 
The M4 Cores have no special SIMD instructions like a normal DSP or?
It doesn't have any instructions that aren't part of ARMv6. It can do the DSP instructions in one cycle, even 32x32->64 MAC, but even that doesn't make it worth very much at such low clock speeds. This has a summary of the instructions:

http://www.imaps.org/chapters/centraltexas/Symposium_Presentations/Introduction%20to%20DSP%20with%20the%20ARM%20Cortex-M4%20Microcontroller%20-%20Feb%202012.pdf
 
I don't see many uses for the M4 on the Pyra. It could be useful as a development platform for people who want to program an M4 (in some hobby project or something). It could be used to make the RGB leds blink or follow some smooth color change pattern.
 
The good thing about these cores is they are very low power, a lot more power efficient than the Cortex-A15. And they are powerful enough to run things like an MP3 or a MOD player, draining a low amount of battery. Just have a look at this MOD player done using an 80 MHz clocked Cortex-M4 microcontroller:

https://www.youtube.com/embed/-8_fD3Wbxiw?feature=oembed

Maybe you could even implement some voice recognition routines, and have them continuosly running while the CPU is off. Doing this you could wake the device with voice commands starting with a word: "OK Pyra On", "OK Pyra Launch MAME", etc, the same way the Motorola Moto X works ("OK Google search cat pictures", "OK Google drive to XXXX"). In fact the Moto X has a separate low power DSP (a C5000 from Texas Instruments IIRC) that is always processing voice commands even while the phone is sleeping.
 
Well if the usual mp3/mod/whatever libraries can be replaced by ones that run on the M4, then there could be indeed some potential power saving for music players and a very minor performance improvement for multi-threaded CPU-limited games with music.

Just like using the DSP instead of the CPU on the Pandora for music could theoretically have the same benefits.

But the fact that it hasn't really happened yet on the Pandora, while the potential performance improvement is much more significant on the Pandora than on the Pyra (music can easily take 5% or more of the single-core Pandora CPU, and all of that could be converted to a higher framerate and less stutter).

Voice recognition: I don't really like that. Perhaps it's somewhat useful for phones: phones don't have any decent input methods and they are often used in a hands-free context where audio is basically the only communication channel. But in my experience voice recognition is even more frustrating than a touch screen keyboard.

But yes, using the M4s for something that is continuously running even when the Pyra is idle, that makes sense. Perhaps a GPS tracker? (when you're hiking with a Pyra in your pocket or backpack, and you want to draw pretty maps of where you have walked) Or something that checks your emails / instant messages. But no: there is not much benefit to do those things on an M4 instead of just on the main CPU, because it only requires a wake-up once every few seconds or so. It would have to be something really continuous, like processing the microphone signal, that would prevent the A15 from reaching power-saving deep sleep states. I can't come up with any useful examples though, besides the already mentioned voice recognition (which I don't think is really useful).
 
Are there any I/O Pins that are left on the Soc and could be utilized by the M4s and could be routed to solderpads somwhere on the border (maybe with pads for gnd and 5/12V line). While the Stock Pyra cannot be used for it, a modded could be used to interface electronics (low level stuff, like serial communication, or IR protocols).
 
Oh, I don't know - 200MHz would be more than enough for my needs (pulling data from a buffer and blitting it unchanged to the screen) but as the Pyra will be dual core, I'll not need the extra M4s anyway!

D.
 
The M4 Cores have no special SIMD instructions like a normal DSP or?
It doesn't have any instructions that aren't part of ARMv6. It can do the DSP instructions in one cycle, even 32x32->64 MAC, but even that doesn't make it worth very much at such low clock speeds. This has a summary of the instructions:

http://www.imaps.org/chapters/centraltexas/Symposium_Presentations/Introduction%20to%20DSP%20with%20the%20ARM%20Cortex-M4%20Microcontroller%20-%20Feb%202012.pdf
And according to this diagram of the OMAP5, there's a dedicated DSP on the chip anyway.

Askarus mentioned the Ducati system, which seems to be availiable in the OMAP5, too. So you use the M4s to access the video and image processing cores?

I don't really understand the need for the M4s, though. Couldn't you also access both of these cores without them?

Anyway, there's gstreamer support for the Ducati System and it seems to work with the OMAP5 already, so that's 1080p H264 en- and decoding for the Pyra.

Maybe you could even implement some voice recognition routines, and have them continuosly running while the CPU is off. Doing this you could wake the device with voice commands starting with a word: "OK Pyra On", "OK Pyra Launch MAME", etc, the same way the Motorola Moto X works ("OK Google search cat pictures", "OK Google drive to XXXX"). In fact the Moto X has a separate low power DSP (a C5000 from Texas Instruments IIRC) that is always processing voice commands even while the phone is sleeping.
I don't really like voice control because it's too loud. Maybe one could use a throat microphone, which are said to pick up whispering even in loud environments…
 
Maybe you could even implement some voice recognition routines, and have them continuosly running while the CPU is off. Doing this you could wake the device with voice commands starting with a word: "OK Pyra On", "OK Pyra Launch MAME", etc, the same way the Motorola Moto X works ("OK Google search cat pictures", "OK Google drive to XXXX"). In fact the Moto X has a separate low power DSP (a C5000 from Texas Instruments IIRC) that is always processing voice commands even while the phone is sleeping.
I don't really like voice control because it's too loud. Maybe one could use a throat microphone, which are said to pick up whispering even in loud environments…
doragasu, would the commands be a problem for you in private?  I don't think I would want to use it in public so as not to annoy or confuse others who might think I was talking to them or myself.

I don't mind voice control, but I would not want to say "ok" everytime.  Maybe "computer" or "Pyra".  It would need to talk back to me with Majel Barrett's voice.

https://www.youtube.com/embed/v9kTVZiJ3Uc?feature=oembed
 
I don't really understand the need for the M4s, though. Couldn't you also access both of these cores without them? Anyway, there's gstreamer support for the Ducati System and it seems to work with the OMAP5 already, so that's 1080p H264 en- and decoding for the Pyra.

AFAIK it's made for exactly that: video and sound en- and decoding.

For me it would be use enough if all the audio/video codecs would be handled via DSP and M4.

Maybe even more.

But yes, using the M4s for something that is continuously running even when the Pyra is idle, that makes sense. Perhaps a GPS tracker? (when you're hiking with a Pyra in your pocket or backpack, and you want to draw pretty maps of where you have walked) Or something that checks your emails / instant messages. But no: there is not much benefit to do those things on an M4 instead of just on the main CPU, because it only requires a wake-up once every few seconds or so. It would have to be something really continuous, like processing the microphone signal, that would prevent the A15 from reaching power-saving deep sleep states. I can't come up with any useful examples though, besides the already mentioned voice recognition (which I don't think is really useful).

There is plenty of use:

A clock that runs all the time and does notifications when you have something in your calender.

A wakeup timer.

Music player.

(Maybe video).

Maybe some phone stuff.

GPS tracking

What about emulation?

Isn't there some stuff an emulator would profit?

At least sound would be a benefit.
 
There is plenty of use:

A clock that runs all the time and does notifications when you have something in your calender.

A wakeup timer.

Music player.

(Maybe video).

Maybe some phone stuff.

GPS tracking

What about emulation?

Isn't there some stuff an emulator would profit?

At least sound would be a benefit.
1. No2. No

3. If someone wanted to spend a lot of time for a small benefit

4. No (not powerful enough)

5. No

6. No

7. If someone wanted to spend a lot of time for a small benefit

Some of the nos could be replaced by "If someone wanted to spend a lot of time for a tiny benefit".
 
There is plenty of use:


A clock that runs all the time and does notifications when you have something in your calender.


A wakeup timer.


Music player.


(Maybe video).


Maybe some phone stuff.


GPS tracking


What about emulation?


Isn't there some stuff an emulator would profit?


At least sound would be a benefit.
1. No
2. No


3. If someone wanted to spend a lot of time for a small benefit


4. No (not powerful enough)


5. No


6. No


7. If someone wanted to spend a lot of time for a small benefit


Some of the nos could be replaced by "If someone wanted to spend a lot of time for a tiny benefit".
D'oh!
 
Maybe you could even implement some voice recognition routines, and have them continuosly running while the CPU is off. Doing this you could wake the device with voice commands starting with a word: "OK Pyra On", "OK Pyra Launch MAME", etc, the same way the Motorola Moto X works ("OK Google search cat pictures", "OK Google drive to XXXX"). In fact the Moto X has a separate low power DSP (a C5000 from Texas Instruments IIRC) that is always processing voice commands even while the phone is sleeping.
I don't really like voice control because it's too loud. Maybe one could use a throat microphone, which are said to pick up whispering even in loud environments…
doragasu, would the commands be a problem for you in private?  I don't think I would want to use it in public so as not to annoy or confuse others who might think I was talking to them or myself.

I don't mind voice control, but I would not want to say "ok" everytime.  Maybe "computer" or "Pyra".  It would need to talk back to me with Majel Barrett's voice.
Or maybe just use a special language when talking to Pyra:

http://roila.org/about/
 
Last edited by a moderator:
And according to this diagram of the OMAP5, there's a dedicated DSP on the chip anyway.
Yeah, but it's weaker than the one in Pandora's SoCs, so probably not really that useful either. More useful than the M4s though, at least outside of a few hypothetical tasks.

Askarus mentioned the Ducati system, which seems to be availiable in the OMAP5, too. So you use the M4s to access the video and image processing cores?

I don't really understand the need for the M4s, though. Couldn't you also access both of these cores without them?

Anyway, there's gstreamer support for the Ducati System and it seems to work with the OMAP5 already, so that's 1080p H264 en- and decoding for the Pyra.
You use a dedicated microcontroller to get low latency/high throughput complex control over other hardware peripherals. So for hard real-time tasks, where it's a lot more expensive to interrupt a big heavy apps processor. Like if you wanted to deal with something generating tens of thousands of interrupts a second, you wouldn't want to do it with the A15s.
 
i'm also interested in how we can write a simple C/C++ program to use the M4s, just for the heck-of-it. i did a little scrounging around and found this:

http://processors.wiki.ti.com/index.php/SYS/BIOS_with_GCC_(CortexM)

first question is, do we have floating point M4's (M4Fs)?

(i'm interested because i've done some work with the bitbox, which uses a stm32f405 (also cortex M4, but lower clockrate of 168MHz, 192KB of RAM, and floating point unit), though i haven't coded anything directly bare metal on it. but 168 MHz is fast enough to send a VGA signal by racing the beam (also because of not enough RAM to store a framebuffer), so 200 MHz would also work ;). but i have no idea if it's connected up to the right things to get the signal out to the graphics card or display, and i wouldn't know how to talk to the M4's in the first place. but start somewhere simple and go someplace else...)
 
I was rhinking of things the M4s might be usefull, when not used in the Pyra. I hope/ expect that the CPU board will be used in the future in other devices. Like for the project of this guy:
https://hackaday.io/project/4042-psio mentioned also here:
https://pyra-handheld.com/boards/th...is-delivered-by-the-cpu-board-directly.77354/
Like using the low power for the "old" PAD functions and use the A15 for, when it's used in the dock as desktop replacement. (should also work with the old Palm III PDA. At least I hope something like this will happen in the future).
I confess that I have not the deep understanding, if that's an even possible concept from the features of tose cores. (I only thought of low power consumption)
 
It did occur to me to wonder if they could be used to run the 4G chip to manage voice calls.
If you wanted to use the Pyra as a phone you would need to have a system set up that could interrupt whatever you were doing when a call comes in, play a ring tone and present an interface that would allow you to handle it. Having at least a portion of that system running independently of the main OS seems like a good idea for that use case.

-Neelix
 
Handling phone is a good one, I also thought about handling sensors/GPS. So you could have a /dev/gps/location device that gives you lon/lat co-ords or something

Would it be possible to have a tiny bootable Linux that only runs on the M4 cores? Might be handy for charging the device whilst "off", or as a streamlined MP3 player? It would keep battery usage down meaning faster charge/longer playing time
 
Back
Top