help: failed to use qemu

Daron Chabot daronchabot at gmail.com
Wed Feb 11 14:17:44 UTC 2009


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

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

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




More information about the users mailing list