RULE 1: There is ALWAYS a caveat!
I don't know how many times I stated this rule for Embedded Linux systems, but I've made a believer out of many people with this rule. Now, don't take this the wrong way. I am NOT discouraging the acceptance, advancement, and proliferation of Linux as an Embedded System. In fact, I wholeheartedly encourage it. But you have to know what you are getting into.
Some of the many promises I've heard (and made when I was more naieve) in regards to Embedded Linux:
1.) "Well, all you have to do is....."
This is the FIRST phrase you need to perk up on. Unless you are working with standard x86(see, already a caveat), this is hardly ever a true statement. As soon as you hear it, multiply the expected effort by 3 and you'll have a good estimate of the time required. Why? Well, lets just go through some standard processors:
ARM7: Oh look, usually only two serial ports (one used for console), and then you have to figure out if the other is really a full serial port or a 3-wire.
ARM9: Well, it's exactly like the ARM7... Well, except for the boot procedure and having more serial ports
PPCXXX: Now these are really fun. A 44X series is different from a 40X, but most of the Linux code is written for a 4XX series. Oh, and don't forget about all those nice interfaces that actually require PHYs for operation. You mean I forgot about the GPIO busses as well? AND the ethernet MAC interfaces? Well, why don't we just move to an 8XX series? OHHHH! Well hell, what do we do?
x86: What? You mean we have to worry about north/south bridges now too? Really? The solid-state memory is an issue to? Oh, lets just switch to a newer kernel and it will fix all that. What do you mean the USB doesn't work anymore?!?!?
2.) Well, someone's done it before... it will only take a few minutes to google something up
AHHHHHHHHH! Unless the person who uttered this ACTUALLY has seen something on the Internet pertaining to the discussion at hand, this person is putting up a smoke screen of BS to the Nth degree. Most likely, they have no idea what to do and are just expecting someone else to have fixed their problem already.
3.) "Yeah, I had a little trouble with 'X', but I'll have it fixed this afternoon..."
!!DANGER!! Will Robertson !!DANGER!! This person has probably had a major compilation error and has no clue about the solution. They are likely searching google at a rate that would make a TSA agent blush. Yes, they will likely find a solution, but multiply their expected afternoon by seven and you'll have a close estimate.
Yes, I'm exagerating this a bit. But not much. These are all issues I've run into in the last year. Why am I telling you this if I am so much in favor of Linux? Simply put... you need to know what you're getting into so you can plan your projects accordingly. Linux is a WONDERFUL operating system... in general. However, to make a sucessful product from it, you will face many challenges.... that your engineers will love (if they like Linux... DOH! ANOTHER caveat). But don't let the cool, gee-wiz factor get in the way of realistic expectations.