Category Archives: Inferno OS

Lab 25, network, part 2

After the Lab 24 when we prepared the layout I took serious study of the ways to implement the ethernet driver. And I found that there is actual convergence of 2 ways of implementation that I saw in previous lab. Comparing to implementation of ethernet driver in C (ether.c, smsc.c) it is enough to have […]
Also posted in Blog, Projects, Raspberry Pi, Research, Usb | 3 Comments

Lab 24, network, part 1

This lab will be short; we will add all network modules needed for network layout and make a roadmap how to make the Raspberry Pi ethernet driver. First have a look at other ports and inferno and find what is needed to compile with network support.
Also posted in Blog, Raspberry Pi, Research | 1 Comment

Lab 23, hard disk or SD card

Before this Lab, the only way to bypass information to our Raspberry Pi machine, was the TFTP which downloads kernel from development machine (used Mac). Because kernel also includes root filesystem, we can embed some files there to have minimal read-only filesystem which allows to run dis files and do some testing, like experimenting with […]
Also posted in Blog, Raspberry Pi, Research | 2 Comments

Lab 22, Usb keyboard

In previous lab we approached very close to get working Usb devices. In this lab we will try to get Usb keyboard working:
Also posted in Blog, Raspberry Pi, Research, Usb | Leave a comment

Lab 21, porting usbd, fixed in allocb, see usb in actions

From previous lab 20 we got /dev/usb connected in our system, but what to do with it? Different systems handling usb in different ways, but Inferno and Plan9 has /dev/usb just as communication filesystem which should managed not by kernel but user-space process usbd which by communication with the file server manages the connectivity and […]
Also posted in Blog, Raspberry Pi, Research, Usb | Leave a comment

Small news about Inferno-Rpi Labs

Just small update: To keep track of codebase of the Inferno OS on Raspberry Pi Labs we created the google code project to keep the repository and do other stuff related to the labs managements: https://code.google.com/p/inferno-rpi/ All Labs-Commits: https://code.google.com/p/inferno-rpi/source/list
Also posted in Blog, Raspberry Pi, Web | Leave a comment

Lab 20, devusb, usbdwc and firq, first step to usb

To have our Inferno to communicate with external world we need to have the USB supported as most important parts including ethernet controller and keyboard are behind the USB subsystem. I had a look what parts the Inferno already had for usb support and what was implemented in 9pi. So I decided just to compile-in […]
Also posted in Blog, Raspberry Pi, Research, Usb | Leave a comment

Lab 19, keyboard through serial, fixes to get Ls

In previous Lab we got a screen working, but still no way to send commands into Raspberry computer. My guess that for time being it just simple enough to make the keyboard input coming from serial cable, so then I can play with Sh on raspberry and do some simple experiments onboard until I will […]
Also posted in Blog, Raspberry Pi, Research | 1 Comment

Lab 18, we have a screen!

Before the Lab the development was going in total darkness…, um I meant using serial ftdi usb cable. But time comes to have a light screen. Amazingly it wasn’t so complicated. Yes, we just used codes from 9pi project (thanks to Richard Miller). Our expected result is:
Also posted in Blog, Raspberry Pi, Research | 4 Comments

Lab 17, mmu init

What is fun about Inferno OS that our CPU may not have MMU support and still we are able to port Inferno to such architecture. That’s because Inferno OS implements Dis virtual machine and all users processes are actually Dis byte-codes interpreters on JIT compiled. So address space is virtual by software layer and it […]
Also posted in Blog, Raspberry Pi, Research | Leave a comment

Lab 16, Adding clocks, timers, converging to 9pi codes

We are starting new season of the labs. Season 2 will be named as “Close to hardware”. And we start from important point to have clocks and timers working. But first we made a decision to make our codes close to 9pi source codes, especially assembler parts. But we found it little complicated as UReg […]
Also posted in Blog, Raspberry Pi, Research | Leave a comment

Lab 15, Eve, Hello World from Limbo!

It is our 15-th Lab and it is the time came to make birth of the process Eve, run Dis virtual machine and our first Limbo program!
Also posted in Blog, Raspberry Pi, Research | 7 Comments

Lab 14, interrupts, part 3

Now we can study the C part of handling interrupts. But before we start remember that we need to install stack pointers to appropriate modes:
Also posted in Blog, Raspberry Pi, Research | Leave a comment

Lab 13, interrupts, part 2

Time to write a code to process interrupts. All interrupts that happens in system use the vector of interrupts (8 of them) which is located at 0xffff0000 (high memory case). This vector contains addresses that CPU should pass execution to.
Also posted in Blog, Raspberry Pi, Research | Leave a comment

Lab 12, interrupts, part 1

Time to create content of io.h with references to control registers, irq nums etc:
Also posted in Blog, Raspberry Pi, Research | Leave a comment

Lab 11, _div, testing print

Interesting point we missed in lab10. Those are stubs that we have in main(): _div, _divu, _mod, _modu
Also posted in Blog, Raspberry Pi, Research | Leave a comment

Lab 10, Bss, memory pools, malloc

Time to have a look at initial memory initializations. First we need to initialize BSS (more details: http://en.wikipedia.org/wiki/.bss), statically-allocated variables. We do it in next way:
Also posted in Blog, Raspberry Pi, Research | Leave a comment

Lab 9, coding assembler part

Time to have assembler part of Inferno kernel to be implemented
Also posted in Blog, Raspberry Pi, Research | Leave a comment

Lab 8, memory model

Now time to have a look at memory model. The BCM2835 gives next picture: Actually
Also posted in Blog, Raspberry Pi, Research | Leave a comment

Lab 7, linking, planning next

As we have the kernel almost compiled now it is time to check what is missing to have it linked. By checking header files and adding stubs into main.c we will get linked with very small changes as:
Also posted in Blog, Raspberry Pi, Research | Leave a comment
Clef two-factor authentication