world leader in high performance signal processing
Trace: » 2008r1

2008 Release 1 (2008R1) Toolchain Release

DRAFT

This toolchain release contains tools for three targets: bfin-elf, bfin-uclinux, and bfin-linux-uclibc. All are cross toolchains for Blackfin. The bfin-elf target toolchain uses newlib for C library and can be used to develop standalone applications. Both of bfin-uclinux and bfin-linux-uclibc target toolchains use uClibc for C library and can be used to develop uClinux applications. bfin-uclinux is used for FLAT binary format. bfin-linux-uclibc is used for ELF FD-PIC binary format.

This release provides two GCC versions: 4.1.2 and 3.4.6. Binutils version in this release is 2.17. GDB version in this release is 6.6.

This release contains many bug fixes and some new features. It's more stable and usable.

Installing the toolchain

The installation process has not changed. Please refer to the installing section.

Known Issues

  1. elf2flt passes -q option to real.ld. --gc-sections will be ignored by ld since it cannot be used together with -q.
  2. We do not support profiling using gprof. The latest uClibc no longer supports gcc -fprofile-arcs -pg style profiling. You may use other alternatives, like OProfile.
  3. Single stepping through hardware loop does not work when there are only one instruction in the loop. It will step over the whole loop instead.
  4. When running bfin-elf-gdb, interrupting the simulated program with ^C does not work immediately. It will not take the effect until user press another key.
  5. As expected, -fstack-limit-symbol cannot be used with multithreading applications. Use -mstack-check-l1 instead.
  6. -fstack-limit-symbol cannot be used with -mfdpic. Use -mstack-check-l1 instead.
  7. -fprofile-arcs cannot be used with -mfdpic.

Changes

  1. uClibc has moved bits/bfin_sram.h to bfin_sram.h, and sys/l1layout.h to bfin_l1layout.h.
  2. GCC no longer generates local label as L$L$blah.
  3. GCC defaults -msim if -mfdpic or -mid-shared-library.

Improvement since Last Release

GCC

  1. GCC turns divide by constant into a multiplication at compile time for Blackfin.
  2. GCC generates better multiply sequence.
  3. GCC 4.1 is upgraded from 4.1.1 in last release to 4.1.2.
  4. GCC now generates correct code to unwind signal handler.
  5. GCC now uses a better PACK pattern.
  6. GCC now makes bfin-uclinux target more like a linux target.
  7. GCC now defines _ _NO_BUILTIN if -fno-builtin for Blackfin.
  8. GCC supports more VDSP builtins.
  9. GCC now has DISALIGNEXCPT builtin.
  10. GCC now will increase alignment for local variables beyond a certain size (structs, arrays), with the intention of allowing the builtin memcpy to work better.
  11. GCC now supports -mcpu=cpu[-si-revision].
  12. Atomic operations now use fixed code instead of system call, which improves the performance.
  13. GCC has better hardware loop support.
  14. GCC now has libmudflap enabled for Blackfin.
  15. GCC supports more Blackfin processors.
  16. GCC now recognizes 'q0'..'q7' as constraints for registers R0..R7 and 'qA' for P0.
  17. GCC now can delete empty loops.
  18. GCC now includes gfortran.
  19. GCC now has workaround for RETS anomaly.
  20. bfin-elf toolchain now supports single core program model and dual core program model on BF561 with new options: -multicore, -mcorea and -mcoreb.
  21. bfin-elf toolchain now accepts -msdram option for generate standalone application running in SDRAM.

Binutils

  1. Binutils now has support for 32-bit address decodes on pointers.

GAS

  1. GAS accepts (IU) option for multiply and multiply-accumulate to data register instruction, for example,
    R7 = (A1 += R1.H * R3.H) (IU);

Simulator

  1. Blackfin simulator supports four more instructions:
    An = An >> imm;
    An = An >>> imm;
    Rn = (A0 += A1);
    A0 += A1;

LDR

  1. ldr-utils now allow user to specify the baud rate while loading.
  2. ldr-utils adds a --prompt flag to the loading process to help with debugging.
  3. ldr-utils runs better on big endian host.
  4. ldr-utils adds an --initcode option so people can keep init code seperate fromm the final ELF executable.

BuildToolChain

  1. BuildToolChain has new options: -O, -j
    • -O OUTPUT: bfin-elf, bfin-uclinux and bfin-linux-uclibc are installed into OUTPUT directory
    • -j NUM: to allow user explicitly pass -j NUM to make.
  2. BuildToolChain default build all supported languages of GCC.
  3. BuildToolChain has been much more stable.
  4. BuildToolChain now builds and installs uClibc hostutils.
  5. BuildToolChain has a new option -X to allow people to disable all X related utilities so they can build on/for headless machines.
  6. BuildToolChain default output prefix now is “bfin-” instead of “out-”.
  7. buildToolChain now tests ld, libstdc++ and libmudflap.
  8. BuildToolChain will copy over the just built shared libraries to target board when testing FD-PIC compiler.
  9. BuildToolChain now is able to build libstdc++ when wchar is enabled in uClibc.

uClibc

  1. uClibc has been updated to upstream revision 20461.
  2. uClibc does not define RTLD_NOLOAD or RTLD_DEEPBIND any more.
  3. uClibc now provides an inline stub for msync.
  4. carg has been implemented in uClibc.
  5. llrint and llrintf have been implemented in uClibc.
  6. trunc and truncf have been implemented in uClibc.
  7. uClibc has improved of byteswapping functions.
  8. uClibc no longer has UCLIBC_UCLINUX_BROKEN_MUNMAP set.
  9. uClibc now is built with -O2.
  10. uClibc dynamic loader outputs an error message indicating the source of the problem when L1 allocation fails.
  11. strrchr and rindex are weak now.

Others

  1. A standalone blinky example has been added for BF548-EZKIT.
  2. Usability on Windows host has been largely improved.
  3. Usability on Mac OS X host has been largely improved.
  4. Insight, a GUI of GDB, has been added.
  5. libbfdsp is updated to VisualDSP++5.0-0705161.
  6. libgloss supports more Blackfin processors.
  7. newlib defines a new errno value ECANCELED.

Bug fixes

This section lists the bugs that are known to be fixed in this release. The number before the description is the bug ID in the GNU toolchain for the Blackfin processor project tracker. Here only list the import bugs that have been fixed. For a full list, see tracker.

GCC

GAS

LD

GDB

  • Function pointer argument was not correctly delt with when calling FD-PIC function from GDB.

Elf2flt

  • Backport WIN32/MINGW fixes from upstream elf2flt

LDR

Build Script

uClibc

libbfdsp