mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-26 00:41:08 +00:00
b765cef359
Instead of using the Wandboard Quad, the reference hardware from NXP i.MX6 Quad Sabrelite will be used by Fiasco.OC, sel4 and hw by default.
321 lines
9.5 KiB
Plaintext
321 lines
9.5 KiB
Plaintext
#
|
|
# Build
|
|
#
|
|
|
|
if {[have_spec odroid_xu] ||
|
|
[have_spec imx6q_sabrelite] ||
|
|
([get_cmd_switch --autopilot] && [have_spec linux]) ||
|
|
([get_cmd_switch --autopilot] && [have_include "power_on/qemu"])} {
|
|
puts "Run script does not support this platform."
|
|
exit 0
|
|
}
|
|
|
|
set build_components {
|
|
core init timer
|
|
server/nitpicker app/pointer app/status_bar app/global_keys_handler
|
|
app/nit_focus
|
|
server/liquid_framebuffer app/launchpad app/scout
|
|
test/nitpicker server/nitlog
|
|
drivers/framebuffer drivers/input
|
|
server/report_rom server/rom_filter
|
|
}
|
|
|
|
proc gpio_drv { } { if {[have_spec rpi] && [have_spec hw]} { return hw_gpio_drv }
|
|
if {[have_spec rpi] && [have_spec foc]} { return foc_gpio_drv }
|
|
return gpio_drv }
|
|
|
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
|
|
|
lappend_if [need_usb_hid] build_components drivers/usb
|
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
|
|
|
append_platform_drv_build_components
|
|
|
|
build $build_components
|
|
|
|
create_boot_directory
|
|
|
|
#
|
|
# Generate config
|
|
#
|
|
|
|
append config {
|
|
<config>
|
|
<parent-provides>
|
|
<service name="ROM"/>
|
|
<service name="IRQ"/>
|
|
<service name="IO_MEM"/>
|
|
<service name="IO_PORT"/>
|
|
<service name="PD"/>
|
|
<service name="RM"/>
|
|
<service name="CPU"/>
|
|
<service name="LOG"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</default-route>
|
|
<default caps="100"/>}
|
|
|
|
append_if [have_spec sdl] config {
|
|
<start name="fb_sdl" ld="no">
|
|
<resource name="RAM" quantum="4M"/>
|
|
<provides>
|
|
<service name="Input"/>
|
|
<service name="Framebuffer"/>
|
|
</provides>
|
|
</start>}
|
|
|
|
append_platform_drv_config
|
|
|
|
append_if [have_spec framebuffer] config {
|
|
<start name="fb_drv" caps="130">
|
|
<provides><service name="Framebuffer"/></provides>}
|
|
append_if [expr [have_spec framebuffer] && [have_spec x86]] config {
|
|
<resource name="RAM" quantum="4M"/>
|
|
<config width="1024" height="768"/>
|
|
</start>}
|
|
append_if [expr [have_spec framebuffer] && ![have_spec x86]] config {
|
|
<resource name="RAM" quantum="5M"/>
|
|
<config/>
|
|
</start>}
|
|
|
|
append_if [have_spec gpio] config "
|
|
<start name=\"[gpio_drv]\" caps=\"140\">
|
|
<resource name=\"RAM\" quantum=\"4M\"/>
|
|
<provides><service name=\"Gpio\"/></provides>
|
|
<config/>
|
|
</start>"
|
|
|
|
append_if [have_spec imx53] config {
|
|
<start name="input_drv">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Input"/></provides>
|
|
<config/>
|
|
</start> }
|
|
|
|
append_if [have_spec ps2] config {
|
|
<start name="ps2_drv">
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<provides><service name="Input"/></provides>
|
|
</start>}
|
|
|
|
append_if [need_usb_hid] config {
|
|
<start name="usb_drv" caps="120">
|
|
<resource name="RAM" quantum="12M"/>
|
|
<provides><service name="Input"/></provides>
|
|
<config ehci="yes" uhci="yes" xhci="no"> <hid/> </config>
|
|
</start> }
|
|
|
|
append config {
|
|
<start name="timer">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides><service name="Timer"/></provides>
|
|
</start>
|
|
|
|
<start name="report_rom">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides> <service name="Report"/> <service name="ROM"/> </provides>
|
|
<config verbose="no">
|
|
<policy label="status_bar -> focus" report="nitpicker -> focus"/>
|
|
<policy label="nitpicker_config -> xray" report="global_keys_handler -> xray"/>
|
|
<policy label="global_keys_handler -> hover" report="nitpicker -> hover"/>
|
|
<policy label="nit_focus -> clicked" report="nitpicker -> clicked"/>
|
|
<policy label="nitpicker -> focus" report="nit_focus -> focus"/>
|
|
</config>
|
|
</start>
|
|
|
|
<start name="nitpicker_config">
|
|
<binary name="rom_filter"/>
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<provides><service name="ROM"/></provides>
|
|
<config>
|
|
<input name="xray_enabled" rom="xray" node="xray">
|
|
<attribute name="enabled" /> </input>
|
|
|
|
<output node="config">
|
|
<attribute name="focus" value="rom"/>
|
|
<inline>
|
|
<report focus="yes" xray="yes" hover="yes" keystate="yes"
|
|
clicked="yes"/>
|
|
<domain name="pointer" layer="1" origin="pointer"
|
|
content="client" label="no"/>
|
|
<domain name="panel" layer="2"
|
|
content="client" label="no" hover="always"/>
|
|
</inline>
|
|
<if>
|
|
<has_value input="xray_enabled" value="no" />
|
|
<then>
|
|
<inline>
|
|
<domain name="launchpad" layer="3"
|
|
content="client" label="no" hover="always" focus="click"
|
|
ypos="18" height="-18" />
|
|
<domain name="" layer="3"
|
|
content="client" label="no" hover="always" focus="click"
|
|
ypos="18" height="-18" />
|
|
</inline>
|
|
</then>
|
|
<else>
|
|
<inline>
|
|
<domain name="launchpad" layer="3" color="#dd0000"
|
|
content="tinted" label="yes" hover="focused" focus="click"
|
|
ypos="18" height="-18" />
|
|
<domain name="" layer="3" color="#55dd34"
|
|
content="tinted" label="yes" hover="focused" focus="click"
|
|
ypos="18" height="-18" />
|
|
</inline>
|
|
</else>
|
|
</if>
|
|
<inline>
|
|
<policy label_prefix="pointer" domain="pointer"/>
|
|
<policy label_prefix="status_bar" domain="panel"/>
|
|
<policy label_prefix="scout -> launchpad" domain="launchpad"/>
|
|
<default-policy domain=""/>
|
|
|
|
<global-key name="KEY_SCROLLLOCK" label="global_keys_handler -> input" />
|
|
<global-key name="KEY_F1" label="global_keys_handler -> input" />
|
|
<global-key name="KEY_F2" label="global_keys_handler -> input" />
|
|
</inline>
|
|
</output>
|
|
</config>
|
|
<route>
|
|
<service name="ROM" label="xray"> <child name="report_rom"/> </service>
|
|
<any-service> <parent/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="global_keys_handler">
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<config>
|
|
<bool name="xray" initial="no"/>
|
|
|
|
<press name="KEY_SCROLLLOCK" bool="xray" change="toggle"/>
|
|
<press name="KEY_F1" bool="xray" change="on"/>
|
|
<release name="KEY_F1" bool="xray" change="off"/>
|
|
<press name="KEY_F2" bool="xray" change="toggle"/>
|
|
|
|
<report name="xray" delay_ms="125">
|
|
<hovered domain="panel"/>
|
|
<bool name="xray"/>
|
|
</report>
|
|
</config>
|
|
<route>
|
|
<service name="Report"> <child name="report_rom"/> </service>
|
|
<service name="ROM" label="hover"> <child name="report_rom"/> </service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="nitpicker" caps="110">
|
|
<resource name="RAM" quantum="1216K"/>
|
|
<provides><service name="Nitpicker"/></provides>
|
|
<configfile name="nitpicker.config"/>
|
|
<route>
|
|
<service name="ROM" label="nitpicker.config">
|
|
<child name="nitpicker_config"/> </service>
|
|
<service name="ROM" label="focus">
|
|
<child name="report_rom"/> </service>
|
|
<service name="Report">
|
|
<child name="report_rom"/> </service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="pointer">
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<config/>
|
|
</start>
|
|
|
|
<start name="nit_focus">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<config> <default-policy focus="yes"/> </config>
|
|
<route>
|
|
<service name="ROM" label="clicked"> <child name="report_rom"/> </service>
|
|
<service name="Report"> <child name="report_rom"/> </service>
|
|
<any-service> <parent/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="status_bar">
|
|
<resource name="RAM" quantum="1096K"/>
|
|
<route>
|
|
<service name="ROM" label="focus"> <child name="report_rom"/> </service>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</route>
|
|
</start>
|
|
|
|
<start name="scout" caps="10000">
|
|
<resource name="RAM" quantum="64M" />
|
|
</start>
|
|
</config>}
|
|
|
|
install_config $config
|
|
|
|
#
|
|
# Create launchpad configuration
|
|
#
|
|
set launchpad_config_fd [open "bin/launchpad.config" w]
|
|
puts $launchpad_config_fd {<config>
|
|
<launcher name="testnit" ram_quota="768K" caps="50"/>
|
|
<launcher name="scout" ram_quota="41M" caps="200"/>
|
|
<launcher name="launchpad" ram_quota="6M" caps="1000">
|
|
<configfile name="launchpad.config" />
|
|
</launcher>
|
|
<launcher name="nitlog" ram_quota="1M" caps="70"/>
|
|
<launcher name="liquid_fb" ram_quota="7M" caps="70">
|
|
<config resize_handle="on" />
|
|
</launcher>
|
|
<launcher name="nitpicker" ram_quota="1M" caps="70">
|
|
<config>
|
|
<domain name="" layer="3" conten="client" label="no" focus="click"/>
|
|
<default-policy domain="" />
|
|
</config>
|
|
</launcher>
|
|
</config>}
|
|
close $launchpad_config_fd
|
|
|
|
|
|
#
|
|
# Boot modules
|
|
#
|
|
|
|
# generic modules
|
|
set boot_modules {
|
|
core ld.lib.so init
|
|
timer
|
|
nitpicker pointer status_bar report_rom rom_filter global_keys_handler
|
|
nit_focus
|
|
liquid_fb launchpad scout testnit nitlog
|
|
launchpad.config
|
|
}
|
|
|
|
# platform-specific modules
|
|
lappend_if [have_spec linux] boot_modules fb_sdl
|
|
lappend_if [have_spec ps2] boot_modules ps2_drv
|
|
lappend_if [have_spec framebuffer] boot_modules fb_drv
|
|
lappend_if [need_usb_hid] boot_modules usb_drv
|
|
lappend_if [have_spec gpio] boot_modules [gpio_drv]
|
|
lappend_if [have_spec imx53] boot_modules input_drv
|
|
|
|
append_platform_drv_boot_modules
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
|
|
if {[get_cmd_switch --autopilot]} {
|
|
run_genode_until {\[init -> scout\] png is.*\n} 40
|
|
|
|
grep_output {(requests resources: ram_quota)|(Error)}
|
|
|
|
# remove Error messages which are not fatal, mostly
|
|
unify_output {(?n)^.*platform_drv] Error:.*ACPI table information is wrong.*$} ""
|
|
unify_output {(?n)^.*platform_drv] Error: adjust size from.*$} ""
|
|
unify_output {(?n)^.*acpi_drv] Error:.*platform_info.*$} ""
|
|
unify_output {(?n)^.*ps2_drv] Error: no data available.*$} ""
|
|
unify_output {(?n)^.*ps2_drv] Error: failed to read from port.*$} ""
|
|
|
|
compare_output_to {}
|
|
|
|
} else {
|
|
run_genode_until forever
|
|
}
|