help: failed to use qemu

Joel Sherrill joel.sherrill at OARcorp.com
Wed Feb 11 21:29:40 UTC 2009


I don't know that it matters but I am starting to use
the Intel FXP driver now with qemu.

--joel


Till Straumann wrote:
> Daron Chabot wrote:
>   
>> I've had some limited success with the Etherboot/TFTP approach to  
>> launching RTEMS networking apps with Qemu. Specifically, Till's  
>> GeSys-2.4 (using TFTP FS). However, I'm getting ne2000 error messages  
>> (see Qemu output below).
>>
>> Command line:
>> ---------------------------------------------
>> 	qemu -no-reboot -m 128 -boot n -tftp ./o-optimize -bootp /rtems.exe - 
>> serial stdio
>> 		-net nic,macaddr=00:ab:cd:ef:12:34 -net user,hostname=foo.bar
>>     
> You forgot to choose the NIC model:
>
> -net nic,model=ne2k_isa,macaddr=00:ab:cd:ef:12:34
>   
>> RTEMS network config:
>> ---------------------------------------------
>> static char ethernet_address[6] = { 0x00, 0xab, 0xcd, 0xef, 0x12,  
>> 0x34 };
>> static struct rtems_bsdnet_ifconfig netdriver_config[1] = {{
>>      NIC_NAME,   /* name */
>>      NIC_ATTACH, /* attach function */
>>      0,          /* link to next interface */
>>      FIXED_IP_ADDR,
>>      FIXED_NETMASK,
>>      ethernet_address,
>>      irno:9,
>>      port:0xc100
>>     
> you must use the port# and irq # matching hardcoded qemu settings
> (first ISA ne2k uses port 0x300, IRQ 9)
>
> The default RTEMS settings (port 0x300, IRQ 5 [iirc]) don't work
> (since the IRQs don't match up).
>
> Hence you can use
>
> irno: 9
> port: 0x300
>
> or the GeSys values
>
> irno: 9
> port: 0
>
> (driver falls back on 0x300)
>
> BTW: Is this 0xc100 value in a GeSys version I posted or sent you --
>      AFAIK, GeSys-2.4 comes with the correct value of 0 and a comment
>      regarding irno=9 ?
>
>
> Anyways, I created a cdrom bootimage containing grub and
> the binary you sent me and said
>
> till at tillbook:~/box$ /opt/qemu-0.9.0/bin/qemu \
>              -L /opt/qemu-0.9.0/share/qemu/ \
>              -cdrom iso \
>              -serial stdio \
>              -net nic,model=ne2k_isa,macaddr=00:ab:cd:ef:12:34 \
>              -net user \
>              -s
>
> I then connected gdb while grub was waiting
>
> (gdb) file rtems.exe
> (gdb) target remote localhost:1234
> (gdb) break Init
> (gdb) cont
>
> and let the thing come up and hit the breakpoint.
> At the breakpoint I patched the port
>
> (gdb) set rtems_bsdnet_config.ifconfig->port = 0
> (gdb) cont
>
> and boom - I was in business ;-)
>
> Could not open '/dev/kqemu' - QEMU acceleration layer not activated
> Welcome to RTEMS GeSys
> This system $Name: GeSys_2_4 $ was built on 20090211CST11:17:21
> $Id: init.c,v 1.43 2008/03/22 20:36:13 guest Exp $
> Installing TIOCGWINSZ line discipline: ok.
> To skip initialization, press a key now...
> network device 'ne1' <00:AB:CD:EF:12:34> initialized on port 0x300, irq 9
> bootpc_init: using network interface 'ne1'
> ne_init()
>
> ne configuration:
> ethernet addr: 0 AB CD EF 12 34
> irq = 9
> port = 0x300
> accept_broadcasts = 1
> byte_transfers = 0
> ne_init_hardware()
> ne_init_irq_handler(9)
> ne_interrupt_on()
> ne_init()
>
> ne configuration:
> ethernet addr: 0 AB CD EF 12 34
> irq = 9
> port = 0x300
> accept_broadcasts = 1
> byte_transfers = 0
> bootpc hw address is 0:ab:cd:ef:12:34
> Sne_tx_daemon
> Uploading NE2000 packet
> vTransmitting NE2000 packet
>  >!NE2000 status 0x3 (8259 enabled: no; mask: FFEA)
> ne_rx_daemon: start page 4C; current page 4F
> <My ip address is 10 .0 .2 .15
> Ignoring BOOTP/DHCP option code 53
> Domain Name Server is 10 .0 .2 .3
> Ignoring BOOTP/DHCP option code 51
> Subnet mask is 255 .255 .255 .0
> Server ip address is 10 .0 .2 .2
> Gateway ip address is 10 .0 .2 .2
> Log server ip address is 10 .0 .2 .2
> ne_init()
>
> ne configuration:
> ethernet addr: 0 AB CD EF 12 34
> irq = 9
> port = 0x300
> accept_broadcasts = 1
> byte_transfers = 0
> STrying symfile 'BUILTIN', system script '(NONE)'
> ne_tx_daemon
> Uploading NE2000 packet
> vTransmitting NE2000 packet
>  >!NE2000 status 0x2 (8259 enabled: no; mask: FFEA)
> Type 'cexpsh.help()' for help (no quotes)
> Cexp>
>
> HTH
> -- Till
>   
>> }};
>>
>> struct rtems_bsdnet_config rtems_bsdnet_config = {
>>      &netdriver_config[0],         /* Network interface */
>> #ifdef NIC_NAME
>>      RTEMS_DO_BOOTP,/* Use BOOTP to get network configuration */
>> #else
>>      0,                        /* Use BOOTP to get network  
>> configuration */
>> #endif
>>      NETWORK_TASK_PRIORITY,    /* Network task priority */
>> #if   defined(MEMORY_CUSTOM)
>>      MEMORY_CUSTOM,
>> #elif defined(MEMORY_SCARCE)
>>      100*1024,                 /* MBUF space */
>>      200*1024,                 /* MBUF cluster space */
>> #elif defined(MEMORY_HUGE)
>>      2*1024*1024,              /* MBUF space */
>>      5*1024*1024,              /* MBUF cluster space */
>> #else
>>      180*1024,                 /* MBUF space */
>>      350*1024,                 /* MBUF cluster space */
>> #endif
>> };
>>
>> Qemu stdout:
>> -------------------------------------------------------------------
>>
>> djc at TooLBox--> qemu -no-reboot -m 128 -boot n -tftp ./o-optimize - 
>> bootp /rtems.exe -serial stdio -net nic,macaddr=00:ab:cd:ef:12:34 - 
>> net user,hostname=foo.bar2009-02-11 08:13:12.358 i386-softmmu[27925] KO
>> Welcome to RTEMS GeSys
>> This system $Name: GeSys_2_4 $ was built on 20090210CST22:02:10
>> $Id: init.c,v 1.43 2008/03/22 20:36:13 guest Exp $
>> Installing TIOCGWINSZ line discipline: ok.
>> To skip initialization, press a key now...
>> network device 'ne1' <00:AB:CD:EF:12:34> initialized on port 0xC100,  
>> irq 9
>> bootpc_init: using network interface 'ne1'
>> bootpc hw address is 0:ab:cd:ef:12:34
>> My ip address is 10 .0 .2 .15
>> Ignoring BOOTP/DHCP option code 53
>> Domain Name Server is 10 .0 .2 .3
>> Ignoring BOOTP/DHCP option code 51
>> Hostname is foo.bar
>> Boot file is /rtems.exe
>> Subnet mask is 255 .255 .255 .0
>> Server ip address is 10 .0 .2 .2
>> Gateway ip address is 10 .0 .2 .2
>> Log server ip address is 10 .0 .2 .2
>> Trying symfile 'BUILTIN', system script 'st.sys'
>> Type 'cexpsh.help()' for help (no quotes)
>> 'st.sys':
>> ne2000: device timeout
>> ne2000: device timeout
>> ne2000: device timeout
>> ne2000: device timeout
>> ne2000: device timeout
>> opening script file: I/O error
>> Type 'cexpsh.help()' for help (no quotes)
>> Cexp>cexpMod
>> cexpModIterate()                cexpModuleInitOnce()
>> cexpModuleDumpGdbSectionInfo()  cexpModuleLoad()
>> cexpModuleFindByName()          cexpModuleName()
>> cexpModuleFree()                cexpModuleUnload()
>> cexpModuleInfo()
>> Cexp>cexpModuleInfo()
>> Module 'SYSTEM-BUILTIN' (0x008bcb94):
>>    Text starts at: 0xdeadbeef
>> 0x00000000 (0)
>> Cexp>
>>
>>
>> Need a little help here...
>>
>>
>> -- dc
>>
>> On 10-Feb-09, at 12:43 PM, Joel Sherrill wrote:
>>
>>     
>>> I am happy to report that the if_fxp (Intel i8255x driver)
>>> works with QEMU with any of the following NIC models
>>> specified:
>>>
>>> i82551
>>> i82557b
>>> i82559er
>>>
>>> That is in addition to the ne2k_isa we historically used.
>>> That leaves pcnet, ne2k_pci,  pcnet, and rtl8139 as the
>>> remaining NICs simulated for i386 qemu that we
>>> don't support.
>>>
>>> --joel
>>>
>>> Joel Sherrill wrote:
>>>       
>>>> Daron Chabot wrote:
>>>>
>>>>         
>>>>> Joel Sherrill wrote:
>>>>>
>>>>>           
>>>>>> Daron Chabot wrote:
>>>>>>
>>>>>>             
>>>>>>> On 10-Feb-09, at 7:02 AM, PowerMan wrote:
>>>>>>>
>>>>>>>
>>>>>>>               
>>>>>>>> I do it as the follow steps:
>>>>>>>> 1. download QEMU from  http://bellard.org/qemu/qemu-0.9.1- 
>>>>>>>> i386.tar.gz
>>>>>>>> 2. install it
>>>>>>>>     tar xfz qemu-0.9.1-i386.tar.gz -C /
>>>>>>>> 3. download rtems floppy image from ftp server :
>>>>>>>>     ftp://ftp.rtems.com/pub/rtems/qemu/i386-pc/rtems-boot.img
>>>>>>>> 4. download ftp://ftp.rtems.com/pub/rtems/qemu/i386-pc/rtems- 
>>>>>>>> grub.cfg
>>>>>>>>     and copy it to my root directory /
>>>>>>>> 5. mkdir /capture
>>>>>>>>    cp hello.exe /capture/capture.exe
>>>>>>>> 6. run qemu
>>>>>>>>     qemu -fda rtems-boot.img -boot a -hda /dev/sda
>>>>>>>>
>>>>>>>> but the capture.exe (which is actually helloworld I build  
>>>>>>>> with  rtems-4.7.3) does not run as I excepted.
>>>>>>>> This capture.exe could run on my host by modifying /boot/grub/ 
>>>>>>>> menu.lst
>>>>>>>> I type the following commands in grub:
>>>>>>>> grub> set root=(hd0,0)
>>>>>>>> grub> set kernel=/capture/capture.exe
>>>>>>>> grub> boot
>>>>>>>>
>>>>>>>> then grub told me:
>>>>>>>> error: no loaded kernel
>>>>>>>>
>>>>>>>> I type the following commands in grub:
>>>>>>>> grub> set root=(hd0,0)
>>>>>>>> grub> multiboot /capture/capture.exe
>>>>>>>>
>>>>>>>> then grub told me:
>>>>>>>> error: Couldn't open file
>>>>>>>>
>>>>>>>> Could somebody help me?
>>>>>>>>
>>>>>>>> My host is openSUSE 11.1, my disk information is:
>>>>>>>> /dev/sda1              3091312    516528   2417752  18% /
>>>>>>>> udev                    252876      5428    247448   3% /dev
>>>>>>>> /dev/sda8              3605268    153972   3268160   5% /home
>>>>>>>> /dev/sda7              1130540    221192    851920  21% /tmp
>>>>>>>> /dev/sda9              6412052   3541120   2545216  59% /usr
>>>>>>>> /dev/sda6              1130540    193556    879556  19% /var
>>>>>>>>
>>>>>>>> I type the following commands in grub:
>>>>>>>> grub> ls
>>>>>>>>
>>>>>>>> then grub told me:
>>>>>>>> (fd0) (hd0) (hd0,0) (hd0,4) (hd0,5) (hd0,6) (hd0,7) (hd0,8)
>>>>>>>>
>>>>>>>> they didn't match my host disk partition number
>>>>>>>>
>>>>>>>>
>>>>>>>>                 
>>>>>>> Grub is not a requirement for using Qemu, and may actually  
>>>>>>> complicate  the matter.
>>>>>>>
>>>>>>> I've had success with variations on the following command:
>>>>>>>
>>>>>>>     qemu -no-reboot -m 128 -boot n -tftp /path/to/exe/parent/ 
>>>>>>> directory - bootp /yourRtemsApp.exe -serial stdio
>>>>>>>
>>>>>>>               
>>>>>> I can make this work for hello and ticker but not for networked
>>>>>> applications.  Do you have a way to run networked applications
>>>>>> this way?
>>>>>>
>>>>>>             
>>>>> Nope. Sorry. I haven't found the magic qemu-cmdline/network- 
>>>>> config combo yet. It has been awhile since I was playing around  
>>>>> with Qemu and networked RTEMS apps, but I recall that one of the  
>>>>> problems for me was that mac os x has no concept of tun/tap  
>>>>> interfaces (at least not natively; there is a third-party driver,  
>>>>> but I had no luck with it).
>>>>>
>>>>> I'll revisit things tonight and see if I figure anything out.
>>>>>
>>>>>
>>>>>           
>>>> I can run networked applications just not after using tftp/bootp.
>>>> I have to boot them from a floppy.
>>>>
>>>> I am curious if the Intel FXP driver works on qemu.  :)
>>>>
>>>>         
>>>>>> I am trying to have some demos for a GSoC/RTEMS presentation
>>>>>> on Monday at University of Tennessee at Chattanooga and was
>>>>>> actually trying this out today. :)
>>>>>>
>>>>>> --joel
>>>>>>
>>>>>>             
>>>>         
>>> -- 
>>> Joel Sherrill, Ph.D.             Director of Research & Development
>>> joel.sherrill at OARcorp.com        On-Line Applications Research
>>> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
>>>   Support Available             (256) 722-9985
>>>
>>>
>>>       
>> _______________________________________________
>> rtems-users mailing list
>> rtems-users at rtems.com
>> http://rtems.rtems.org/mailman/listinfo/rtems-users
>>     
>
>   


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel.sherrill at OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
   Support Available             (256) 722-9985





More information about the users mailing list