I’ve been tinkering with PICs off and on for the last 10 years or so (though a student of aerospace engineering, class of 2007), and am looking at my next moves in electronics. I have a strong interest in systems and specifically avionics, and want to broaden my knowledge into this area. Long term, I have pipe dreams of bringing my own avionics designs to market. Maybe just for use in my own airplanes (I’m a homebuilder), maybe for the homebuilt community, maybe for the rest of general aviation. It’s a ways off.
For now I want to get deeper into microcontrollers, but I know that in the long term I will need processing power beyond what the PIC line can provide. So, I am looking into other families to start learning now. The various ARM families are attractive due to the range of power available and the support for them in the community, but I’m wondering if it’s a wise choice (especially since I have every product line in the world to choose from). So a few issues that I’m considering: How easy is it to transition from, say, ARM7 to ARM9? Is the knowledge gained with one family relatively portable to other families, or am I looking at (basically) learning a new architecture each time? How about the same issue with different manufacturers? Is an LPC2148 as familiar as any other ARM7TDMI? Lastly, given my long term goals, are ARM processors available for high-reliability applications or is the whole series relegated more to consumer applications?
Thanks for any input. I’m open to suggestions on other families to look at, of course.
ARM7TDMI is a bit ancient. Most people are using ARM Cortex-M0 and -M3 chips these days, they have many advantages over the older technology. Have a look at the NXP LPCXpresso and ARM mbed offerings, they are very good value and the development tools are free. Support is excellent.
How is the learning curve with the Cortex chips? Would I be better off diving in with these chips (and the added complexity/capability that seems to often come with their dev boards), or with older ARM7 dev boards and BoBs available here at SparkFun? Kinda comes back to my thought of whether the experience gained with low end devices is portable to the higher end.
TonyG:
Kinda comes back to my thought of whether the experience gained with low end devices is portable to the higher end.
I don’t believe you need to worry too much about starting off with the tried-and-tested ARM7 for now and then moving on to the Cortex-M3 maybe sometime next year when the dust has settled a bit.
The White Paper “ARM Cortex-M3 Processor Software Development for ARM7TDMI Processor Programmers” by Joseph Yiu and Andrew Frame highlights the differences:
Thank you for the replies. The thing attracting me to the ARM7 boards is the selection available (from SF anyway) and the community and examples that have built around them since they’ve been around so long. I of course like the capabilities available to me in the Cortex line as well and know that my future plans will need them. The selection there is also encouraging. In any case, it sounds like it’s a wash as to which one I go with from a learning stand point - it’s not a quantum leap between cores that I was afraid of. I’ll be giving it some thought, and I thank you all for putting my concerns to rest. Thanks also for the whitepaper. It doesn’t look as daunting as I thought it might be…
If the manufacturer of the cortex parts provides you with a good support I would not be worry about trying it without any other previous experience with ARM processors.
But one is for sure, It seems that microchip products are easily available and affordable. They have three years I think since they introduce their 32 bits parts or PIC32. The question is, does anybody could point to find a comparison chart between PIC32 and Cortex-M3?
PIC32 is badly marketed outside of the Microchip community.
For me, there are some minuses in PIC32, not necessarily technical but from a holistic view:
Microchip still tries to sell a compiler. To add insult to injury, its a GCC fork. While the source code is available, its not supported and requires much hoop jumping to be usable. With Cortex-M3, there are numerous free unlimited editions of GCC (the defacto ARM compiler). The toolchains are also multi-vendor (Rowley(GCC), IAR, Keil, CodeRed(GCC)). Even Atmel’s proprietary AVR32 has a free compiler and IDE with no limits.
Its single vendor - there is a large amount of knowledge you can share on an ARM, especially the more standardized Cortex M3s. CMSIS is only the beginning. Plus, with multiple vendors adding their own flair to the peripherals available, there are a lot more choices on end devices (TI/Luminary have built in PHYs and a great driver library, NXP’s LPC13x and LPC11x are fantastic values, etc).
I’ve never used PIC microcontroller because I think it will stops the growing up of my skill.
The PIC microcontroller roadmap is still standing at PIC32 for along time :mrgreen:
ARM is the best choice, you can try from level low to high (ARM7, ARM9, ARM11, Cortex- M, Cortex-A…). And maybe you’ll have a lot of jobs if you chose ARM.
kamejoko80:
ARM is the best choice, you can try from level low to high (ARM7, ARM9, ARM11, Cortex- M, Cortex-A…). And maybe you’ll have a lot of jobs if you chose ARM.
I myself still use small pics for small projects. But i have decided to only use ARM for the bigger projects. Like you i wanted to make the big step to an advanced architecture with more possibilities. ARM is for me personally the way to go.
To sum it up why :
Long standing widely supported architecture.
Multiple manufacturers provide similar chips, handy when you run into an out of stock situation.
Large supportive community.
Any knowledge you gain can be used at your profession if you are in the electronics/programming world.
ARM is busy designing ARM cores that run at 2GHz and higher.
Free GCC compiler.
Lot’s of people have experience and problems are more easily solved that way.
Errata are discovered faster and information is shared by the community.
Usually the faster chips with ARM cores have standard buses for camera’s and / or audio buses.
William_Gaatjes:
I myself still use small pics for small projects. But i have decided to only use ARM for the bigger projects. Like you i wanted to make the big step to an advanced architecture with more possibilities. ARM is for me personally the way to go.
For what it’s worth to anyone reading this thread in a similar situation, I picked up an ARM9 (s3c2440) dev board not long after my initial posts in this thread. I found it to be remarkably easy to learn, despite only having experience with 8-bit PICs (and a VERY minor amount of low level x86 programming…). As has been said time and again, setting up the tool chain is the hardest part.
I downloaded the IAR evaluation version and had fairly quick success compiling hello world programs and launching them with the supplied bootloader. When I was comfortable with this (a few iterations, and maybe a couple of days), I set about trying to compile the code with GCC using the Eclipse IDE. I set this up more or less following the Jim Lynch tutorial (http://gnuarm.alexthegeek.com/) and using known “good” code/projects/makefiles for ARM7 just to make sure I could compile something. It was then a pretty easy jump to the ARM9s as far as makefiles and settings go.
Hacking together bits and pieces of the bootloader and sample apps, I was up and running doing more than just blinking LEDs within days. Right now, I’ve got it printing to the UARTs, servicing interrupts, and as of a few days ago doing bulk transfers via USB. This is all non-Linux, by the way, though Linux certainly seems popular enough for ARM9. I’ve been very happy with the amount of progress I’ve been able to make as a relative newbie. I kind of wish I would have gone with a Cortex chip as had been suggested here, but this particular dev board fit my requirements (technical and monetary) and has been great to work with. That, and eventually I just had to freeze the decision making process and bite the bullet. This worked.
stevech:
ARM9, to me, is not for embedded processor use, versus ARM7 or M3. The mBed is a fine example.
When the processor has megabytes of memory, and runs Linux or Android in that space, it’s a computer!
Yeah, that’s definitely the impression I’ve gotten! “Small computer” is kind of the route I want to go down long term, but it seems like most of the ARM9 resources are geared toward Linux, Android, or Windows CE. It’s pretty cool having 400 MHz and 64MB of SDRAM available to blink an LED and print to a UART, though… !