A couple basic questions regarding ARMs and DSPs

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From English to

Threaded View
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: http://olimex.com/dev/arm-jtag.html . 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

Re: A couple basic questions regarding ARMs and DSPs

Quoted text here. Click to load it

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

Re: A couple basic questions regarding ARMs and DSPs
Quoted text here. Click to load it

I made my own, it was quite easy.

Quoted text here. Click to load it

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.


Re: A couple basic questions regarding ARMs and DSPs
Quoted text here. Click to load it

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.


Re: A couple basic questions regarding ARMs and DSPs

Quoted text here. Click to load it

Here's a good resource:
http://microcontroller.com/Embedded.asp?did67 %

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

Site Timeline