Category Archives: Inferno OS
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
Lab 25, network, part 2