mirror of
git://projects.qi-hardware.com/iris.git
synced 2024-12-29 03:54:16 +02:00
126 lines
3.1 KiB
Plaintext
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
|