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