Raspberry Pi bare metal programming - operating-system

I have just recently finished an OS internals and design course at school and thought it's about time I start developing my own Operating System (a very simplified one) for an additional Raspberry Pi board I won at a programming contest last month. The class I had was more focused on the theory and had very little attention to the practical thing. So, I guess my question is: Is there a good operating system design book/tutorial I can use to develop a basic Operating System on ARM11?

Related

Is Apples hardware not as customizable as other machines that run on Windows because their OS is built more specifically?

Preface: I'm a student about to take a course in Operating Systems. I thought I'd do some prep by watching a series on YouTube first.
Throughout the course of watching about 10 of the videos in this series, I have learned that roughly the operating system's purpose is to serve as an interface for System Programs/Applications/I/O devices/etc. to communicate with the system's hardware.
This got me thinking about how Apple's hardware is not modularly customizable. How Apple users can't swap out hardware components as easily as users on a system running Windows OS. I began to think that most likely this is because the OS Apple implements is built very specifically with the original hardware their products come with to run as efficiently as possible.
Is there any truth to this logic? I'm basically just trying to apply what I've been learning to a "real-life" example.
This got me thinking about how Apple's hardware is not modularly customizable.
It is quite customizable but not with their own hardware. The "hardware" that Apple is shipping is mostly x86-64 CPUs with a recent chipset like an xHCI, an AHCI and a modern PCI network card, etc. This is unless you have an M1 computer which is their most recent product based on an ARM architecture. They licensed the architecture from ARM ltd. and are manufacturing their own CPU. I think this is a very good and open decision from Apple unlike several bad ideas they had about their phones like removing the 3.5mm jack or using a lightning plug instead of USB-C.
If you do have an x86-64 CPU, the OS Apple built called MacOS can run on the computer. It is simply forbidden by Apple's license of use. The fact that their hardware is less customizable has mostly to do with screws and the way that the case is made than with the OS itself.

Real time OS (RTOS) for Raspberry Pi to make a CNC Controller

this is my first post please be kind.
I have experience programming C++, but it has been a few years since I did anything...
I would like to program a real-time CNC controller, to run CNC machines without a motion controller. I will use a Raspberry Pi and connect it to a MESA card for running all the physical inputs and outputs.
The application and GUI for touch screens will in the future support a small simple slicer for 3D printers, and some simple CAM operations for graphically programming CNC machines for simple tasks.
What RTOS would you recommend to build my program on?
-I have thought about making a Linux based system run realtime, or maybe use Zephyr OS.
Please share your thoughts.
Regards William

What microcontrollers don't require a USB to UART driver to interface with computer? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 1 year ago.
Improve this question
I am currently teaching a remote middle school summer camp next year that involves microcontroller programming. I’ve chosen to avoid Arduino microcontrollers for the camp and use a MicroPython compatible microcontroller instead. One microcontroller that I am interested in using is the Lolin V 1.1.0 with an ESP-Wroom-32 chip since it is cheap and reliable.
One downside that I’ve noticed with this MCU is that a VCP driver needs to be installed in order to establish a USB to UART connection (It contains a CP210x chip). I’m not too sure how many Operating systems have a VCP driver installed by default. However, I tested to see if the microcontroller was able to be registered on three of my different laptops. On two MacBook airs, my computer was successfully able to locate the MCU without a virtual driver installed. Similarly, I used a Windows computer and a connection was able to be established after 10 minutes (Not sure why it took this long). Finally, I tried it on my friend’s European MacBook and his computer wasn’t able to locate the microcontroller until I installed the driver.
I’m expecting that the camp would be ~300 students and I don’t want anyone to not be able to connect with their Microcontrollers and don’t want to include the installation of the driver since it can be tedious.
Does anyone know how big companies that teach Microcontroller programming to beginners such as MicroBit, Raspberry Pi, or Arduino deal with this problem? How do they ensure that the microcontrollers are read by the computer without having to have students to go through the tedious process of installing a driver?
What percentage of Operating systems have a CP210x VCP driver already installed?
Are there any microcontrollers that don’t require a USB to UART driver installation altogether?
Thanks!
Ryan
It's usually not so much dependent the choice of microcontroller, but rather the USB-UART chip on board. There aren't many of those to choose from. SiLabs CP210x and FTDI's FT232/FT2232 are widely used families, so you can't really go wrong with them. Windows installs drivers for both automatically and seamlessly. Linux has support built into the kernel for all major distributions. Don't have experience with Macs, I'm a little surprised you had to do anything manually. Driver support for FTDI devices tends to be a little better across the board.
If you're interested in ESP32 and have a little more budget than for the Lolin, feel free to try the ESP-WROVER-KIT which has the FTDI FT2232HL chip and is generally much more feature-rich.
The only one I am aware of that is pre-installed in windows is microchip PIC (eg PIC16F1454) but a PIC is not the best device for teaching. You have to run an application on the device to use USB VID:PID 04D8:000A.
I don't have a machine to test it but maybe a microchip MCP2200 (04D8:00DF) will be the same.

all concept need to have for a beginner development realtime operating system

I am a beginner in development realtime operating system (RTOS). I want to study with concepts in the OS first. I also tried to search the list of concept need to know for development a RTOS. I don't think, I will develop new rtos in this time. I only want understand a realtime. Something like https://github.com/TrampolineRTOS/trampoline

Hardware for Operating System development

I am heavily interested in Operating System theory and design and have decided I would like to play with developing an OS. I have a background in x86 assembly and have looked into ARM also. I would like a development board to develop the OS for. Has anyone had experience with OS development and/or can suggest some hardware to use?
One board I am considering is the LPC1769 LPCXpresso board.
I am aware I could use a VM, but I would like to use actual hardware.
Well.. I personally started off with an RTOS called freertos (http://www.freertos.org/). This is an open source RTOS and is very minimalistic. It is also supported across a ton of platforms and is well written and maintaned. I ran it on a PIC32 microcontroller kit. However I would recommend you try something like Arduino boards which are more suited for beginners.
Happy learning!
Old thread, you have found your way by now, but I would definitely recommend the FreeRTOS + LPCXpresso 1769 combination.