What was done to porting minix to Raspberry Pi 2/3

There are some work done in this field.

What is done and dev history is available at: https://github.com/boricj/minix

A global journal is available at:

https://groups.google.com/forum/#!topic/minix3/OLCpnlxVbs4/discussion

There is two main branches available in github in the following addresses:

Branch rpi3

https://github.com/boricj/minix/tree/rpi3

Development history

https://github.com/boricj/minix/compare/e79c7d0…boricj:rpi3

Although there is 168 changed files, near 100 is about the presentation done on this, so are pngs and the necessary code to show and another extra stuff.

These are the description for the 30 commits

  • Fix ARM build on my machine
  • Initial creation of RPi image with U-Boot
  • Update U-Boot revision
  • Boot until jump to high virtual addresses
  • Add U-Boot boot script to SD image
  • Working on hypervisor problem
  • Work
  • Yet more work
  • Switching into supervisor mode. Finally.
  • Add trace messages
  • Fix crash due to overwriting secondary cpu boot code
  • Interrupts and clock running
  • Interrupts and clock working for more than a second
  • Gestion de UART pour rpi3
  • Makefiles: virtual address
  • TTY
  • tty working, minimalist ramdisk environment working
  • first shot at fbdev
  • fix UART on real hardware
  • remove verbose messages
  • framebuffer
  • cleanup kernel
  • rework bootloader so it can boot on both rpi 2 and 3 at the same time
  • working framebuffer
  • gpio driver
  • cleanup tty
  • partially unbreak omap build
  • Presentation
  • Presentation
  • kernel: add support for system timer

This not run on rpi3 only in rpi2

From author
The port is functional enough to allow running a presentation on it.
With a few small modifications to the boot ramdisk, PNG files can be directly decompressed to the framebuffer and the GPIO pins can be used as forward and backwards buttons. A simple shell script launched on boot is used to run the show.

 

Branch rpi_clean

https://github.com/boricj/minix/tree/rpi_clean

Development history

https://github.com/boricj/minix/compare/ad60a88…boricj:rpi_clean

This branch had 8 commits and 60 files changed

  • Introduce BSP_NAME
  • Use BSP_NAME when building kernel
  • kernel: remove hard-coded defines in earm
  • kernel: add support for Raspberry Pi 2 and 3
  • tty: add support for Raspberry Pi 2 and 3
  • fb: add support for Raspberry Pi 2 and 3
  • gpio: add support for Raspberry Pi 2 and 3

 

From author

Rebased and cleaned branch on top of master. It boots on QEMU but hangs on the real hardware. While I can’t rule out an error in the port itself, it is consistent with issue #104 which prevents MINIX from booting on real ARM hardware

Issue 104 > https://github.com/Stichting-MINIX-Research-Foundation/minix/issues/104

 

Further developments

nekorobov branch the rpi_clean an develop it further

https://github.com/nekorobov/minix/tree/rpi_clean

https://github.com/nekorobov/minix/tree/rpi_clean_dev

https://github.com/nekorobov/minix/tree/rpi_clean_driver

 

Branch rpi

Historical first try

https://github.com/boricj/minix/tree/rpi

https://github.com/boricj/minix/compare/master…boricj:rpi