Arduino Operating System

I have seen many(several) operating systems designed on arduino (like Pyxis), and have a project in which I want/need to create my own. I have experience in other areas of programming for game development and a small bit of direct gpu programming in Dx12; but and Operating System, speciallly being single threaded, is new grounds. I can't find any tutorials or series that will help me learn to figure this out.

Have a look at some of the existing OS's for Arduino compatible devices and work out how to differentiate your creation from these. Maybe start with a desired feature list.

I can understand the attraction of figuring out how to write a simple OS for an Arduino but I find it hard to see any practical value as it just (IMHO) uses up CPU cycles and RAM that could be better used for the project itself.

...R

Robin2:
. . .
but I find it hard to see any practical value as it
. . .

I'm afraid that that is also true for the vast majority of projects that appear here, which turn out to be the product of school exercises in one guise or other.

This preemptive multitask kernel named Babix might be a good starting point for your OS project:

http://perso.ensta-paristech.fr/~pessaux/alius/arduino.html#Babix

6v6gt:
I'm afraid that that is also true for the vast majority of projects that appear here,

I guess I meant that an OS will not enhance any of those projects in any useful way :slight_smile:

...R

I guess I meant that an OS will not enhance any of those projects in any useful way

In fact quite the opposite. It will run slower, use up more memory so the maximum size of a project will be smaller. But the big problem is the illusion that it will save you any time in implementing your project. What you save by not having to learn the correct programming skills, you will spend by trying to find out what is going wrong with your OS and fixing it.

Grumpy_Mike:
What you save by not having to learn the correct programming skills, you will spend by trying to find out what is going wrong with your OS and fixing it.

+1

...R

My (non-school) 'project', I want it to display an output (cheap text graphics), select a program from an SS card, run it, be able to close it at any point, and be able to freely select a new program (not needed to write the program). Having a homemade OS would be useful as for having a second process running in tandem to be able to close the opened program (which I would like to have more than 10), at any given point- without restarting.

grimofdoom:
My (non-school) 'project', I want it to display an output (cheap text graphics), select a program from an SS card, run it, be able to close it at any point, and be able to freely select a new program (not needed to write the program). Having a homemade OS would be useful as for having a second process running in tandem to be able to close the opened program (which I would like to have more than 10), at any given point- without restarting.

More than 10 what?

I would pretty much like to make a 'hacking' tool out of an arduino, to preload tools/'apps' in that would be useful or for specific purposes. Such as an oscilloscope, thermostat tester/hvac unit emulator (I work in HVAC and this would be highly useful), or even ethernet cable tester( making sure wires are properly paired for X type).

grimofdoom:
My (non-school) 'project', I want it to display an output (cheap text graphics), select a program from an SS card, run it, be able to close it at any point, and be able to freely select a new program (not needed to write the program).

You know that Arduinos can not execute any code stored in RAM, like you are used to?

I wouldn't mind if I had to use multiple atmega chips (1 for interpreting, 1 for grabbing, 1 for gpu...etc)

Arduino DUE can execute code stored in SRAM, and MUST execute code stored in SRAM for some commands, otherwise they can't be executed.

grimofdoom:
I wouldn't mind if I had to use multiple atmega chips (1 for interpreting, 1 for grabbing, 1 for gpu...etc)

You might not mind but that is simply not how the Ardunio the processor works.
And if those are your requirements and you have to ask such a low level question then forcing an Arduino to behave anything like this is not going to happen.

ard_newbie:
Arduino DUE can execute code stored in SRAM, and MUST execute code stored in SRAM for some commands, otherwise they can't be executed.

ARM Cortex M3 Processor

10.2 Embedded Characteristics

Version 2.0 Thumb-2 (ISA) subset consisting of all base Thumb-2 instructions, 16-bit and 32-bit.

Harvard processor architecture enabling simultaneous instruction fetch with data load/store.

The datasheet lets me believe different,

or at least only see RAM execution somehow banked/emulated.

grimofdoom:
My (non-school) 'project', I want it to display an output (cheap text graphics), select a program from an SS card, run it, be able to close it at any point, and be able to freely select a new program (not needed to write the program). Having a homemade OS would be useful as for having a second process running in tandem to be able to close the opened program (which I would like to have more than 10), at any given point- without restarting.

Which cries out for an interpreter like Bitlash, or roll your own.

(Or Forth)

grimofdoom:
I have seen many(several) operating systems designed on arduino (like Pyxis), and have a project in which I want/need to create my own. I have experience in other areas of programming for game development and a small bit of direct gpu programming in Dx12; but and Operating System, speciallly being single threaded, is new grounds. I can't find any tutorials or series that will help me learn to figure this out.

In my experience, a single-threaded system is called a monitor, not an operating system. The old Microsoft DOS was a monitor, not an operating system.

Paul

Paul_KD7HB:
The old Microsoft DOS was a monitor, not an operating system.

Hence its name Disk Operating System?

So at least Bill Gates had a different nomenclature. :wink:

Whandall:
Hence its name Disk Operating System?

So at least Bill Gates had a different nomenclature. :wink:

Marketing term! Years ago, the President of my old company kept telling potential customers we had a "client server" system, in fact we had a "file server" system written in COBOL. Saying it over and over didn't make it so, but competition was also saying it, so must be ok.

Until some clever people built additions to MSDOS, it could only do one thing at a time. The first time MS had a real operating system was after they bought DEC and brought in their OS people to create Windows NT.

Paul