Question

I am trying to improve my embedded C/C++ development on ARM architecture. I have recently moved from 68K development to ARM and wanted to use some of my spare time to dig into the platform and learn the best practices especially on developing for mobile platforms.

Preferably 32bit architecture will be helpful with supporting development tools. A bit of fun during the learning process may enhance my understanding of the platform

Was it helpful?

Solution

ST Micro has a very attractively priced (and packaged too) kit for their ARM Cortex-M3 based STM32 line. MSRP runs about US$35 for the STM32-PRIMER with 128x128 color LCD, MEMS accelerometer, push button, LEDs, USB, and some spare GPIOs all in a package that includes a battery and USB to JTAG debug connection. A GCC toolchain and a commercial debugger are supposed to come with it as well. I have one on order, and will try to remember to edit this answer to include a quick review after it arrives next week sometime.

They have a new model based on an STM32 with more FLASH and RAM on chip that also has a micro-SD card connector, and a larger LCD that includes a resistive touchscreen that runs just over $100 if you can find it in stock.

Luminary Micro has a number of inexpensive demo/eval board kits as well. The people behind the eLua project (a complete Lua programming environment running in SoC and MCU scale devices) seem to like the Luminary Micro product line, but I have no personal experience with them.

OTHER TIPS

It seems like there's an awful lot of fun stuff being done with the Arduino platform.

The basic answer is really "anything you can afford that will let you build fun stuff" and Arduino seems to fit the bill.

Since you want to develop for a mobile platform the Beagle Board could be something for you.

The STM32/Cortex M3 the other poster mentioned is more deeply embedded, it is more suited for moderately sophisticated control applications.

Arduino uses AVR controllers, not ARM, and is even more deeply embedded near the low end (the low end is PIC).

I think you need to have a specific purpose before you start doing embedded work. What I mean is that embedded work tends to have specialized hardware that is trying to achieve a niche that general purpose computers currently can't fill ( or are too expensive to use ).

If you were to buy some embedded hardware, you would eventually get the "hello world" app running in some sort of console environment ( either telnet or some sort of UART or through JTAG or USB ) but then what? Why kill yourself to get the boot up/drivers etc etc running "hello world"?


One specific purpose that I am looking into is Software-Defined-Radio. You might want to try implementing in code a simple FM or AM radio on an embedded device because that would give you a specific goal and it would be really fun to get that working ( and a good reason to kill yourself to get the embedded system alive! )

There is nothing quite like bringing alive some sort of previously dead blank hardware and seeing it power on from your main() function all the way to something useful ( like FM or AM radio ).

Be aware that software defined radio hardware will cost a little more than expected...

Assuming you are interested in embedded development:

I like the olimex boards and the non-olimex boards sold through sparkfun.com. sam7, lpc, etc.
The stellaris boards are very good as well.
You can get a lot of satisfaction and fun out of just getting an old gameboy advance and a supercard sd, or use an nds with an r4ds or cyclods. The nds is a bit more painful for a beginner and the entry cost is three to four times higher than a gba. The gba mini or sp has a backlight which you will appreciate almost immediately over the unlit original gba. And with the gba (or nds) you can get your feet wet with an emulator like vba and not have to buy anything. The luminary micros are a good start with a nice display and a few other on board gadgets to play with. Be careful with the 811 board as it is really easy to brick as there is a jtag pin on a port with pins you will want to use as generic I/O. On the other hand they are getting stingy with the drivers for the on board peripherals, trying to sell an operating system like experience instead of an embedded experience.

If you want to just write apps on an operating system: beagleboard or embeddedarm or qemu-arm, its really no different than writing apps for any other linux based machine so the arm factor really isnt there.

The Gumstix platform has always impressed me. It's a "beefy-er" platform running Linux but they have a variety of packages starting at $150 but also have an abundance of published how-tos / user projects. The one I have uses a flavor of uCLinux so it'd be a mildly-easier transition path for new-users.

www.embeddedarm.com - the TS-7800

this is a nice platform that offers a pc/104 stack. For about $200, you can do a lot and learn alot about their hardware (UARTs, ADCs, and the like) and you can grow your learning experience via the 104 stack.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top