help: failed to use qemu

Till Straumann strauman at slac.stanford.edu
Wed Feb 11 21:54:19 UTC 2009


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.

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
>>>     
>>
>>   
>
>




More information about the users mailing list