[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