Opened 11 years ago

Closed 8 years ago

#523 closed enhancement (worksforme)

Implement support for Raspberry Pi (arm32)

Reported by: Martin Decky Owned by: Jiri Svoboda
Priority: major Milestone: 0.7.0
Component: helenos/kernel/arm32 Version: mainline
Keywords: gsoc13 Cc:
Blocker for: Depends on:
See also:


Implement support for the Raspberry Pi machine (arm32 big-endian architecture).

Raspberry Pi is an extremely popular and cheap microcomputer built by the Raspberry Pi Foundation in UK. The machine contains a Broadcom BCM2835 CPU/GPU, an ARMv6-derived SoC. Except for some GPU-related parts the hardware is very well documented and support for it exists in several open source operating systems. Since the work on supporting this machine in HelenOS has already started, the goal of this ticket is not only to implement basic kernel functionality, but to implement extensive functionality of Raspberry Pi, including (but not limited to) HDMI output with mode-setting, USB input, SD card block device access, etc.
What Gains and Benefits will this bring?
As the Raspberry Pi is a rather simple, but still full-fledged microcomputer extremely popular in the hackers community, implementing a full support for it in HelenOS might bring new users and developers to HelenOS. As with any port to a new hardware, it should also hint any possible portability issues in HelenOS and it should improve some minor functionality aspects of HelenOS.
Required skills
A successful applicant will need to have very good skills in programming in the C language and the ability to learn how to drive hardware based on various information sources (official documentation, source code of other operating system projects and emulators).
Possible mentors
HelenOS Core Team, Martin Decky, Jakub Jermar

Attachments (1)

helenos_clean_against_1771.patch (14.9 KB ) - added by Roc Vallès 11 years ago.
Very basic (boot+uart write) support for the raspberry pi platform.

Download all attachments as: .zip

Change History (10)

comment:1 by Martin Decky, 11 years ago

Keywords: gsoc13 added

comment:2 by Roc Vallès, 11 years ago

I have Raspberry Pi booting (to userspace) since a week ago. Been holding the patch because I was cleaning it up and writing an article on how it was done. I guess I'll just post it now.

comment:3 by Martin Decky, 11 years ago

Yes, I acknowledge your effort. But is there really nothing missing? This ticket calls for a complete support, including USB support, ethernet support, S-video output, HDMI output (with modesetting), etc.

Last edited 11 years ago by Martin Decky (previous) (diff)

comment:4 by Jakub Jermář, 11 years ago

It looks as if two people have independently worked on this so far (ben_g and rvalles)…

by Roc Vallès, 11 years ago

Very basic (boot+uart write) support for the raspberry pi platform.

comment:5 by Roc Vallès, 11 years ago

I have very basic support (uart write and booting to userspace), but it's not cleaned up. I am also working on an article explaining the process followed so far with the port.

Since I've noticed this ticket, I decided I might as well drop the code on its current state in order to prevent duplication of work. This is code for review. I've also sent a copy to the list.

I removed all my debug statements for this patch and I'm aware and working on moving magic constants into headers. Please comment on anything else that might be wrong. Meanwhile, I'm updating it for the current head.

in reply to:  3 comment:6 by Roc Vallès, 11 years ago

Looked at the tree by ben_g and as far as I can see he's got it working further than me.

I'll now finish the article, as having an account of the experience will probably still be interesting.

As I'm now a bit familiar with the porting process, I might want to look into doing some related work.

comment:7 by Jakub Jermář, 10 years ago

The basic Raspberry Pi support was merged in mainline,2055.

comment:8 by Jakub Jermář, 9 years ago


Support for MIPS Malta is still half-baked, retargeting for after 0.6.0.

comment:9 by Jakub Jermář, 8 years ago

Resolution: worksforme
Status: newclosed
Note: See TracTickets for help on using tickets.