A couple basic questions regarding ARMs and DSPs

Hi - I just have a couple pretty simple questions regarding ARMs and DSPs. I should preface this by saying that I'm coming from the world of AVRs (8 bit uCs).

First of all - when researching options that go beyond the power of AVRs I've run into DSPs alot. I can't tell exactly what a DSP is though, and how it is different from a microprocessor/microcontroller. From what I can tell, a DSP is essentially a microprocessor that has been specifically designed for performing complex mathematics in real time. Is that fairly close to being accurate?

But anyways - the main reason for my post - is I'm planning on getting into the world of ARMs. Being a poor college student I'm hoping to not have to spend too horridly much - so my current plan is to use GNU ARM for code development. But the one thing that I still haven't figured out yet is how exactly to move code onto the ARM. With AVRs there was, in my mind at least, a very clear choice: an AVR ISP. For $30 I had a device that could program just about any AVR out there. But with the complexity and the range of manufacturers of ARMs there doesn't seem to be any clear choice. I've seen JTAG programmers mentioned quite a bit. I've been looking at this one in particular:

formatting link
From what I've read these devices are able to program all ARMs out there except for a specific series of Philips ARMs. For $20 it doesn't seem like a bad choice.

But what about boot-loading? I've heard this talked about some - but I can't find any mention of it in the couple ARM datasheets I've looked through. Maybe it has a different name? Is boot-loading a viable option for getting code onto an ARM, or is it best to have an actual programmer?

Lastly - can anybody reccomend a specific ARM chip to me? Hopefully one that a ARM beginner can get up and running fairly quickly. I really don't have a specific set of features I'm looking for in one right now.

Thanks so much for your help,

-Michael J. Noone

Reply to
Michael Noone
Loading thread data ...

Michael Noone wrote in news:Xns963FF00E42D5Emnooneuiucedu127001@

Some further research has led me to find that it seems some Philips chips (I believe the LPC21xx and LPC22xx series'?) can be programmed with a free program that Philips supplies straight through the serial port (with a line level converter, of course). Would this perhaps be a good option?

Also - I've noticed that there seem to be different "cores" for ARMs. Can somebody please explain what exactly this means, and possibly tell me the difference between those out there? My understanding is that the cores give ARMs different functionality - like for example I read that one new core has a built in hardware divide (which I think is a pretty nice feature - anybody know of any currently available ARMs with a core like this?).


-M J Noone

Reply to
Michael Noone

I made my own, it was quite easy.

That was how I started with the Philips LPC2106. The JTAG option is much more convenient, and makes debugging much easier.

Join the LPC2000 Yahoo group, you'll get lots of help there.


Reply to
Leon Heller


The best explanation is with an example: a much used operation in digital signal processing is a multiply/accumulate in a loop, on a set of data points and constants.

So in pseudo code it looks like this:

result = 0; constant_pointer = (point to array of constants) data_pointer = (point to array of data) for 0 to 99 do { x = *const_pointer++ y = *data_pointer++ result = result + x * x }

On an ordinary CPU, this transates in a bunch of assembly instructions and looping overhead.

On a DSP (a ADSP21xx for instance) this translates into:

M4 = 1 ; pointer increment value M0 = 1 ; pointer increment value L4 = 100 ; make pointer circular, is a hardware feature L0 = 100 ; ditto I4 = ^const_array ; setup pointers I0 = ^data_array ;

CNTR = 100 ; load hardware counter MR = 0 ; clear result; DO loop UNTIL CE ; loop until counter expired loop: MR = MR + MX0 * MY0, MX0 = DM(I0,M0), MY0 = PM(I4,M4);

The trick is in the loop: first, the loop takes to overhead in time. Second: the one and only instruction in the loop does the multiply, accumulate and two fetches to get new constant and data points, all in one clock cycle.


Reply to
Meindert Sprang


Here's a good resource:

formatting link

While I wrote this about four years ago, it's still just as true today (as are most of my predictions). It describes the differences between microcontrollers and DSPs, and describes some of the applications that require both products in unique combinations.

-Bill Giovino Executive Editor

formatting link

Reply to
Bill Giovino

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.