help: failed to use qemu

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


Till Straumann wrote:
> Joel Sherrill wrote:
>   
>> I don't know that it matters but I am starting to use
>> the Intel FXP driver now with qemu.
>>     
> I have successfully used the 'pcnet' device with a
> port of the freebsd 'if_le' driver.
>   
Does that require the shared vector modifications to
the pc386 BSP?

I would love to get more NICs in the tree. :)

--joel
> T.
>   
>> --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