[yocto] any success with spartan6-lx9mb?
Trevor Woerner
twoerner at gmail.com
Sat Sep 8 10:04:10 PDT 2012
Hi Elvis,
Wow! Thanks so much for the help. I have not yet had the time to dig
into the guts of yocto/oe so I appreciate the opportunity :-)
On Thu, Sep 6, 2012 at 11:21 PM, Elvis Dowson <elvis.dowson at gmail.com> wrote:
> 01. Remove the TARGET_FPU = "soft" specification
>
> 02. Quickly test the machine/spartan6-lx9mb.conf by temporarily changing the
> tune file to include/tune-microblaze.inc, and see if the toolchain gets
> built using gcc-4.7 recipes.
Using the information you provided, my investigations have centered
around 3 files from meta-xilinx:
conf/machine/spartan6-lx9mb.conf
conf/machine/include/tune-microblaze.inc
conf/machine/include/microblaze/arch-microblaze.inc
First off: I'm curious why, when you refer to your meta-xilinx files,
you seem to have additional directories:
meta-xilinx/tree/conf/machine/spartan6-lx9mb.conf [tree?]
meta-xilinx/conf.machine/include/tune-microblazeel.inc [conf.machine?]
Secondly: usually when a bake needs to be restarted there's usually
some sort of "bitbake -f" or "bitbake -c clean -f <recipe>" that needs
to be issued. While performing my tests I never issued any such
cleanups and the new configurations seemed to be picked up correctly.
It is reasonable to believe my procedure is okay when modifying these
"machine" files?
I started by editing conf/machine/spartan-lx9mb.conf to "require
conf/machine/include/tune-microblaze.inc" from "tune-microblazeel.inc"
and removing 'TARGET_FPU = "soft"' from the "tune-microblaze.inc"
file. This, unfortunately failed:
Build Configuration:
BB_VERSION = "1.15.3"
TARGET_ARCH = "microblaze"
TARGET_OS = "linux"
MACHINE = "spartan6-lx9mb"
DISTRO = "poky"
DISTRO_VERSION = "1.2+snapshot-20120908"
TUNE_FEATURES = "m32 fpu-soft"
TARGET_FPU = "soft"
meta
meta-yocto = "master:5343cdb20ee56a8b507733c637dcc2466ae13288"
meta-xilinx = "mywork:d196fa93c7ff5e080d4c44e2b83aed472f32b2c7"
because of the following line in
conf/machine/include/microblaze/arch-microblaze.inc:
TARGET_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "fpu-soft",
"soft", "", d)}"
If I delete the line I get:
Build Configuration:
BB_VERSION = "1.15.3"
TARGET_ARCH = "microblaze"
TARGET_OS = "linux"
MACHINE = "spartan6-lx9mb"
DISTRO = "poky"
DISTRO_VERSION = "1.2+snapshot-20120908"
TUNE_FEATURES = "m32 fpu-soft"
meta
meta-yocto = "master:5343cdb20ee56a8b507733c637dcc2466ae13288"
meta-xilinx = "mywork:d196fa93c7ff5e080d4c44e2b83aed472f32b2c7"
Or if I modify the line to be:
TARGET_FPU .= "${@bb.utils.contains("TUNE_FEATURES", "fpu-soft",
"", "", d)}"
I get:
Build Configuration:
BB_VERSION = "1.15.3"
TARGET_ARCH = "microblaze"
TARGET_OS = "linux"
MACHINE = "spartan6-lx9mb"
DISTRO = "poky"
DISTRO_VERSION = "1.2+snapshot-20120908"
TUNE_FEATURES = "m32 fpu-soft"
TARGET_FPU = ""
meta
meta-yocto = "master:5343cdb20ee56a8b507733c637dcc2466ae13288"
meta-xilinx = "mywork:d196fa93c7ff5e080d4c44e2b83aed472f32b2c7"
I don't know if one is better than the other, but in either case the
build of gcc-cross-initial_4.7.bb fails with:
opening microblaze-c.o: No such file or directory
which is ironic since this is the same error message that originally
led you to suggest I try without the "el".
It appears as though gcc-cross-initial_4.7 is being configured with
the following options:
/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/work-shared/gcc-4.7.1.0+git1+d07e24f4ab59f264d68d21838795349faab5dede-r11/git/configure
--build=x86_64-linux
--host=x86_64-linux
--target=microblaze-poky-linux
--prefix=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr
--exec_prefix=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr
--bindir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr/bin/microblaze-poky-linux.gcc-cross-initial
--sbindir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr/bin/microblaze-poky-linux.gcc-cross-initial
--libexecdir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr/libexec/microblaze-poky-linux.gcc-cross-initial
--datadir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr/share
--sysconfdir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/etc
--sharedstatedir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/com
--localstatedir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/var
--libdir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr/lib/microblaze-poky-linux.gcc-cross-initial
--includedir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr/include
--oldincludedir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr/include
--infodir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr/share/info
--mandir=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux/usr/share/man
--disable-silent-rules
--disable-dependency-tracking
--with-libtool-sysroot=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/x86_64-linux
--with-newlib
--without-headers
--disable-shared
--disable-threads
--disable-multilib
--disable-__cxa_atexit
--enable-languages=c
--enable-target-optspace
--program-prefix=microblaze-poky-linux-
--with-sysroot=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/sysroots/spartan6-lx9mb
--with-build-sysroot=/home/trevor/devel/yocto/git-method/spartan6-lx9/tmp/work/microblaze-poky-linux/gcc-cross-initial-4.7.1.0+git1+d07e24f4ab59f264d68d21838795349faab5dede-r11/gcc-4_7-branch/build.x86_64-linux.microblaze-poky-linux/tmpsysroot
--disable-libmudflap
--disable-libgomp
--disable-libssp
--disable-libquadmath
--with-system-zlib
--disable-lto
--disable-plugin
--enable-decimal-float=no
--disable-nls
--enable-__cxa_atexit
I'll continue digging at the compiler, but all and any suggested
gladly welcomed. Two (or more things) are obviously fighting each
other since __cxa_atexit is both --disabled and --enabled. Is the
--with-newlib strange? Shouldn't there be a "-mcpu=" option in there
somewhere?
Does Xilinx have/use/suggest a particular version of gcc?
If I did have a filesystem ready to test and a board containing an
appropriate Xilinx part, do the free ISE tools allow me to work with
any soft cores, or do I need a paid license? (I also wonder how this
works for the Zynq board too).
Best regards,
Trevor
More information about the yocto
mailing list