1
0
mirror of git://projects.qi-hardware.com/iris.git synced 2024-12-29 03:12:04 +02:00
iris/plan

126 lines
3.1 KiB
Plaintext

caps zonder size limit?
invoke ipc: try sync; try receiver memory; try caller memory; fail.
memories map:
top
- lcd
- keyboard
- sound
- led
- udc
- battery
- beeper
- msc
- nand
- filesystem
- network
- top session manager
- - user session
- - - program container
- - - - driver emulation
- - - - driver emulation
- - - - program
- - - program container
- - - - driver emulation
- - - - program
- - user session
...
te doen:
- caps in init met een cap per process
- die cap bevat caps in target memory met een cap per service
- die cap bevat een user van de service
- sysreq is geen aangeboden service, usbfs wel
- sysreq schakelt tussen running processes incl. user switching.
- display interface: put pixel commando
- typewriter: print toetsen op scherm; shell?
- terminal
- emulaties automatisch per proces
- start programma van filesystem
- nand driver
- filesystems met backing store
Boot process:
- bootinit and filesystem (and backing store) are started.
- bootinit starts run.elf and loads init.elf.
- run starts init.
- init loads init.config and executes it.
- during that process, the initial programs are killed.
Order:
run.elf
init.elf
init.config
load.elf
drivers
emulations
programs
init.config is a script:
# load <name> = <filename> load a file into memory. Don't use this after killbootthreads.
load session = session.config
load driver_lcd = lcd.elf
load driver_buzzer = buzzer.elf
load driver_gpio = gpio.elf
load driver_audio = audio.elf
load driver_udc = udc.elf
load driver_nand = nand.elf
load emu_lcd = emu_display.elf
load emu_buzzer = emu_buzzer.elf
load emu_keyboard = emu_keyboard.elf
load emu_audio = emu_audio.elf
load emu_udc = emu_udc.elf
# killbootthreads destroy bootinit, bootfs and bootstore.
killbootthreads
# receive <cap> = <name> (<type> [, <index>]) prepare to accept a capability from a named program.
receive display = driver_lcd (display)
receive display_bright = driver_lcd (setting)
receive buzzer = driver_buzzer (buzzer)
receive keyboard = driver_gpio (keyboard, 0)
receive sysreq = driver_gpio (keyboard, 1)
receive audio = driver_audio (audio)
receive udc = driver_udc (udc)
receive nand = driver_nand (wstring)
# driver <name> run a previously loaded program priviledged.
driver driver_lcd
driver driver_buzzer
driver driver_gpio
driver driver_audio
driver driver_udc
driver driver_nand
# wait wait until all expected capabilities are received.
wait
# sysreq <cap> use a capability as the system request keyboard.
sysreq sysreq
# give <name> (<type> [, <index>]) = <cap> give this capability to this program when it requests it.
give emu_display (display) = display
give emu_display_bright (setting) = display_bright
give emu_buzzer (buzzer) = buzzer
give emu_keyboard (keyboard, 0) = keyboard
give emu_audio (audio) = audio
give emu_udc (udc) = udc
# run <name> run a previously loaded program (normally).
run emu_lcd
run emu_buzzer
run emu_keyboard
run emu_audio
run emu_udc
# include <name> include a loaded file as another config file.
include session
# loop sit and do nothing (respond to system request).
loop