Hi - I'm looking at doing some DSP work (specifically, I'm working on an AHARS system).
I've never worked with a DSP - but I understand them to essentially be a microcontroller with especially strong math abilities. Thus this seems like a perfect solution to my needs.
Problem is - it seems most all DSPs require expensive dev software and hardware. I'm coming from the ARM and AVR world where software is free and programmers are inexpensive. Being a student - this transition is a bit unpleasant.
Are there any inexpensive routs into the DSP world? I'm looking for a C compiler and some way of programming a board of my own design (I don't plan on buying any dev boards).
Watch out -- you can get away with that thinking to some degree, but it may bite you.
Most DSPs are designed for two purposes: number-crunching and fast I/O. They are not designed for ease of programming, or to have loads of peripherals. These days, many of them do, but at heart, most DSPs are a different world. You should think of them first as a peripheral or coprocessor, and second as a micro, and then only if you have a good C compiler.
In fact, it used to be that you were very lucky indeed to get a C compiler on a DSP. It also used to be rare for DSPs to deal gracefully with 8-bit quantities. Both of these things are becoming more common as people demand to program everything in C, but they're not universal -- particularly the latter. Expect weirdness like non-8-bit chars and
40-bit floats.
Also, a DSP doesn't automatically bring higher performance. It will usually get you much farther than would a micro at the same speed, but you may have to work to get there. A C compiler for a DSP may get you through a good first pass, but after that, you'll often need to tweak by hand to get maximum performance. It can be well worth the effort, but effort is required.
I know the feeling well.
That may be tough. Others may know more, but I don't know of anything inexpensive that fits the bill.
Would an FPGA + micro fit? FPGA tools are often cheap or free.
Good luck -- and hopefully somebody can give more concrete advice. (In fact, I'll be interested myself to see whether people come up with anything.)
There is a fair bit of info available. The free tools seem to based on fairly old versions of gcc. It might be that ARM using gcc 4 might be faster with DSP type tasks than the DSPs using older versions of gcc.
It is my understanding that the DsPIC from Microchip has a gcc compiler available. Check.
ARMs are pretty quick, and as mentioned elsewhere to really get the speed advantage of a DSP you have to sign up to some assembly programming, with some serious thought given to how the processor expects you to program it.
I've been using the ADSP-21xx series DSP processors for 15 years and more. There was an older assembler, linker and so on that you may be able to get for free from Analog Devices support folks. The particular toolset is their version 5.1 tools. It came on three floppies and I've had their tools folks (one of them, anyway) send me a complete set of them (after losing my one.) When getting that copy, the tool guy wasn't caring at all whether or not I owned a license to other products they do sell and I'm pretty sure Analog Devices doesn't really care anymore about that old toolset. I have them still and if this is something you'd like I can call over to them and see if I can get permission of one sort or another to give you a copy. (The ZIP is about 4.3Meg.)
I also have the 37 page release notes for it. This includes the following description:
? The software may require up to 13.5 MB of hard disk storage?see page 3 for storage requirements. ? For all software except the C compiler, the minimum system configuration is a ?286 based PC with 2 MB extended RAM (DOS 3.0 or higher), a hard disk, 640K of memory, a color video card and an EGA or VGA monitor, and a high density floppy disk drive. ? The C compiler requires a ?386 or ?486 based PC. ? The recommended system configuration is a ?386 or ?486 based PC with 4 MB extended RAM, DOS 3.0 or higher, a hard disk, 640K of memory, a color video card and an EGA or VGA monitor, a high density floppy disk drive and a mouse.
What?s New In This Release?
? The release of ADSP-2181 and ADSP-21msp59 software development tools. This release includes modifications to the System Builder, Assembler, Linker, PROM Splitter, Compiler, C Runtime Library, and two new Simulators. The details of ADSP-2181 support are covered in section 4.1, ?New Features of Release 5.1 (ADSP-2181 Support)?.
That would be 'free.' However, their cheap EZ-ICE board isn't around anymore, I believe. They have something more expensive and fancy out there, now. Not sure how much you could pull together for development but I thought I'd offer a thought, just in case. I think you'd need to work to pull together a workable situation, but this toolset could get you pretty far if the processor is otherwise workable.
Jonathan Kirwan wrote in news: snipped-for-privacy@4ax.com:
We sell a small credit card sized DSP board (DSP-8300) that uses an ADSP-
2186M and an AC-97 codec. We supply it with the 5.1 Tools. These tools were never copyrighted and were largely GNU based which is why they are available for free.
We also have SHARC based boards that include a built in ADI debugger. These boards are supported with Visual DSP and will work with a free KIT license.
The Hitachi (now Renasis) SH-3 had what I consider to be a pretty decent free development environment called HEW which covered their entire SH and H8 line. The programming interfaces for both were well documented. I used it in a Windows environment but I understand that it also operated in the Linux environment.
As an alternative, if you have Microsoft's Visual Studio environment, the Intel 80X86 MMX instruction set makes and excellent DSP learning tool free on your PC.
I would restate that as "a microcontroller with a special instruction set that makes typical DSP operations faster/more efficient" (vector ops, multiply and accumulate, etc.,) for some appropriate definition of "typical", "faster", "more efficient"
If these operations and your needs do not overlap, you may be better off with a non-dsp processor.
I have been using Texas Instruments 2000 family (F2812) and yes, development kits are expensive, and TI's "Code Composer's Studio" seems to be what everybody is using for these chips.
I understand that Microchip provides a free C compiler. DsPICs max out at 40MIPS which is a little slow for my tastes, especially since they are only 16b and most of the work I'll be doing will be on floats or doubles.
Most ARMs don't have FPUs, however. I am aware of a couple that do, but that is a very uncommon feature among ARMs. Still, it is something I am considering.
Exactly. My plan is to have 3 axes of magnetometer, 3 axes of gyro, 3 axes of accelerometer, and a gps. The gyro and accelerometer will be sampled at probably 2KHz. GPS will be coming in at 4Hz, not sure about magnetometer (haven't chosen what kind to use just yet). I'll be mixing the gyro and accelerometer data with a kalman filter. GPS and magnetometer will be used to further fix the gyro and accelerometer data.
I would think that something that aged would be substantially slower than modern software. I really would like to maximize my usage of whatever chip I end up with.
I can't speak for the C compiler. Never used it. And frankly, I doubt it does much with this DSP's capability of packing up to 3 instructions into a single word or in handling register-passing optimizations on it. But as your post suggests you are willing to consider, writing in assembly also isn't unusual in the case of DSPs. However, I'm familiar with numeric methods and perfectly willing to work out the details of writing optimized equations in assembler on a DSP. You may not be and you have to be the judge here of what fits your need. I was only suggesting an alternative without really knowing what skills you have or much about what you are trying to do.
I'm currently thinking I'll open source it. Its end application is for a robot I designed that has been completely open sourced. (though I haven't publicly posted the URL for the website about it, as the website is not quite finished). Then again, I think it might be marketable - so I might sell the hardware while keeping the software (and hardware design) free.
You might be interested in this open sourced kalman filter implementation for a 6DOF IMU (3 accelerometer, 3 gyro):
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.