STMicro recently started selling a $20 (US) development board using their 168MHz STM32F407 microcontroller (an ARM Cortex-M4F).
I have one, so I ported the Codec2 code to it. The Cortex-M4 already has some DSP instructions, but the "F" in M4F indicates a floating-point unit, and that makes all the difference in comfortably running Codec2. As a result, the changes made to the Codec2 code (2500bps version) were pretty minimal: 1) replace the malloc calls with static variables 2) replace the KISS FFT routines with ARM's optimized CMSIS DSPLIB 3) change the FFT sizes from 512 to 256 Also, whilst not a change to the Codec2 per se, I had to allocate really large (by embedded standards) stack and heap sizes. (Fail to do this, and one will waste lots of time chasing one's tail trying to debug memory corruption issues.) However, the CPU has 128kBytes of SRAM, so this isn't an issue. The FFT implementation in CMSIS DSPLIB: http://www.onarm.com/cmsis/download/ only supports complex FFT lengths of 16, 64, 256, and 1024. I initially tried using 1024, but ran into some headroom issues. Using 256, the entire encode and decode process seems to take about 7-10 mS for each 20mS audio block. STMicro certainly isn't the only Cortex-M4F licensee. TI, Freescale, Atmel, and quite possible others have (or will have) products on offer, so that provides some price competition. What I like about this is that it means that one could offer a single chip Codec2 solution, ala DVSI's AMBE-2020. Plus, since Codec2 is open-source, it should be practical to run additional simple custom software onboard, rather than pay for and design in yet another micro as one would with the AMBE-2020. ------------------------------------------------------------------------------ RSA® Conference 2012 Save $700 by Nov 18 Register now! http://p.sf.net/sfu/rsa-sfdev2dev1 _______________________________________________ Freetel-codec2 mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freetel-codec2
