Author Archives: yshurik
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
Lab 14, interrupts, part 3