mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-21 18:06:50 +00:00
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.
152 lines
3.6 KiB
Tcl
152 lines
3.6 KiB
Tcl
set use_usb_driver [expr [have_spec omap4] || [have_spec arndale] || [have_spec rpi]]
|
|
set use_nic_driver [expr [have_spec linux] || [expr !$use_usb_driver && ![have_spec imx53] && ![have_spec odroid_xu] && ![have_spec linux] && ![have_spec imx6q_sabrelite]]]
|
|
|
|
set lynx [installed_command lynx]
|
|
|
|
#
|
|
# Build
|
|
#
|
|
|
|
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 }
|
|
|
|
set build_components {
|
|
core init timer
|
|
drivers/nic
|
|
test/lxip/http_srv
|
|
}
|
|
|
|
lappend_if $use_usb_driver build_components drivers/usb
|
|
lappend_if [have_spec gpio] build_components drivers/gpio
|
|
|
|
source ${genode_dir}/repos/base/run/platform_drv.inc
|
|
append_platform_drv_build_components
|
|
|
|
build $build_components
|
|
|
|
create_boot_directory
|
|
|
|
#
|
|
# Generate config
|
|
#
|
|
|
|
set config {
|
|
<config verbose="yes">
|
|
<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"/>
|
|
<service name="SIGNAL"/>
|
|
</parent-provides>
|
|
<default-route>
|
|
<any-service> <parent/> <any-child/> </any-service>
|
|
</default-route>
|
|
<default caps="100"/>
|
|
<start name="timer">
|
|
<resource name="RAM" quantum="1M"/>
|
|
<provides> <service name="Timer"/> </provides>
|
|
</start>
|
|
<start name="test-lxip_http_srv" caps="200">
|
|
<resource name="RAM" quantum="28M"/>
|
|
<config ld_verbose="yes">
|
|
<vfs> <dir name="dev"> <log/> </dir> </vfs>
|
|
<libc stdout="/dev/log" stderr="/dev/log" ip_addr="10.0.2.55" gateway="10.0.2.1" netmask="255.255.255.0"/>
|
|
</config>
|
|
</start>}
|
|
|
|
append_if [have_spec gpio] config "
|
|
<start name=\"[gpio_drv]\">
|
|
<resource name=\"RAM\" quantum=\"4M\"/>
|
|
<provides><service name=\"Gpio\"/></provides>
|
|
<config/>
|
|
</start>"
|
|
|
|
append_if $use_usb_driver config {
|
|
<start name="usb_drv">
|
|
<resource name="RAM" quantum="12M"/>
|
|
<provides>
|
|
<service name="Nic"/>
|
|
</provides>
|
|
<config ehci="yes">
|
|
<nic mac="02:00:00:00:01:01" />
|
|
</config>
|
|
</start>}
|
|
|
|
append_platform_drv_config
|
|
|
|
append_if $use_nic_driver config {
|
|
<start name="nic_drv" caps="120">
|
|
<binary name="} [nic_drv_binary] {"/>
|
|
<resource name="RAM" quantum="20M"/>
|
|
<provides><service name="Nic"/></provides>
|
|
</start>}
|
|
|
|
append config {
|
|
</config>
|
|
}
|
|
|
|
install_config $config
|
|
|
|
#
|
|
# Boot modules
|
|
#
|
|
|
|
# generic modules
|
|
set boot_modules {
|
|
core ld.lib.so init timer posix.lib.so
|
|
libc.lib.so vfs.lib.so libm.lib.so lxip.lib.so test-lxip_http_srv
|
|
}
|
|
|
|
# platform-specific modules
|
|
lappend_if $use_usb_driver boot_modules usb_drv
|
|
lappend_if $use_nic_driver boot_modules [nic_drv_binary]
|
|
lappend_if [have_spec gpio] boot_modules [gpio_drv]
|
|
|
|
append_platform_drv_boot_modules
|
|
|
|
build_boot_image $boot_modules
|
|
|
|
#
|
|
# Execute test case
|
|
#
|
|
|
|
# qemu config
|
|
append qemu_args " -nographic "
|
|
|
|
append_if [have_spec x86] qemu_args " -net nic,model=e1000 "
|
|
append_if [have_spec lan9118] qemu_args " -net nic,model=lan9118 "
|
|
|
|
append qemu_args " -net user -redir tcp:5555::80 "
|
|
|
|
run_genode_until forever
|
|
|
|
set match_string "ipaddr=(\[0-9\]+\.\[0-9\]+\.\[0-9\]+\.\[0-9\]+).*\n"
|
|
run_genode_until $match_string 30
|
|
|
|
if {[have_include "power_on/qemu"]} {
|
|
set uri "http://localhost:5555/"
|
|
} else {
|
|
regexp $match_string $output all ip_addr
|
|
|
|
set uri "http://$ip_addr:80/"
|
|
}
|
|
|
|
puts "http server is up, try to query website $uri"
|
|
|
|
set website [exec $lynx -dump $uri]
|
|
|
|
puts "response:\n$website"
|
|
|
|
if {![regexp {Welcome to our HTTP demonstration server!} $website dummy]} {
|
|
puts stderr "Query returned unexpected website"
|
|
exit 2;
|
|
}
|
|
|
|
# vi: set ft=tcl :
|