Andrew Jackman wrote:
>
> Do you know of any projects that nicely exemplify coding for NEON, the
> DSP, and the 3D accelerator? Thanks!
>
For NEON there isn't much out there. When I started I just had a list of
the NEON compiler intrinsics and started hacking. Reading compiler
output and talking to the folks on the IRC channel helped a lot. If you
already know SSE or AltiVec a bit it's easy.
For code-examples: This project is very nice:
http://code.google.com/p/math-neon/
The ffmpeg source code is an excellent read as well.
For OpenGL: There are lots of OpenGL tutorials out there and the
OpenGL|ES 2.0 spec can be downloaded on the khronos site. OpenGL|ES 2.0
is really just a cleaned up version of OpenGL with obscure stuff removed
and a streamlined API.
For DSP.. well - read the TI documentation. Everything is documented
somewhere. The real problem is that there is to much documentation. It's
easy to get overwhelmed by the sheer amount of documentation. Thousands
of pages..
Unfortunately I can't help to get started. Four years ago, when I
started DSP coding for the DaVinci platform, someone from TI came to my
place, installed all nessesary stuff and helped me to get started. On
the beagleboard I just compiled one of the examples from the linuxutils
package and started hacking. For me that was easy because I already knew
what I need and what can be ignored.
Regarding DSP-code itself: The compiler compiles C and C++. You won't
get stellar performance if you don't optimize for the architecture, but
the code will run. The biggest deal will be the DSP<->ARM communication.
When it comes to DSP optimization I found these PDF's to be essential:
Compiler User's Guide:
http://focus.ti.com/lit/ug/spru187o/spru187o.pdf
C work-alikes for the compiler intrinsics (not complete!)
http://www-s.ti.com/sc/psheets/spraa75/spraa75.zip
On Hand-Tuning and Optimization (must read!)
http://focus.ti.com/lit/an/spra666/spra666.pdf
Instruction Set Reference:
http://focus.ti.com/lit/ug/spru732h/spru732h.pdf
That's ... ehm.. 3000 pages or so of information...
Afterwards check the EDMA3 user's guide (very important if you need high
performance) and the implementation details on the integer division (the
best piece of C64x+ code I've ever seen)
http://focus.ti.com.cn/cn/lit/ug/spru966b/spru966b.pdf
http://www.ti.com/litv/pdf/spra707
Don't let the complexity overwhelm you. Start simple and keep hacking.
It took me two years of hard work to really understand the architecture.
Good luck,
Nils Pipenbrinck