code: def main(raw_args=None):
      
  
      if raw_args is None:
          raw_args = sys.argv[1:]
  
      parser = build_parser()
      args = parser.parse_args(raw_args)
  
      if args.firmware_image is None and args.gdb is None:
          print("You must specify either a firmware image or attach a debugger with --gdb <PORT>")
          return 1
  
      test_args = ['qemu-system-gnuarmeclipse', '-verbose', '-verbose', '-board', 'STM32F0-Discovery',
                   '-nographic', '-monitor', 'null', '-serial', 'null', '--semihosting-config',
                   'enable=on,target=native', '-d', 'unimp,guest_errors']
  
      if args.firmware_image:
          test_args += ['-image', args.firmware_image]
  
      if args.gdb:
          test_args += ['--gdb', 'tcp::%d' % args.gdb]
  
      proc = subprocess.Popen(test_args, stdout=sys.stdout, stderr=sys.stderr)
  
      try:
          proc.communicate()
      except KeyboardInterrupt:
          proc.terminate()
  
      return 0
docs: Run the iotile-emulate script.
  
      Args:
          raw_args (list): Optional list of commmand line arguments.  If not
              passed these are pulled from sys.argv.