From 267d6104e9b62a87df28c2739406656a3d308936 Mon Sep 17 00:00:00 2001 From: Till Straumann Date: Mon, 18 Jul 2011 17:40:55 +0000 Subject: 2011-07-18 Till Straumann * README.qemu: added. --- .../lib/libbsp/powerpc/motorola_powerpc/ChangeLog | 17 +-- .../libbsp/powerpc/motorola_powerpc/README.qemu | 119 +++++++++++++++++++++ 2 files changed, 128 insertions(+), 8 deletions(-) create mode 100644 c/src/lib/libbsp/powerpc/motorola_powerpc/README.qemu (limited to 'c') diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog index 6dd00b813f..3f39544396 100644 --- a/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/ChangeLog @@ -1,16 +1,17 @@ 2011-07-18 Till Straumann - * motorola_powerpc/make/custom/qemuprep-altivec.cfg, - motorola_powerpc/Makefile.am: added altivec-enabled variant. + * README.qemu: added. + +2011-07-18 Till Straumann + + * make/custom/qemuprep-altivec.cfg, Makefile.am: + added altivec-enabled variant 'qemuprep-altivec'. 2011-07-15 Till Straumann - * motorola_powerpc/Makefile.am, - motorola_powerpc/configure.ac, motorola_powerpc/preinstall.am, - motorola_powerpc/include/bsp.h, motorola_powerpc/make/custom/qemuprep.cfg, - motorola_powerpc/qemu_fakerom/Makefile.am, - motorola_powerpc/qemu_fakerom/.cvsignore: - Added 'qemuprep' BSP variant. + * Makefile.am, configure.ac, preinstall.am, include/bsp.h, + make/custom/qemuprep.cfg, qemu_fakerom/Makefile.am, + qemu_fakerom/.cvsignore: Added 'qemuprep' BSP variant. 2011-06-18 Ralf Corsépius diff --git a/c/src/lib/libbsp/powerpc/motorola_powerpc/README.qemu b/c/src/lib/libbsp/powerpc/motorola_powerpc/README.qemu new file mode 100644 index 0000000000..cc23af65a1 --- /dev/null +++ b/c/src/lib/libbsp/powerpc/motorola_powerpc/README.qemu @@ -0,0 +1,119 @@ +The 'qemuprep'/'qemuprep-altivec' BSPs are variants of +'motorola_powerpc' that can run under QEMU. They are *not* +binary compatible with other variants of 'motorola_powerpc' +(nor with each other). + +Most significant differences to real hardware: + - no OpenPIC, just a 8259 PIC (even though qemu implements an openpic + at least to some extent it is not configured into the prep platform + as of qemu-0.14.1). + - no VME (absense of the VME controller is detected by the BSP) + - the only network chip supported by both, qemu and vanilla RTEMS + is the ISA NE2000 controller. Note that the default interrupt line + settings used by RTEMS and QEMU differ: RTEMS uses 5 and QEMU 9. + This can be addressed by passing a RTEMS commandline option + --ne2k-irq=9. + Other controllers (i8559, e1000, pcnet) implemented by qemu can + also be used but require unbundled RTEMS drivers (libbsdport). + Note that the bundled 'if_fxp' has not been ported to PPC and works + on x86 only. + - unlike a real motorola board you can run qemu emulating a 7400 CPU + which features altivec. I.e., you can use this BSP (altivec-enabled + variant) to test altivec-enabled code. + +Compatibility: qemu had quite a few bugs related to the PREP platform. +Version 0.12.4, for example, required patches. 0.14.1 seems to have +fixed the show-stoppers. Hence, you *need* at least qemu-0.14.1 for +this BSP; it should work without the need for patching QEMU. + +BIOS: qemu requires you to use a BIOS. The one that came with qemu +0.12.4 didn't work for me so I created a minimal dummy that provides +enough functionality for the RTEMS bootloader to work. + +BSP Variants: +You can compile the BSP for either a 604 CPU or a 7400 (altivec-enabled). +Note that you cannot run the altivec-enabled BSP variant on a CPU w/o +altivec/SIMD hardware. The non-altivec variant is called 'qemuprep' +and the altivec-enabled one 'qemuprep-altivec'. Hence, you can +configure RTEMS: + +604/non-altivec variant only: + configure --target=powerpc-rtems --enable-rtemsbsp=qemuprep +7400/altivec variant only: + configure --target=powerpc-rtems --enable-rtemsbsp=qemuprep-altivec +both variants: + configure --target=powerpc-rtems --enable-rtemsbsp='qemuprep qemuprep-altivec' + +Building QEMU: +In case you have no pre-built qemu-0.14.1 you can +compile it yourself: + +cd qemu-0.14.1 +configure --target-list=ppc-softmmu +make + +Running QEMU: +A number of command-line options are important (BTW: make sure +you run the PPC/PREP emulator and not a natively installed i386/PC +emulating 'qemu') + +-M prep --- select machine type: prep +-cpu 604 --- select 604 CPU for non-altivec variant +-cpu 7400 --- select 7400 CPU for altivec variant + + NOTE: the 7455 and 7457 emulations are buggy as of + qemu-0.14.1 and they won't work. + +-bios /powerpc-rtems/qemuprep/qemu_fakerom.bin +-bios /powerpc-rtems/qemuprep-altivec/qemu_fakerom.bin + --- select proprietary dummy 'BIOS' + +-nographic --- redirect serial/IO to console where qemu is run + +-kernel --- path to your RTEMS executable (.ralf file, e.g., 'hello.ralf') +-no-reboot --- terminate after one run +-append --- RTEMS kernel comand line (use e.g., to modify + ne2000 driver interrupt line) + +Networking: +(We assume your RTEMS application is correctly configured and +built for networking using the ne2k adapter [other adapters +can be used with unbundled/libbsdport drivers]) + +I use networking with a 'tap' interface on the host machine +and can then communicate with the emulated target in any +desired way. + +On (linux) host: + +# create a 'permanent' tap device that can be used by myself +# (as non-root user). +sudo tunctl -u `id -u` +# configure tap0 interface +sudo ifconfig tap0 10.1.1.1 netmask 255.255.255.0 up +# provide a suitable dhcpd config file (for the emulated +# platform to boot: IP address etc. +# +# execute dhcp on host +sudo dhcpd -d tap0 + +Start emulated prep platform: + +ppc-softmmu/qemu-system-ppc \ + -M prep \ + -cpu 7400 \ + -bios /powerpc-rtems/qemuprep-altivec/lib/qemu_fakerom.bin \ + -kernel /my_app.ralf \ + -append --ne2k-irq=9 \ + -nographic \ + -no-reboot \ + -net nic,model=ne2k_isa \ + -net tap,vlan=0,ifname=tap0,script=no,downscript=no + +Again: if you use the non-altivec BSP variant, use -cpu 604 +and if you use the altivec-enabled variant then you MUST use +-cpu 7400. + +Have fun. + +Till Straumann, 2011/07/18 -- cgit v1.2.3