OS of Arduino?

Okay so I was trying to determine how to connect a USB camera to arduino, and one of the answers on the forum was its not really possible without a full OS, like how Raspberry Pi has Linux. That made me wonder, what OS is on the Arduino Board? I know you can use a computer with Windows/Linux/Mac OS, but I don't recall seeing the OS that's on the board.

Well arduino is not a fully working computer (as raspeberry does), so you don't have an operative system in it, i would say that you build that operative system instead.
So the arduino doesn't have an operative system, it only thing it has it's called bootloader, which is the "bios" of that micro-computer.
Also, arduino works at 16Mhz, which means that you don't have enough processing capacities to process an intire picture.
But you can install something called Serial Jpeg Camera, then you can take pictures and use them as you want, it's the easy way

And study up on the Arduino IDE and have a play with it.

Do you have an Arduino yet? Apparently not. Go and get one, install the IDE and run some sketches.

If you want to do stuff with a webcam, do as you have previously researched - go get a SBC like a Raspberry Pi.

rovdude:
what OS is on the Arduino Board? I know you can use a computer with Windows/Linux/Mac OS, but I don't recall seeing the OS that's on the board.

The Arduino has no OS.

It has no file system, no display, nothing that would need one. All it has is a handful of I/O pins and you don't need an OS for that.

All it has is a handful of I/O pins and you don't need an OS for that.

To be sure! But, there are some decent RTOS code available for the AVR that let them seemingly multi-task or more appropriately "schedule" jobs.

For the newbie, back in history when the CPU was put on a silicon chip, there was a requirement for a support chips to manage the processor bus, add memory, and generally handle timing. These devices evolved quickly into microprocessors that were used in the Apple, Commodore, Radio Shack, (etc, etc) and IBM PC.

Microcontrollers evolved when the CPU and Memory and I/O controller was all integrated onto the single chip. It's a bit more complex, but Wikipedia does a fair job on this one:

Ray

Thanks everyone, very helpful.

Paul__B:
Do you have an Arduino yet? Apparently not. Go and get one, install the IDE and run some sketches.

I actually have a Mega2560 and an Uno(that I don't use much). The Mega is used on an underwater ROV i designed basically grabbing sensor data and sending it back up to my computer to be displayed in Processing, as well as a camera feed(Currently using a USB to Cat5 converter for this one). I just have to test it in the water (I live in Baltimore, USA, our waterways are still frozen or semi-frozen) to see how well I did with the physics aspect. My program runs perfectly though.

mrburnette:

All it has is a handful of I/O pins and you don't need an OS for that.

To be sure! But, there are some decent RTOS code available for the AVR that let them seemingly multi-task or more appropriately "schedule" jobs.

Is it actually used or is it just some academic "research" project?

Is it actually used or is it just some academic "research" project?

Most have forum links for a description and some are even written by senior forum members. Most are free but there are a few commercial. Unfortunately, I have absolutely no idea of the penetration of this software in numbers. I've never personally deployed one, but I have played around in the lab and find that most do a good job if you take the time to read the caveats; which is to say, that each seem to fill a particular need better than a generic need which would be the general description of RTOS.

Ray

Although the Arduino does not have an OS as such, it does have a set of core libraries which provide an API of sorts, and which simplify complex tasks such as serial I/O, timers, analog I/O, etc., so that the developer is not forced to program to the "bare metal". Many people, myself included, will use these core libraries, but will discard the IDE for something more professional.

tsunamy_boy:
Well arduino is not a fully working computer ...

Of course it is.

Sorry guys, You are all wrong There are 337 angels on the head of a pin :slight_smile:

...R

Sorry guys, You are all wrong There are 337 angels on the head of a pin smiley

Darn, my pinhead is defective: I have 360 darn angles (not a single angel...). I have been warned about buying those Chinese knock-off pinheads and I just could not resist the price and free-shipping! $)

Although the Arduino does not have an OS as such, it does have a set of core libraries which provide an API of sorts, and which simplify complex tasks such as serial I/O, timers, analog I/O, etc., so that the developer is not forced to program to the "bare metal".

Yes.

Many people, myself included, will use these core libraries, but will discard the IDE for something more professional.

Interesting that you imply the IDE is less-professional than other options which you imply are more professional. I disagree in the term "professional" since many professionals use gvim and gedit, and other tools that are similar to the Arduino GUI. Really, really clever professionals may even take the Java source and make their own best of breed. IMO, the key thing about the Arduino GUI (especially 1.5.x) is that it does what is actually needed for most users. There is a lots that can be positively said about a tool that is easy to learn, integrates perfectly (although with constraints) with the hardware and software, and generally performs well. So, again IMO, I think the GUI is professionally done because it meets the requirements to a "T" and does not try and over-achieve and add complexity. There are many other GUI options available for AVR-GCC and like ice-cream, everyone has an option to choose their favorite flavor.

But the core libraries do present their own problems for professionals since the abstractions used do impact AVR performance, some significantly. Also, since you consider yourself a Professional, I am curious if that relates to a corporate work environment. I am retired from a Fortune 100 company and when I was in IT, the very thought of using the Arduino core libraries would have gotten one fired: because of the GPL/LGPL requirements as well as the complete lack of any indemnification and guarantees ... things that keep lawyers awake during lunch.

Ray

tsunamy_boy:
Also, arduino works at 16Mhz, which means that you don't have enough processing capacities to process an intire picture.

Well, that's just nonsense, isn't it?
It doesn't have a lot of memory either, but that doesn't prevent you doing image procession on it either.
It all just depends on how patient you are.

microcat:
Although the Arduino does not have an OS as such, it does have a set of core libraries which provide an API of sorts

Libraries/APIs aren't the same as an OS.

The intent of the Arduino is as a microcontroller - running a single specialized program to service whatever hardware is attached to them.

They're flexible computing devices so an "OS" couldbe created, eg. A game device could load games into flash memory from SD cards and run them. That's OS-like behavior.

OTOH there's no "Arduino OS", which is what the original question was about.

OTOH there's no "Arduino OS", which is what the original question was about.

I concede to the fact that there is no "modern" definition of an operating system for Arduino, but from a pure definition point of view, only 3 things are required for software to function as an OS:

  • Kernel
  • Kernel abstraction of h/w resources
  • Application programming interface presented by kernel

So, I am not certain in my mind that an absolute "NO" is proper. The Arduino core libraries do provide an abstraction of hardware resources, and could be considered a very minimum abstraction layer. The core libraries do present an API, although very minimum and additional libraries are traditionally used with most programs.

When we link in the core libraries, software serial, SD filesystem, then we do have a micro-OS in the broadest of definitions. Many RTOS (ChibiOS/RT, FreeRTOS) do provide preemptive functionality.

Perhaps we would be best served to suggest that there is no 'official' Arduino OS. Certainly, one can be created either as a grass-roots effort or like Frankenstein by stitching together pieces of public-domain code. The question remains if the remaining flash/SRAM resources left to the user would allow a productive environment and I tend to vote in the Yes class because I have played with the current RTOS and they do work as stated.

Ray

mrburnette:
I concede to the fact that there is no "modern" definition of an operating system for Arduino, but from a pure definition point of view, only 3 things are required for software to function as an OS:

  • Kernel
  • Kernel abstraction of h/w resources
  • Application programming interface presented by kernel

I don't agree that the Arduino has a "kernel" - there's no program space which is separate from your sketch.

To me an OS has to be able to load/run/manage different programs at the request of the user. Without the "application" layer it's not really an OS.

Wikipedia seems to agree: Operating system - Wikipedia

but from a pure definition point of view, only 3 things are required for software to function as an OS:

Plus management of system resources (memory, I/O, processor...)

mrburnette:

OTOH there's no "Arduino OS", which is what the original question was about.

I concede to the fact that there is no "modern" definition of an operating system for Arduino, but from a pure definition point of view, only 3 things are required for software to function as an OS:

Ray, did you read the OP? Do you think he needs this info? :slight_smile:

...R

Ray, did you read the OP? Do you think he needs this info?

Oooooh... me thinks the forum is getting uncomfortable because the lines of what an OS is are not so distinct :fearful:

Dr. Bruce R. Land of Cornell University has further caused me to take pause and reconsider what a microkernel needs to perform to be a at the bottom of the OS totem pole. Since we are in Wikipedia-quoting mood today, here is the link:

In summary:

These mechanisms include low-level address space management, thread management, and inter-process communication (IPC).

Anyway, I'm out of here for dinner. Here is the latest from Professor Land - a Preemptive kernel for the Atmega1284:
http://www.hackster.io/bruceland/preemptive-kernel-for-atmel-mega1284?offset=1&ref=user&ref_id=738

From the research paper, a direct quote;

The operating system I will describe, called TinyRealTime (TRT) was written by Dan Henriksson and Anton Cervin

Ray

mrburnette:
Here is the latest from Professor Land - a Preemptive kernel for the Atmega1284:

From the research paper, a direct quote;

The operating system I will describe, called TinyRealTime (TRT) was written by Dan Henriksson and Anton Cervin

"Research paper"... 'nuff said.

Next up: Preemptive multitasking on the Turing Machine.