[Tremor] Results of Tremolo/Tremor optimizations for AT91SAM7S

Nicholas Vinen hb at x256.org
Sat Dec 6 23:07:09 PST 2008


Hi,

Well, I'm pretty happy with the results of my tweaking. Tremolo now runs
on this 56MHz processor using around 80% of CPU time to decode the
44.1kHz 16bit stereo q=6 test file. That's around 44 million cycles per
second of decoded audio. Not too bad really. RAM usage is about 45KB,
flash usage is around 136KB. I'd like to get it *slightly* faster one
day - perhaps down to to the 40 million cycle range - but this is good
enough IMO.

Here is the code I came up with, in case anybody is interested:

http://x256.org/~hb/Tremolo.AT91SAM7S.tar.bz2
<http://x256.org/%7Ehb/Tremolo.AT91SAM7S.tar.bz2>
With the appropriate tools and libraries, it should compile simply with
an invocation of "make".

Since I don't have a DAC on this board yet, and it's the only ARM CPU I
have, it's hard to verify the output is correct. However, the checksum
I'm generating hasn't changed since I first got the ARM assembly code
working, so I assume it's OK. The output with the ARM assembly code
seems to be different than the pure C code, which I put down to rounding.

My next job, when I have time, is going to be building the DAC and
associated hardware, and testing the code I found for this chip to
communicate with an SD/MMC/SDHC card. Once I get those two going... 
look out Apple. :) 

Seriously though, I do intend to publish code, schematics, board layouts
etc. for anybody who wishes to build their own little portable Vorbis
player. I'll drop the xiph.org guys an e-mail once I get a bit closer.

Thanks for everyone's assistance!



Nicholas



More information about the Tremor mailing list