Learning embedded systems

I am a recent graduate with a BS in Computer engineering. I am interested in working with embedded systems, but I have no experience with them. I've done basic C/C++ programming and very little ASM.

What steps should I take to learn?

I have some books and have been looking at the book recommendation in this group, but I feel hands on learning is the best way to go.

So, I guess I am looking for a cheap development system I can use at home to learn embedded systems and something that is popular enough that I can use the knowledge gained to help get a job working with embedded systems.

Any and all help is much appreciated.

thanks, Rob

Reply to
Rob Miller
Loading thread data ...

Think of something simple and cool to do with a small processor then buy yourself a cheap Evaluation Board to play with and try and implement your simple cool project.

You may need to learn to solder, design electronic interfaces and things like that but you should have some fun doing it. There is plenty of material on-line that will help you out with various factors and the rest of the guys here are always willing to answer well formed specific questions.

Some links to go on with:-

formatting link
formatting link
formatting link
formatting link

The capabilities of the boards on those sites varies a great deal so you will need to sit down and consider what you want to do and what may fit best to your purposes.

--
********************************************************************
Paul E. Bennett ....................
Forth based HIDECS Consultancy .....
Mob: +44 (0)7811-639972
Tel: +44 (0)1235-811095
Going Forth Safely ....EBA. http://www.electric-boat-association.org.uk/********************************************************************
Reply to
Paul E. Bennett

Try out the free Webcasts and VirtuaLabs at TechOnLine:

formatting link

E.g., for the Freescale VirtuaLabs, try this:

formatting link

Freescale also has tutorials in its Embedded Learning Center for much of its product lines:

formatting link

Register at those sites and do the tutorials and labs. There's also free access to hundreds of Freescale manuals on its site (under Documentation) and such if you need any documentation. You can purchase evaluation boards for $50 to $300 from Freescale or other manufacturers.

Also, you can apply at Metrowerks.com (Freescale's software division) for limited versions of their development IDEs or for 30-day full evaluation versions of them.

There's a lot of resources out there...

Gary Schnabl Detroit

Reply to
Gary Schnabl

Hello Rob,

Here is what I did and it's low cost:

A couple Olimex MSP430F1232 header boards (about $15 each). Two rows of female headers for easier mounting ($1 each). You might buy their parallel port programmer (about $15). Download the free version of IAR Kickstart from the TI web site.

I didn't buy the parallel port tool but the USB programmer from TI which is more expensive (about $100), mainly because newer laptops do not have a parallel port anymore.

If you are in the US then Olimex parts can be bought at:

formatting link

They also carry robot kits if you are into building something that moves. Just browse via the menu bar at the lefthand side of the screen.

The F1232 is almost an embedded system on a chip. Except that it doesn't have a DAC but for slow stuff that can be accomplished via pulse width modulation using its timer. You can buy more capable versions though. The header board contains everything, even the crystal to run the micro controller, but you have to create a clean power supply of around 3V. That is easy.

The reason why to buy at least two header boards is that there is always that remote chance of frying one during experiments.

Of course now you'll have to build power drivers, sensing circuits and all that around such a header board. But this is certainly part of the learning curve. Only when you acquire a thorough and hands-on understanding of hardware can you become a skilled embedded specialist.

Then, as Paul said, pick something as a project that you kind of always wanted to have. Ideally something you cannot buy because that increases the level of joy you'll experience when it finally runs.

Regards, Joerg

formatting link

Reply to
Joerg

Get the new S12NE64 development kit from freescale (< $100) with the BDM programmer (~ $99). You can then use the Metrowerks compiler (free upto 4K of code) or you can get the 30 day trial from them.

The NE64 is their first Ethernet enabled micro. It does have come with an ethernet stack. I could not get that to compile in 4k.

If you wish to spend more on the board, try the HCS08 boards. THe metrowerks compiler is free for up to 16k of compiled code. I have developed embedded products with less code space.

Have a ball.

Reply to
arya

I like it when people are "interested in working with embedded systems" What does that mean? Anything from the 8bit cpus with no OS in a mouse to 64 bit powerhouses with RTOS's. So you need to focus a little small search for 8052 , AVR or PIC. There are free and lost cost C compilers available. Not C++ so be sure you know C ( C++ is not the same thing). There are books and forum dedicated to them. I little bigger try the ARM very popular It will run C or C++. Maybe look in to Micro OS II it is a book with RTOS code. Remember you will need some electronics knowledge you need to know the hard ware to talk to it. Good Luck.

Reply to
Neil Kurzman

Metrowerks upped the Special Edition version's code limit from 4K to 16K several months ago for both the HC08 and the HC12:

formatting link
formatting link

If you got a couple free GB on your hard-drive, you can install all three free Special Editions. You can get the 16KB Special Edition for the Hybrid 7 (Freescale DSP56F8xx, DSP568xx, and DSP56F8xxx) also, but it's listed as 8K (16-bit) words.

Description of the Hybrid 7 Special Edition (typical for all special editions): TARGET: Special Edition is targeted at assembly code projects or small projects with a limited amount of C code. Debugging is mostly done with Evaluation Boards or directly on the target application.

Features: there are some limitations to the special edition: . Unlimited assembler . C compiler limited to 8KWords of object code (There is no code size limitation when developing in assembly.) . Linker limited to 8KWords of C code . IDE unlimited.

Upgrade options available for the Special Edition (requires a few $): For customers developing C based applications and using more than 8KWords of code, three upgrade options are available, a 32KWords option, a full 64KWords option, and an unlimited Standard Edition

The upgrade to the 32KWords offers: . C compiler object code increased to up to 32KWords

The upgrade to the full 64KWords offers: . C compiler object code for up to 64KWords

The complete list of evaluation boards from FSL:

formatting link

There are two boards for the MC9S12NE64 - a demo board for $75 and the standard EVM for $249. The demo DSP56F8223 board is also available for around $75.

The RAD tool - Processor Expert - is on all of the IDEs that I cited above.

Gary Schnabl

Reply to
Gary Schnabl

That is good to know. Thanks for the info.

Reply to
arya

GNU gcc is free, exellent, and C++. You're definately not limited to C. There are binaries available for the Hitachi processors and for many others as well. (I'm only mentioning the Hitachi because that's what I'm using).

Dan

Reply to
Dan

On further review...

The HC(S)12 special edition has a 12 KB limit, I think. I don't use it since I have the professional unlimited versions of the HC(S)08, HC(S)12, and Hybrid 6.1.2 & 7.0 IDEs, plus the Processor Expert Bean Wizard tool.

Since your present installation has no way of knowing its code limit was increased threefold, you should either install a newer license.dat file, OR better yet, do another download of the entire installation which will take care of some of the updates. Also check into the Unis Processor Expert site and get those updates also. If you have any problems concerning how to find them and/or install them, email me.

Gary Schnabl

Reply to
Gary Schnabl

There's very little need for using assembly in embedded programming.

Dan

Reply to
Dan

That is not necessarily true. Not all projects allow for a Linux system with C++.

Rene

--
Ing.Buero R.Tschaggelar - http://www.ibrtses.com
& commercial newsgroups - http://www.talkto.net
Reply to
Rene Tschaggelar

Since the OP specifically mentioned trying to gain knowledge to help secure a job in embedded programming and admitted little assembly experience, I'd recommend working especially on the assembly skills. Don't ignore the C knowledge, of course, but if the OP is weak on assembly and knows it, then this is the area on which to concentrate effort. Luckily, that is also exactly what most manufacturers give away in their development systems, too. So this is entirely consistent with the OP's other comment about "a cheap development system I can use at home."

I'd recommend focusing on developing assembly-only projects, as well as mixed assembly and C; learning about linker control files (those files often used by various embedded linkers that specify the memory arrangements in the target); and facility with simulation and jtag debuggers, where possible.

It is exactly the ability to mix assembly with C or to program entire projects in assembly and to be able to get in and adjust architecture/linker files to meet project needs that will help differentiate an embedded programmer.

I hire embedded programmers. And a lack of assembly experience, a lack of knowledge in mixing assembly and C, a lack of knowledge about writing significant applications in assembly, and a lack of knowledge in working with linker control files are precisely the kinds of things that cause me to continue looking elsewhere. C-only experience is about a dime-a-dozen.

(Of course, if the desired embedded work is to be done on relatively large, and relatively general purpose computing platforms, then the focus might be more on specific experiences with application-specific features and functions.)

In other words, I don't agree much with the aim of your statement. It is exactly good experience with assembly that will better improve the OP's chances at securing such a job.

Jon

Reply to
Jonathan Kirwan

You will find several articles about Embedded Software Development at:

formatting link

Deepa

-- EventStudio 2.5 -

formatting link
Real-time and Embedded System Modeling with Sequence Diagrams

Reply to
EventHelix.com

Thanks for all the information. Now I have to decide which direction to go in. I would like to start out small. I used to co-op for Hasbro and another company in Providence and did electronic toys there, so I am somewhat familiar with 8-bit micros and I have also done some work with PIC. I know there is somewhat of a grey area between microcontrollers and embedded systems (or so I've heard, but I think this should help me.

I just wanted to thank everyone again for being so helpful, and hopefully when I learn enough, I can help others. Keep an eye out for more newbie questions from me.

Reply to
Rob Miller

Yes, the grey area between a microcontroller and an embedded system is called electronics. An embedded system starts at a PIC plus something on a board. This something being :

-a communication unit such as serial, feldbus CAN, USB, ethernet and such.

-some measurement units such as filter & ADC

-some control units driving linepower, 24V, controlsignals, ..

-perhaps some storage

-perhaps some display units, LCD, LED, meters, ...

-perhaps a powersupply

Good luck.

Rene

--
Ing.Buero R.Tschaggelar - http://www.ibrtses.com
& commercial newsgroups - http://www.talkto.net
Reply to
Rene Tschaggelar

I have to disagree. I have an embedded application on a Hitachi processor with close to 16,000 lines of C++ code. The total assembly code is less than 20 lines. To spend a lot of time learning assembly is counter-productive. Code written in C and C++ is significantly easier to write, debug and maintain. Knowledge of assembly can at times be helpful, but keep it in the 20 to 16,000 perspective.

Dan

Reply to
Dan

You certainly don't need Linux to program with C++. I don't know of any processor that don't have at least a C compiler. C++ is not uncommon in embedded systems.

Dan

Reply to
Dan

secure a

I'd

This is highly non-representative of embedded systems in general (in terms of shipped units).

Not being able to understand your compiler's assembly output represents a loss of control of the hardware and a step down the road to voodoo programming.

Reply to
larwe

You definitely need to understand how to program in C to generate efficient assembly code.

Number of shipped units is however not as good an indicator. What is interesting is what jobs he can find with assembler skills and which he can find with C skills. It is OK to know something about assembler, but it is probably OK to know just so much that you can figure out if you need to improve your C code or not.

I can program in assembler , and in one project for the tiny15 without any SRAM, it was neccessary, but when the tiny13 arrived it was easy to rewrite in C without a big impact. The allocation of global variables into register is quite useful.

--
Best Regards,
Ulf Samuelsson
ulf@a-t-m-e-l.com
This message is intended to be my own personal view and it
may or may not be shared by my employer Atmel Nordic AB
Reply to
Ulf Samuelsson

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.