Spider-OS

Follow @os_aran
Videocore : textured cube in rotation
2019 Apr 5

That's it, I finally managed to make 3D with the Videocore. I made a program that displays a cube with a texture on each side. In addition, it is rotated.

I had to learn some notions of 3D to display the cube in perspective correctly. You can see below a video of the result obtained with my Raspberry Pi.

It interests you ? The tutorial here.

Comments : 4
Videocore : draw triangles
2019 Feb 22

The Raspberry Pi is equipped with a powerful graphics processor Videocore 4. Nothing better to have a rich and fluid graphical interface. But you have to know how to program it ;-)

In this post, I show you how to program it to display three overlapped triangles, as in the screenshot below (done on my Raspberry Pi).

Snapshot triangles

Comments : 1
Windows manager
2019 Feb 10

Quickly when coding the GUI, I realized that a window manager was needed. The number one issue is taking into account the overlap of the windows. I display a window A, and then I display a window B on top: what happens to the part covered ?

window overlap

Second issue, if I reduce the window B, I have to erase it, so you have to save it somewhere else. Also if there is background processing in this window, this one must be updated (including if it is minimized).

window minimize

And then we have to restore the area that was covered by window B.

window restore area

I explain to you how I did : here

Comments : 1
Basic components
2019 Feb 2

Here is a list of components that I intend to develop for Spider-OS. Most of them are indispensable because they are basic components of the system.

Multitask preemptive and multiprocessor kernel

This kernel allows the execution of several tasks at the same time. The preemptive kernel gives a CPU time to run, after the time elapses, the process is suspended, and another process is executed. Which gives the illusion of simultaneous execution. The big advantage, too, is that if a process stops responding, the system still keeps the hand. I have already developed a kernel in this sense, but I must see it for the load distribution on several processors.

Memory allocation

This module is already created. It allows me to allocate memory space for any program that needs it. It also manages the release, or the reallocation in the event of a change in size.

File manager

Read and write a file on the SD card taking into account a hierarchy of directories. I would like to create a new file system, other than FAT32, because this one incorporates many fields not really useful and it is split up. The idea is to be able to write the data rather brutally, with a descriptive field succint. I think I am inspired by the memory allocation module for changing the location of files, in case of change in size.

Command interpreter

When the Pi starts, a console appears and allows you to directly type commands in text mode. This module must interpret the commands entered and execute the programs accordingly.
At this level, you can also type the instructions of a new programming language, for example to create variables and initialize them with a value.

Graphical user interface

I created a module that allows you to view and overlay windows. This module works thanks to Neon, which allows a fast copy of the data in memory. The typed text appears in a text box, and you can move the cursor or erase the text.
Good news, I no longer exclude the Videocore for the realization of the window manager. I managed to take into account the Z depth. So I will continue the development with the Videocore.

Compiler

The purpose of this system is to be able to create programs in a structured, easy and powerful language. I think I am inspired by the syntax of a new language that is emerging: Julia. So you have to create a system that analyzes the typed code, to make the transcription in machine language : this is called compilation. Any program will be composed of the code in user language with the associated machine code.

Process Management

In correlation with the multitask kernel, each program can be executed x times (for example a text editor). For this, a resource reservation module will assign a process number and a memory area for the program instance. A small program should allow to visualize the processes in progress.

and then

Once all these basic modules are in place, we can move to additional modules for home automation:

  • wireless communication : wifi, bluetooth, zigbee ...
  • wired communication : i2c, gpio, ethernet ...
  • Comments : 0
    Logo
    2019 Jan 26

    And now a little logo for Spider-OS. I was inspired by the Raspberry Pi logo.

    Comments : 0
    State of play
    2019 Jan 25

    I started programming Spider-OS, more than a year ago before this website, and several elements are now realized.

    The system runs on Raspberry Pi 2 and Pi 3 (the Neon component is needed).

    Here is the list of modules made in assembly language ;-) :
  • the kernel with interrupt management
  • UART PL011 serial unit, it allows me to debug
  • the display via the framebuffer and the mailbox, and Videocore (difficult to program the Videocore, because the available documentation is limited)
  • a memory allocation module
  • USB support : support keyboards, and some keys : a lot of work to operate the USB correctly, but hey it is so essential
  • SD port : read SD cards, with FAT32 format supported
  • the different timers (Generic, local, system): necessary for multitask in particular
  • the user interface with window management
  • One of the many documentations I used for this work : BCM2835-ARM-Peripherals.pdf
    This is the documentation on the main component of Raspberry Pi.

    Here I am now designing the keypad command interpreter.

    Comments : 0
    Website change to post comments.
    2019 Jan 19

    Hi, here is an important change of my site, which now allows you to post comments. To do this you must click on the post title, and then create an account (with the link registration).

    A nice job that allowed me to discover HTML, PHP and SQL queries. Of course, Google is our friend, but I want to recommend a free online training site, which has helped me a lot: https://openclassrooms.com/en/. The majority of classes are however in French.

    Comments : 2
    Welcome
    2019 Jan 8
    Logo Raspberry Pi

    Welcome to my website. I just opened it on January 8, 2019.

    It is dedicated to the Raspberry Pi and more particularly to the design of a new operating system. I work on this project in my spare time. That's right, there is a multitude. But often based on Linux. The idea is to design a system from scratch. In order to obtain a truly optimized system in terms of size and power.

    The challenge that I have set for myself is to do all the programming in assembly language. It's difficult, and I would not be able to make a modern operating system like today's. But my ambition is quite different. This is to make the Raspberry a computer that starts very quickly, and gives access to a programming interface. Like a Python interpreter, for example. And to be able to control the whole house with home automation.

    Several protocols interest me, especially wireless ones, like Zigbee. More and more connected objects can now be controlled by smartphone. The interest of Raspberry would be to be able to drive all these objects centrally. And especially to make programs to drive them!

    No more online interfaces, and dependent on an external website, that we do not master. The Raspberry Pi may be offline.

    Here is the general idea.

    I will update this web site in parallel with the design of this spider-os operating system.

    For now you can post your comments on: contact@spider-os.com

    Aran.

    Comments : 0
    Page : 1