[U-Boot] U-Boot/IXP

Marek Vasut
2012-03-05T23:00:02Z

Dear Bryan Hundven,

> On Mon, Mar 5, 2012 at 2:22 PM, Marek Vasut <marex@denx.de> wrote:
> > Dear Bryan Hundven,
> >
> >> On Mon, Mar 5, 2012 at 2:09 PM, Marek Vasut <marex@denx.de> wrote:
> >> > Dear Bryan Hundven,
> >> >
> >> >> On Mon, Mar 5, 2012 at 12:15 PM, Marek Vasut <marex@denx.de> wrote:
> >> >> > Dear Michael Schwingen,
> >> >> >
> >> >> >> Am 03/05/2012 12:54 PM, schrieb Marek Vasut:
> >> >> >> > Dear Michael Schwingen,
> >> >> >> >
> >> >> >> >> On Mon, Mar 05, 2012 at 02:14:56AM +0100, Marek Vasut wrote:
> >> >> >> >>> Dear Michael Schwingen,
> >> >> >> >>>
> >> >> >> >>> do you still intend to maintain IXP support in uboot or can
> >> >> >> >>> all those IXP boards be removed? I'd be great if you helped
> >> >> >> >>> bringing them back in-line!
> >> >> >> >>
> >> >> >> >> I still use them and would want to keep these boards (and
> >> >> >> >> maintain them).
> >> >> >> >>
> >> >> >> >> I only glimpse at the mailing list from time to time - are
> >> >> >> >> there any open problems with these boards that need to be
> >> >> >> >> addressed?
> >> >> >> >
> >> >> >> > No, I just cannot compile it with usual arm-linux-gnueabi-
> >> >> >> > toolchain and that puts a bleep on my bug-radar. Is that normal?
> >> >> >> > Do I need a special toolchain?
> >> >> >>
> >> >> >> I am using an old, locally built toolchain that identifies itself
> >> >> >> as gcc version 4.3.4 (crosstool-NG-hg_default at 1471_4a88cb9bfe8f)
> >> >> >>
> >> >> >> I can take a look at this using a newer toolchain - however, I am
> >> >> >> in the process of moving, so this will probably take some weeks.
> >> >> >>
> >> >> >> What prebuilt toolchain should I try?
> >> >> >
> >> >> > I was more curious if it's possible for me myself to build these.
> >> >> > And if so, can that be done with usual arm-linux-gnueabi-
> >> >> > toolchain? Or do I need special armeb toolchain compiled in some
> >> >> > special way?
> >> >>
> >> >> I've built a new armeb xscale toolchain available here if you want to
> >> >> try it.
> >> >> https://sourceforge.net/projects/bhundven.u/files/armeb-unknown-linux
> >> >> -gn ue abi.tar.bz2/download
> >> >>
> >> >> I built it on x86_64. I can build it on 32-bit intel if you don't
> >> >> have an x86_64 build box. Let me know.
> >> >>
> >> >> $ ct-ng show-armeb-unknown-linux-gnueabi
> >> >> armeb-unknown-linux-gnueabi [L X]
> >> >> OS : linux-3.2.8
> >> >> Companion libs : gmp-5.0.2 mpfr-3.1.0 ppl-0.11.2
> >> >> cloog-ppl-0.15.11 mpc-0.9 libelf-0.8.13
> >> >> binutils : binutils-2.22
> >> >> C compiler : gcc-4.6.3
> >> >> (C,C++,Fortran,Java,Objective-C,Objective-C++) C library :
> >> >> eglibc-2_15
> >> >> Tools : dmalloc-5.5.2 duma-2_5_15 gdb-7.3a ltrace-0.5.3
> >> >> strace-4.6
> >> >
> >> > Ok, that's good. But can someone please answer my question (now there
> >> > are two)?
> >> >
> >> > 1) Does usual arm-linux-gnueabi- toolchain work? (possibly if I use
> >> > some switch to toggle arm core endianness)
> >>
> >> No, the arm and armeb toolchains are different tuples.
> >>
> >> > 2) Do I need any special options to build the toolchain?
> >>
> >> You have to build an armeb toolchain with armeb as the platform in the
> >> tuple. I don't see one on mentorgraphic's site.
> >> I'm not sure if you can build a multilib arm/armeb toolchain.
> >
> > And what's the actual difference in the output code? Is it just that the
> > code is compiled for xscale core (as usual) and the instructions are
> > flipped or is there something else?
>
> Yes, the toolchain output's xscale optimized binaries and is
> configured for big-endian.
> For autoconf based projects, it actually checks the platform part of
> the tuple to figure out if it is little (arm) or big endian (armeb).
>
> I'd prefer just using the -EL or -EB flags on
> arm-unknown-linux-gnueabi, but as I said before, I'm not sure if you
> can build a multilib arm/armeb toolchain.

Check this (oneliner patch below) ... Michael/Bryan, can you actually try fixing
the remaining issues and try with normal ARM toolchain + this patch, if these
uboot images are bootable:

marex at mashiro:~/U-Boot/u-boot-marex$ CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm
./MAKEALL actux4
Configuring for actux4 board...
IxEthAcc.c: In function ?ixEthAccInit?:
IxEthAcc.c:105:21: warning: comparison between ?IxEthDBStatus? and ?enum
<anonymous>? [-Wenum-compare]
IxEthDBAPISupport.c: In function ?ixEthDBPortAddressSet?:
IxEthDBAPISupport.c:633:18: warning: variable ?ackPortAddressLock? set but not
used [-Wunused-but-set-variable]
IxQMgrDispatcher.c: In function ?ixQMgrLLPShow?:
IxQMgrDispatcher.c:1194:18: warning: variable ?q? set but not used [-Wunused-
but-set-variable]
actux4.c: In function ?board_init?:
actux4.c:57:27: error: ?MACH_TYPE_ACTUX4? undeclared (first use in this
function)
actux4.c:57:27: note: each undeclared identifier is reported only once for each
function it appears in
actux4.c:93:2: warning: left shift count >= width of type [enabled by default]
actux4.c:93:2: warning: left shift count >= width of type [enabled by default]
make[1]: *** [actux4.o] Error 1
make: *** [board/actux4/libactux4.o] Error 2
arm-linux-gnueabi-size: './u-boot': No such file

--------------------- SUMMARY ----------------------------
Boards compiled: 1
Boards with warnings or errors: 1 ( actux4 )
----------------------------------------------------------
marex at mashiro:~/U-Boot/u-boot-marex$ git diff
diff --git a/arch/arm/cpu/ixp/config.mk b/arch/arm/cpu/ixp/config.mk
index 9149665..c8b8440 100644
--- a/arch/arm/cpu/ixp/config.mk
+++ b/arch/arm/cpu/ixp/config.mk
@@ -28,6 +28,8 @@ PLATFORM_RELFLAGS += -fno-common -ffixed-r8 -msoft-float -
mbig-endian

PLATFORM_CPPFLAGS += -mbig-endian -march=armv5te -mtune=strongarm1100

+PLATFORM_LDFLAGS += -EB
+
# -fdata-sections triggers "section .bss overlaps section .rel.dyn" linker
error
PLATFORM_RELFLAGS += -ffunction-sections
LDFLAGS_u-boot += --gc-sections

Best regards,