which manufacturer/device must I choose!

Hello,

I am planing on buying an ARM dev board.

So I had a look on the Olimex website and found some nice dev boards for something around 55Euro which I think is not too bad!

so I have found 2 boards that seem quite good:

from ATmel: http://www.olimex.com/dev/sam7-p256.html

from NXP (Philips): http://www.olimex.com/dev/lpc-p2148.html

so of course I could base my choice en simple hardware diffrences:

-the NXP has more memory and a DAC so it is the best.

however there are other other parameters that are not as obvoius:

-is the litterature form the manufacturer(Atmel/NXP) suffucient and clear enough

-does the manufacturer provide enough code examples for these product families

can someone with a bit of experience with these 2 manufacturers tell me which manufacturer he would go for??

thank you in advance

Pepe_Punk

There’s probably more software around for the NXP ARM, and the LPC2000 Yahoo group is very good. I run it. :sunglasses:

The Embedded Artists NXP ARM boards are very good value, also. We have several of their LPC2148 Quickstart modules and proto boards.

Leon

My experience with the LPC-P2148 board is good, zero problems. I ordered a board with an Atmel chip also but I didn’t receive it yet.

Both families have interesting features, the MAM unit for LPC as example or the multiple DMAs present in some Atmel microcontrollers.

OK I’ll probably go for the NXP family. (I’ll probably hesitate untill the moment I pay!!)

I’ll cout on your LCP2000 group’s help leon!! :lol:

What developement enviroment do you use??

I consider buying (or making) the simple Jtag wiggler from Olimex and using the IAR demo version (as I won’t be using an OS at first the size limitation should be ok for me). what do you think of that??

I am using the YAGARTO toolchain, it is free and, of course, without limits. It includes Eclipse with Zylin plugins as IDE, GCC 4.2.2+newlib+binutils, and OpenOCD.

As JTAG I use the Olimex ARM-JTAG-USB, it is nice because the power supply and the auxiliary serial port. It also includes a (working) toolchain but YAGARTO is better and more up to date.

I just had a look at the website… looks good, plenty of help too.

What’s more… it runs on Windoze!!

I’m affraid I’m not really accustomed with Linux…sorry.

However I can’t find if the Parallel port wiggler is supported… If you have this info.

I believe it is supported, you should ask in the OpenOCD forum (the one under this one in the list).

I use Rowley CrossWorks and their CrossConnect JTAG interface. They support a Wiggler-compatible JTAG, as well.

Leon

thanks for your answers.

I think i’ll just have to find what corresponds to my capabilities!!!

just an other question (yet another!!!):

if I had the (bad??) idea of programming the ARM in assembly language (maybe just a blinking led program for the sake of having written at least 1 programm in assembly!!) do I have to take into account architectural considerations due to the Cach memory or pipeline???

I think about that because I studied the MIPS R3000 and due to the architecture of the Pipeline the branch instruction where delayed by 1 instruction.

So can you think of any findemental consideration of this type(I guess it would maybe take a few pages to get in the details!!) I would have to take into account?

I know this is a strange questions as usualy code is written in C (or C++) and the compiler deals with all these fine details.

However as I have not yet programmed on a complex architecture such as the ARM, I wish to know a little about the low level stuff!

Thank you for your Help!

The ARM architecture does have some weird things if you want to program in assembler but it is not really harder than other 32 bits architectures and it has some really beautiful features.

About timings, the LPC processors have a subsystem called MAM, it is like a tiny 1-line instruction cache and it speeds up code execution on the flash memory, without the MAM unit each flash access would be slowed down by at least 3 wait states.

The problem with the MAM unit is that the compilers are not MAM aware so software timings change when the code alignment change, as example by adding a single asm instruction your timings can be totally different if you have small critical loops.

GCC has a lot of advanced options that allow to make very good code even on processors with the MAM unit or more sophisticated cache memories. As example it is possible to align function starts to a predefined boundary or even align loops to a boundary. I am not sure about other compilers but GCC is very very options rich, BTW crossworks uses GCC too.

About code quality, modern compilers, including GCC, generate very good code, it is difficult amd time consuming write better asm code by hand, usually you just need to put some asm code inline here and there in your C program.

If you’re just getting started with ARM, you should consider the new ARM CORTEX STM32 family from ST (www.st.com/mcu).

It’s faster, lower power, has hardware divide, and stacks registers in hardware for interrupts. There’s nice peripherals like dual 12-bit ADC that let you take simultaneous readings of a couple of inputs. They provide USB, CAN, and up to 3 UARTS.

Low cost development boards are available from Olimex and ST distributors, and application software examples are plentiful.

We’re presently using LPC2148 and LPC2378 devices, but will be using the STM32 family in at least one product in the future.

Hi

There is a thread with comparisons between these devices and also the Luminary offerings (also Cortex M3 based, but available long before the ST ones).

http://tech.groups.yahoo.com/group/lpc2 … sage/30036

Check out also www.uTasker.com (and its forum at http://www.uTasker.com/forum/ ) since it supports the ATMEL SAM7X, STR91X and the LPC23XX including IAR, Crossworks and Eclipse based projects (with details and guides in the forum plus tutorials on the documentation page: http://www.utasker.com/docs/documentation.html )

There is presently no work on the ST Cortex chips but there is a Luminary project which will be released as a Beta version in the very near future.

The uTasker project runs on all supported devices. There is a project define which allows moving between chips with almost zero effort. It includes an OS, most device drivers, a TCP/IP stack (for chips with Ethernet), special support for based web applications, file system and a unique simulator which allows complete projects to be developed, tested and debugged without needing hardware. The project is fully open-source and free (including support) for educational and other non-commercial use.

Good luck

Regards

Mark Butcher

www.uTasker.com