# # \brief Test for using the Block (Storage) service of usb_drv # \author Christian Prochaska # \date 2011-06-24 # # # Build # set build_components { core init timer drivers/usb test/block/client } lappend_if [have_spec gpio] build_components drivers/gpio 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 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"/> </parent-provides> <default-route> <any-service> <parent/> <any-child/> </any-service> </default-route> <default caps="100"/>} append_platform_drv_config append_if [have_spec gpio] config " <start name=\"[gpio_drv]\"> <resource name=\"RAM\" quantum=\"4M\"/> <provides><service name=\"Gpio\"/></provides> <config/> </start>" append config { <start name="timer"> <resource name="RAM" quantum="1M"/> <provides> <service name="Timer"/> </provides> </start> <start name="usb_drv"> <resource name="RAM" quantum="12M"/> <provides> <service name="Block"/> </provides> <config uhci="yes" ohci="yes" ehci="yes" xhci="yes"><storage /></config> </start> <start name="test-usb"> <resource name="RAM" quantum="2M" /> <binary name="test-block-client" /> <config test_size="1M" /> </start> </config> } install_config $config # # Boot modules # # generic modules set boot_modules { core ld.lib.so init timer usb_drv test-block-client } lappend_if [have_spec gpio] boot_modules [gpio_drv] append_platform_drv_boot_modules build_boot_image $boot_modules # # Execute test case # set disk_image "bin/test.img" set cmd "dd if=/dev/zero of=$disk_image bs=1024 count=65536" puts "creating disk image:\n$cmd" catch { exec sh -c $cmd } set cmd "mkfs.vfat -F32 $disk_image" puts "formating disk image with vfat file system:\$cmd" catch { exec sh -c $cmd } # # Qemu opts for UHCI # #append qemu_args " -nographic -usbdevice disk::$disk_image -boot order=d" # # Qemu opts for EHCI # append qemu_args "-drive if=none,id=disk,file=$disk_image" append qemu_args { \ -nographic -M pc \ -device usb-ehci,id=ehci \ -device usb-storage,bus=ehci.0,drive=disk \ -boot order=d } # # Qemu opts for XHCI # #append qemu_args { \ # -nographic -M pc \ #-device nec-usb-xhci,id=xhci \ #-device usb-storage,bus=xhci.0,drive=disk \ #-boot order=d } run_genode_until {.*child "test-usb" exited with exit value 0.*} 100 puts "\nTest succeeded\n" # vi: set ft=tcl :