seL4 Device Driver Framework

class sdfgen.Sddf(path: str)

Class for creating I/O systems based on the seL4 Device Driver Framework (sDDF).

There is a Python class for each device class (e.g Block, Network). They all follow the pattern of being initialised, then having clients added, and then being connected before the final SDF is generated.

class Blk(sdf: SystemDescription, device: Node | None, driver: ProtectionDomain, virt: ProtectionDomain)
add_client(client: ProtectionDomain, *, partition: int, queue_capacity: int | None = None, data_size: int | None = None)
connect() bool
serialise_config(output_dir: str) bool
class Gpu(sdf: SystemDescription, device: Node | None, driver: ProtectionDomain, virt: ProtectionDomain)
add_client(client: ProtectionDomain)
connect() bool
serialise_config(output_dir: str) bool
class I2c(sdf: SystemDescription, device: Node | None, driver: ProtectionDomain, virt: ProtectionDomain)
add_client(client: ProtectionDomain)
connect() bool
serialise_config(output_dir: str) bool
class Lwip(sdf: SystemDescription, net: Net, pd: ProtectionDomain)
connect() bool
serialise_config(output_dir: str) bool
class Net(sdf: SystemDescription, device: Node | None, driver: ProtectionDomain, virt_tx: ProtectionDomain, virt_rx: ProtectionDomain)
add_client_with_copier(client: ProtectionDomain, copier: ProtectionDomain, *, mac_addr: str | None = None) None

Add a client connected to a copier component for RX traffic.

Parameters:
  • copier – must be unique to this client, cannot be used with any other client.

  • mac_addr – must be unique to the Network system.

connect() bool
serialise_config(output_dir: str) bool
class Serial(sdf: SystemDescription, device: Node | None, driver: ProtectionDomain, virt_tx: ProtectionDomain, *, virt_rx: ProtectionDomain | None = None, enable_color: bool = True)
add_client(client: ProtectionDomain)

Add a new client connection to the serial system.

connect() bool

Construct and all resources to the associated SystemDescription, returns whether successful.

Must have all clients and options set before calling.

Cannot be called more than once.

serialise_config(output_dir: str) bool
class Timer(sdf: SystemDescription, device: Node | None, driver: ProtectionDomain)
add_client(client: ProtectionDomain)
connect() bool
serialise_config(output_dir: str) bool