Author Archives: yshurik

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:
Posted in Blog, Inferno OS, 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.
Posted in Blog, Inferno OS, 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:
Posted in Blog, Inferno OS, 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
Posted in Blog, Inferno OS, 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:
Posted in Blog, Inferno OS, Raspberry Pi, Research | Leave a comment

Lab 9, coding assembler part

Time to have assembler part of Inferno kernel to be implemented
Posted in Blog, Inferno OS, 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
Posted in Blog, Inferno OS, 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:
Posted in Blog, Inferno OS, Raspberry Pi, Research | Leave a comment

Lab 6, Compile something

Now it is lab 6 and it is time to compile “something” – kernel of inferno, but we are going to compile without worrying that it would not work (even would not link). We just need inferno kernel which can be compiled okay for R-Pi using a lot of stabs. Files/Folders structure: inferno-os/ |-os/ | […]
Posted in Blog, Inferno OS, Raspberry Pi, Research | Leave a comment

Lab 5, Hello World

This lab will be short but it is going to summarize all material provided in previous labs. Our target to develop simple “barebone” program which can be loaded and executed by U-Boot. It should only print “Hello world!” to our serial console.
Posted in Blog, Inferno OS, Raspberry Pi, Research | 4 Comments

Lab 4, Loading kernel

Time to study the way how we place our kernel into the memory on R-Pi. U-Boot have usually convention to place loaded binaries at 0x8000 (32KB) and just pass control there. So, let’s compile trivial program and study generated binary to understand the way how we can operate with it. In Lab 1 we found […]
Posted in Blog, Inferno OS, Raspberry Pi, Research | Leave a comment

Lab 3, R-Pi Booting process

Now time to study the boot process on Raspberry Pi. Good source to study: R-Pi Boot process 1. Stage 1 boot is in the on-chip ROM. Loads stage2 in the L2 cache! 2. Stage 2 is bootcode.bin. Enables SDRAM and loads stage3 3. Stage 3 is loader.bin. Knows about elf format and load start.elf 4. […]
Posted in Blog, Inferno OS, Raspberry Pi, Research | 14 Comments

Lab 2, Hardware

We need to have possibility of booting kernel on Raspbery Pi. Because we will not have display driver soon, we need another approach – have serial port connected to get all output from booter and then from our kernel. We bought small FTDI 3.3V chip to have connected it to GPIO pins on one side […]
Posted in Blog, Inferno OS, Raspberry Pi, Research | Leave a comment

Lab 1, Compiler

Let’s start with tools that we need to just build the OS for ARM. First clone official inferno os repository from google code repository: # hg clone https://code.google.com/p/inferno-os/ What we need to move further? We need the ARM cross compiler, linker, etc. For this, let’s just compile inferno targeting mac as host (we are on […]
Posted in Blog, Inferno OS, Raspberry Pi, Research | 3 Comments