6
\$\begingroup\$

Does any manufacturer offer a digital signal controller (which basically means a microcontroller with some DSP functionality like a MAC instruction and other stuff) to which I could compile software with GCC? dsPIC apparently use Microchips own C30 compiler which is a GCC spin-off but it is not free (as in free source code).

I'd just need a few ADC channels, two DAC channels and an FPU so nothing too special.

I'd like to try to stay away from single manufacturer toolchains if possible.

\$\endgroup\$
  • 1
    \$\begingroup\$ "free source code", is that free as in "free beer" or free as in "free speech"? \$\endgroup\$ – stevenvh Oct 9 '12 at 10:24
  • \$\begingroup\$ as in free speech. I know several manufacturers offer free (as in beer) toolchains but I'd like to avoid them. \$\endgroup\$ – Dago Oct 9 '12 at 10:32
  • \$\begingroup\$ what about SDCC toolchain? Does it suppoort C30 micros? \$\endgroup\$ – Standard Sandun Oct 9 '12 at 11:32
  • \$\begingroup\$ @Dago: DSP does not mean "basically with FPU" (floating point unit) at all. It's not unusual for a DSP to have only fixed point arithmetic capabilities. What's much more typical for a DSP is Harvard architecture (separation of data and program memories, separate data and program buses). \$\endgroup\$ – Curd Oct 9 '12 at 12:07
  • \$\begingroup\$ Yeah, none of the dsPICs have a FPU. I assumed you really meant to say DSP engine, which is hardware optimized for doing fast convolutions on memory arrays. If you really mean FPU (floating point unit), then your selection will be very much more limited. \$\endgroup\$ – Olin Lathrop Oct 9 '12 at 12:19
3
\$\begingroup\$

You don't mention what sort of power you need, but the AD Blackfin and TI OMAP devices both are supported by open source toolchains (gcc etc). For OMAP, look at OpenEmbedded @ www.openembedded.org/wiki/Main_Page , for Blackfin have a look at ucLinux @ www.uclinux.org/ .

Even if they seem over the top for capability (up to around 1GHz ARM + DSP), they are small and power efficient, e.g. see Gumstix Overo @ www.gumstix.com/store/index.php?cPath=33 for a range of OMAP boards and a good developer community @ gumstix.org ).

OMAP is also used on the Beagleboard, which is a great place to get started.

(Apologies, first post to electronics.stackexchange so limited to 2 hyperlinks, hence the untidiness above!)

\$\endgroup\$
1
\$\begingroup\$

ARM Cortex-M4(F) core based MCUs.

Its not full blown DSP, but it have some "DSP like functionality":

  • single cycle 32x32->64 MAC operation.
  • optionally FPU (in F variant).

It is supported (including hardware FP support) by GCC from https://launchpad.net/gcc-arm-embedded.

ARM also provides optimized DSP routines in CMSIS DSP Library.

\$\endgroup\$
-2
\$\begingroup\$

The Microchip compiler is based on GCC, and therefore its source is open. Microchip added some of their own stuff for the more advanced optimizations, but the basic compiler is free and its source is available.

Trying to be vendor independent with microcontroller compilers is also a bit silly. Yes, C is roughly a standard, but enhancements need to be made to any one particular instance to use the architecture well. There are going to be some source code differences required between different microcontroller families no matter what compiler you use. Just because two compilers are based on GCC doesn't mean application code will be source code compatible.

At best, source code compatibility will apply to the generic C statements and arithmetic. However, the bulk of embedded firmware on such small resource-limited systems will be managing the specialized hardware peripherals. That code will be specific to that family, and sometimes to the part, by its very nature. Demanding general C compatibility is for 5% of the solution and ignoring the 75% problem of porting between different devices in the first place.

Also, there is little point in demanding that the source code to the compiler be open. Are you really really going to get in there and make changes? That is best left to the experts whos full time job it is. For a one-off personal project, it does make sense to use a free compiler, but then most vendors have some flavor of free compilers. All the Microchip compilers have free versions that only differ from the full ones in that some of the advanced optimizations are turned off. In most cases this is irrelevant. If you are pushing limits, then for a one-off use the next size up chip, and there is always assembler available if you really need the code space and speed for particular parts of the system.

\$\endgroup\$
  • 4
    \$\begingroup\$ I never said that I wanted the code to be vendor independent. I just do not want to support non-free code unless I have to. I'd like to reserve the possibility to fix the compiler (and have done so with a couple of previous projects) if I have to. \$\endgroup\$ – Dago Oct 9 '12 at 12:34
  • 2
    \$\begingroup\$ dangerousprototypes.com/2011/08/30/… Here is an article on Microchip and open source stuff which reflects my feelings pretty well. \$\endgroup\$ – Dago Oct 9 '12 at 12:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.