Arduino vs embedded system

Is Arduino a real embedded system? Why?

cmd1024:
Is Arduino a real embedded system? Why?

An Arduino by its self is just a microcontroller development board. Now take it and build a project around it and you could then call it an embedded system I guess. I wouldn't get to hung up on word definitions unless it's in a classroom test or something. :wink:

1 Like

I agree. Yes... As soon as you build the Arduino into your project, it's an embedded system. I'd say an embedded system is just about anything with a CPU that's not a "regular" computer (PC, MAC, Linux, etc) with a keyboard & display... An embedded system is NOT a general-purpose computer that runs a variety of user installed programs. It generally has a special-limited function (or functions) and the software (firmware) is generally installed at factory (although the user might upgrade or hack the firmware). All of the computer chips in your car are embedded systems. If you build an Arduino car alarm, you've added one more embedded system.

Most CPU & microcontroller chips sold today are used in embedded systems. (I don't know the statistics.)

If you took the motherboard out of your computer and screwed it to the wall to control an alarm system, and that was it's only purpose, I'd say that's an embedded system even though it's not really "embedded" or "inside" anything.

In the early days of computers (before the IBM PC took-over) there were special "word processor" machines. These were very-much like computers with a keyboard, display, floppy drive, and printer. But they only did word processing, so they would be classified as embedded systems.

A smart phone... I don't know for sure... The phone & communication functions are embedded, but it's also a general-purpose machine that can run user-installed applications... So, it might be classified as a hybrid embedded/general-purpose machine.

A game system is another possible hybrid. It's mosly an embedded system that plays a variety of games. But, it can also do other things.

P.S.
Here's another "hint" - An embedded system is normally programmed & compiled on a different "regular" computer.

If you are writing an application for a computer, you load your development system (compiler etc.) on the system it's going to run-on. You normally write PC applications on a PC, Mac applications on a Mac, and Linux applications on a Linux machine, etc.

But with the Arduino (or other embedded systems), you don't write and compile the program (or sketch) on the Arduino. Your compiler (cross-compiler) runs on a different system and it creates the binary code. The ready=-to-run machine-language code is uploaded (or programmed into) your embedded "target system".

As a general rule, I'd say embedded programming is harder... You don't have a screen so it's hard to "see" what's happening, because it's harder to display variables, or display debugging information about what the program is doing (when it's not doing what you want). The Arduino's serial monitor does give you some of that capability... And the serial monitor is fully dubugged, and it works...

You also need to understand the elecronics/hardware and you are often working on hardware that's not fully-debugged yet. At least we know the basic Arduino board is debugged, and we only have to debug the stuff we add. Professional embedded programmers often have an electronic engineering degree, rather than a computer science degree, or if they have a computer science degree they also have a strong electronics background.

That said, it doesn't get much easier than the Arduino "Blink LED" example! The simplest "Hello World" C or C++ program is just as simple, but when you start programming for the Windows operating system, the simplest Visual C++ "Hello World" program is about 2 pages of code, since you have to create a window and make the window respond to the mouse, etc.

cmd1024:
Is Arduino a real embedded system? Why?

What do you define as an "embedded system"?

cmd1024:
Is Arduino a real embedded system? Why?

When it's actually doing something, why not?