Wednesday, 31 July 2013

Kernel released on github

So I've finally decided to release my microkernel on github after I started working on it again. You can check it out here.

Wednesday, 29 August 2012

Ada Microkernel

After some minor modifications to gcc, it's possible to create an Ada Runtime System (RTS) that's compatible with bare-board processors. Using this, it's possible to port over (or start to) my sos2 microkernel from C to Ada. Why Ada (specifically Ada 2012) over C for a Microkernel? Generics, inhertiance with tagged types and polymorphism with interfaces. More interestingly? Pre and post condition checks at runtime. This means that you'd be able to get close to a verified microkernel. Nice eh?

Tuesday, 3 July 2012

Sega Emulator on RaspberryPi

After receiving my new Raspberry Pi I got straight to it in finding a nice use for it that *wasn't* a media player. After a bit of research, the most recent Sega emulator seems to be DGen/SDL. Compiling on the target I had to use --disable-hqx otherwise it barfed, not a complete surprise. Anyway, you can clone the git code and run autoconf with SDL development libraries installed prior and off you go. Hmm so which emulator next? EDIT: IT works! The way to get it working is to disable OpenGL on the command line (-g 0) and now Sonic runs smoothly!

Monday, 9 January 2012

Kernel workings

It's been a while since I've worked on it but I've started again and I've done a bit of work on the console interface along with a few fixes to the priority scheduler.

Time to knuckle down and and fix the IPC.

The two fatal errors are caused by the lack of a CRT for the two user-mode programs.

Monday, 17 October 2011


I've been doing some more work on the microkernel and have got to the point where a user-mode application can create other processes and threads, get its priority and so on and also - semaphores!

They're counting semaphores with support for priority inheritance. Unfortunately it's still a basic round-robin scheduler so it's a little harder to test it yet but hopefully soon it'll be possible to work on some more posix-like code to try and support some BSD style services or networking like Lwip.

Of course, the driver model needs to be tweaked first as the rather limited kernel mode drivers need to be updated & IPC needs to added support user mode drivers.

Sunday, 7 August 2011

I'm back.

I spent a bit of time offline.

Largely due to work and also I just didn't have anything useful to post.

In the last few months I've re-started and re-written my microkernel. This time I re-designed the architecture and put some more thought into it. Now it supports device drivers, alarms, timers and pre-emptive scheduling. It even has a few syscalls already.

The idea is to progress it far enough to support a bit of newlib.

I'd also like to get it ported over to ARM and getting running on some hardware.

More to follow.

Panasonic BDT210 DLNA Working, Finally.

I recently purchased a new Panasonic BDT210 Bluray player. It's fantastic. It does 3D (not that I have a television to support it) and plays everything and sound great.

However. I tried to fire up the DLNA Client with my Twonky Media Server. Fail. Even setting it to the correct profile didn't seem to keep it happy. I placed the ffmpeg binaries into c:\ffmpeg and enabled transcoding on the web server. Still, nothing.

Then I found Serviio (

After binding it to the correct port and giving it a reset, the player saw it. Then, I set the profile to the 'Sony Bravia' and enabled transcoding on both cores.

Tada! Serviio has ffmpeg built-in and does the transcoding to MPEG2 which is what the Panasonic BDT210 supports. I imagine with enough tinkering this would also enable you to do the same with TVersity or similar but Serviio just worked straight out the box.