It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
How do I get started writing an operating system that runs on the arm architecture? I want to write a bootloader if possible and my own kernel. Can anyone help me get started?
I'd start by familiarising yourself with what is already out there - Linux is a good start. Look at the bootloaders used in the distributions on the rPi - what is used in Debian Squeeze for example, uBoot and BareBox. Another option is CFE - which is under BSD license and good during debugging/early development.
Another thing is to look at the ucLinux and ucLibC systems, along with buildroot and OpenWRT - all designed to squeeze it onto a small system.
Of course - building your own kernel - you are going to want to go far deeper - and spend time understanding MMU's, process management/multitasking, interrupts and so on. A good background in programming microcontrollers, a knowledge of assembler language and CPU/SOC architecture would be essential. With the ARM family - you'll want to know the various instruction sets supported, and which chips have features like MMU's, FPU's and similar.
Good luck - it sounds like an interesting project.
Related
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 9 years ago.
I have been investigating the use of the PJSIP SIP stack on a small micro-controller such as the PIC32 MCU and I've come to realise that it may just be possible. I want only the absolute minimal SIP functionality so I just might be able to fit PJSIP on a small MCU. Of course, it's a VERY ambitious project but I'm gonna give it a try anyway. I just can't seem to wrap my mind around the right operating system for use so I'm gonna spend a good couple weeks on this subject. I'm gonna take a look at FreeRTOS. Any thoughts on the compatibility of FreeRTOS with something like PJSIP?
I think the project site itself answers your question:
On portability
On Size
The memory resources suggested would be at the upper end for most on-chip memory. The RTOS's listed are all significantly more fully featured than FreeRTOS which provides little more than thread scheduling, timer services, synchronisation and IPC. You'd need to understand what OS services it assumes. Presumably it uses the platform's network stack? FreeRTOS has no network stack - you'd have to provide that too - more resources again.
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
If the compiler converts the high level language (like C++, for example) to the machine code to be executed by the Microprocessor.
Why can't the programs which run on Windows run on Mac or Linux?
As long as a high-level program really is written 100% in C++ or another language and uses no external code at all, it is in fact relatively easy to make it compile on any OS with a compiler, and it will behave in the same way.
The difficulty is that virtually every program uses libraries of the OS, e.g. for Input/Output, UI drawing etc., and these are different on every OS under the sun. In practice, it is impossible to get anything realistic done in a computer program without taking advantage of the massive amount of helper code present in the OS, or in libraries shipped with the OS. This is what makes porting harder - usually not actually difficult, just tedious.
Because a lot of your calls are referencing elements of the OS.
Like drawing, acessing the filesystem. These calls have to be translated, like Java or Qt.
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
I am a programmer with a good knowledge on Java, C, C++ and Ruby.
I know just got an idea of building an operating system, so I bought an empty hard disk and I connected to my SATA cable removing it from my old hard disk. I am somewhat aware of assembly language.
Now my problem is how to start my first program on the hard disk just like adding two numbers or something. Previously, I used micro processor kit to write my assembly level programs (also used MASAMS software).
Will you please let me know for the bare system without any kernel only by having some boot startup program in motherboard how to write programs?
I would suggest starting with a virtualization approach though, it will be much easier to debug and build for.
Once you have something a little more stable you can try it out on actual hardware.
Apart from reading up on the topic (I suggest buying a book or two), maybe you can start by looking at existing projects such as GeekOS for inspiration.
Good luck with your venture!
What you probably want is to write a boot sector program. This should help you. Also note you won't have any of the OS's facilities for printing to the screen so you will need to use the BIOS functions. I recommend you use a VM first instead until you get it right before trying to do it on an actual hard drive. Good luck!
I recommend you to start from MikeOS . It has preliminary introduction to assembly programming and all the tools you need to start your own OS ( including assembler, pc emulator, etc ), and also a very simple operating system which helps you to dive in .
After that, when got familiar with basics, you may want to take a look at OSDev for much more serious stuff . There a lot's of tutorial in there that you can make use of.
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 11 years ago.
Can I write an operating system using machine language directly?
Please give me a general idea or sources as to how to do it.
First, study the x86 or ARM instruction sets. Then, study up on operating systems. You'll see why it's not a great idea: it's like filling a sandbox one grain at a time with tweezers.
Yes, all you need is a lot of patience, sanity, and a binary editor.
After awhile you will realize why assemblers were created, which is the lowest level I would generally bother going to.
** yes you can but this is very diffecult for any one
and if you do this what make programmers and all design programming lanaguages to make things
easily comparing by machine code
and this is project as you ask
it's an OS written in machine code it's still under developing
http://www.magicschoolbook.com/computing/os-project
note : your name is like my name iam glad to answer you
best wishes**
It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 11 years ago.
I have seen Operating Systems described as "the software that controls the hardware". I don't understand what it really is however.
For example, if we are writing code for a calculator, if we write the code to implement the interface between the LCD and KEYPAD, that code is not considered an operating system is it?
what really does "Operating System" mean?
Jack, the wikipedia page on operating systems gives a pretty good overview to start with. To put it pretty simply, when you want to run multiple pieces of software on a single piece of hardware (in your case, the ARM chip) then something needs to control the access to the hardware. The operating system will schedule tasks and allocate hardware to allow the multiple different bits of software to co-exist peacfully. Without this control, there is no way to run multiple pieces of software at once. Your calculator example would not require an operating system, as it is a single piece of code to do a single job.
For compilers for the ARM devices, I would suggest looking at either GCC (which I believe can cross compile to ARM) or getting a development kit, which will likely come with a suite of tools to allow you to develop on it.
I'm afraid I can't help you on which version of ARM chips to choose though, as my experience with them is a little limited. If price of the hardware is an issue though, I believe the ARM 7 hardware will be cheaper, but it is always worth comparing.
Hope this helps.