Recommendations

Hey, guys. I’m a Sr. Software Engineer who’s looking to add some embedded systems experience to my resume. I have book knowledge of the process, but I want to add “hands-on”. I have a UN*X background, and some electronics in high school (eons ago). I’ve even interfaced a RAM chip to a computer via Radio Shack breadboard and UART, and successfully stored and retrieved data from it (also eons ago). So, I’m not unfamiliar with the processes and tools.

What I’m looking for are recommendations for purchases from SparkFun that would no only be interesting, but also helpful to my experience portfolio. Money is an object here, but I can spend several hundred $$ for the cause.

I’m currently considering the ARM-based [E9302 board and the [JTAG USB OCD Programmer/Debugger for ARM processors.

Would this be a good combination for gaining the experience I’m seeking?

Also, should I consider adding an [LCD?

Thanks for any advice you can offer. :wink:](http://www.sparkfun.com/commerce/product_info.php?products_id=8683)](JTAG USB OCD Programmer/Debugger for ARM processors - PGM-07834 - SparkFun Electronics)](http://www.sparkfun.com/commerce/product_info.php?products_id=8208)

what’s your professional goal?

Deeply embedded processors as in machine control

PDAs and consumer handheld products?

Cell phone fimware?

Hobby?

gotta nail down the objective before selecting tools

My recommendation for good-resume’ stuff: ARM7 deeply embedded (small market), or embedded/diskless Linux or real time Linux on ARM9. These are not proprietary as are PIC and AVR and other sole-sourced micros. If that’s what you want your employer or prospective employer to look favorably upon. Targeting a sole source micro would be OK for narrow, short-term job prospect only.

And of course, proficiency in assembler and ANSI C (not so much C++) for the target micro.

One of several good ARM vendors: NXP LPC2xxx, maybe start with LPC2103 or 2106 then upwards, for Linux if that’s your bag.

( Sorry to take so long to reply, for some reason “b-a-c-k” is considered a “forbidden word”, and this forum software would not let me post until I tracked that down. Sheesh. :? )

stevech:
what’s your professional goal?

Deeply embedded processors as in machine control

PDAs and consumer handheld products?

Cell phone fimware?

Hobby?

At the moment, I’d have to go with the first one (deeply embedded), or just “generic”. I’ve seen job listings at, for example, Lockheed/Martin for embedded that require VxWorks experience (no real hardware mentioned, though). I’ve interviewed for a position with an audio company using Motorola-based boards, but with no real experience in the process (creating the ‘initrd’ images, interacting/debugging via serial port, etc.), I didn’t stand a chance.

stevech:
My recommendation for good-resume’ stuff: ARM7 deeply embedded (small market), or embedded/diskless Linux or real time Linux on ARM9. These are not proprietary as are PIC and AVR and other sole-sourced micros. If that’s what you want your employer or prospective employer to look favorably upon. Targeting a sole source micro would be OK for narrow, short-term job prospect only.

Sorry I can’t be more specific, as I am not targeting a specific application/employer at the moment.

stevech:
And of course, proficiency in assembler and ANSI C (not so much C++) for the target micro.

I used to to x86 and 68000 assembly back in the 80’s, so it’s been a long time, but I doubt it would be hard to learn it again. I’ve been knee-deep in cross-platform (Linux, Mac, Windows) for the past decade, so it’s been strictly C, C++, and scripting languages.

stevech:
One of several good ARM vendors: NXP LPC2xxx, maybe start with LPC2103 or 2106 then upwards, for Linux if that’s your bag.

Yes, Linux is the handiest thing available to me. I don’t think I can lay my hands on commercial RTOS’s just for hobby/education.

you can run RTOSes on small 8 bit micros and on ARM7. Such as FreeRTOS, and several other free ones.

These RTOSes are not commonly used in small micro applications, e.g., where the micro has say, 16KB of flash and 2KB of RAM. In the ARM9 world, you find Linux and a real time diskless Linux. But products that use such are a rather narrow niche.

So you might want to think a while and set a focus on a particular vertical market and get the skills in the software development tools used in micros popular in that market. These include GCC for ARMs (WinArm, Yagato, etc.) and commercial IDE/Compiler/library tools from IAR, Keil, and IDE-front-ends to GCC from the likes of Rowley. Most of those brand names also support proprietary micros like AVR, PIC, multi-sourced 8051-alikes, and others. The Hitachi H8, now Renasys as I recall, is wildly popular worldwide, for deeply embedded.

If your interests fall more in higher level environments, small micros like ARM9 where there is a memory management unit for running Linux or VXWorks, then the focus would be different.

stevech:
If your interests fall more in higher level environments, small micros like ARM9 where there is a memory management unit for running Linux or VXWorks, then the focus would be different.

I actually think that would be a an excellent place for me to start. Can you recommend hardware/software combinations for that type of environment?

If you’re going for ARM9, don’t ignore the fact that Windows CE has an extremely strong foothold in the market, too.

Uberman:

stevech:
If your interests fall more in higher level environments, small micros like ARM9 where there is a memory management unit for running Linux or VXWorks, then the focus would be different.

I actually think that would be a an excellent place for me to start. Can you recommend hardware/software combinations for that type of environment?

Are you sure you have separated what technology is familiar (big OSes) versus embedded micros, and made sure this is what you want your future employer to see on your resume’? A hiring manager will look totally differently at an engineer that is a mix of EE and CS, versus a CS guy that doesn’t know hardware.

Again, it gets back to your carefully considered objectives and what the job marketplace voids are that YOU can fill.

stevech:
A hiring manager will look totally differently at an engineer that is a mix of EE and CS, versus a CS guy that doesn’t know hardware.

Again, it gets back to your carefully considered objectives and what the job marketplace voids are that YOU can fill.

Understood. It’s my intention to broaden my experience (adding hardware to software), so that I may fill more voids than I can with my current experience. Further than that, though, I want to get into something that varies enough from what I have already been doing for decades, that it will re-invigorate my interests. I’m beginning to tire of just software development, and I think that the addition of hardware – specific hardware requiring specific disciplines – would pique my interests once again.

I’m open to the suggestion of experiencing a gamut of varying hardware/configurations, as opposed to focusing in on a specific piece of hardware or vendor. What I plan to seek (although I have no assurance of ever getting there) are positions working with things like missile guidance systems and space-program hardware. I would guess that those types of systems include a diverse array of embedded hardware types, from simple to high-level-that-includes-memory-management.

This does not, however, mean that I would discount a position working with PDAs, cell phones, or consumer electronics (the audio company I interviewed falls into this latter category). However, right now, I have next to nothing (except text-book knowledge), so I need to start somewhere.

to do firmware for on-board weapons systems, or NASA or satellites, I’d suggest getting a BSEE+MSCS or a double major, from a top 12 University, if you don’t already have it. Undergrad a’int enough.

Then dive into life as a defense contractor at one of the big 5, or if you are young enough and don’t have kids, at a small/disadvantaged business working on Federal projects.

(been there, do that)