# # Build # set on_hardware [expr ![have_include power_on/qemu]] set build_components { core init timer drivers/nic server/nic_router server/nic_bridge app/ping } 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 } lappend_if [have_spec gpio] build_components drivers/gpio if {[have_spec foc] || [have_spec odroid_xu] || [have_spec linux] || [expr [have_spec imx53] && [have_spec trustzone]]} { puts "Run script is not supported on this platform." exit 0 } proc good_dst_ip { } { if {![have_include power_on/qemu]} { return "10.0.0.2" } else { return "10.0.2.2" } } proc bad_dst_port { } { return "12345" } proc bad_dst_ip { } { return "10.0.1.2" } source ${genode_dir}/repos/base/run/platform_drv.inc append_platform_drv_build_components build $build_components create_boot_directory # # Generate config # append config { } append_platform_drv_config append_if [have_spec gpio] config " " append config { } [nic_drv_config] { } append_if $on_hardware config { } append config { } install_config $config # # Boot modules # # generic modules append boot_modules { core init timer } [nic_drv_binary] { ping ld.lib.so nic_router nic_bridge } # platform-specific modules lappend_if [have_spec linux] boot_modules fb_sdl lappend_if [have_spec gpio] boot_modules [gpio_drv] append_platform_drv_boot_modules build_boot_image $boot_modules append qemu_args " -nographic " proc qemu_nic_model {} { if [have_spec x86] { return e1000 } if [have_spec lan9118] { return lan9118 } if [have_spec zynq] { return cadence_gem } return nic_model_missing } append qemu_args " -netdev user,id=net0 " append qemu_args " -net nic,model=[qemu_nic_model],netdev=net0 " set done_string "" for {set i 0} {$i < 3} {incr i 1} { append done_string ".*child \"ping...\" exited with exit value 0.*\n" } append done_string ".*ping_22\] From 10.0.4.1 icmp_seq=.* Destination Unreachable.*\n" append_if $on_hardware done_string ".*ping_23\] From [good_dst_ip] Destination Unreachable.*\n" run_genode_until $done_string 30