Build U-Boot and Build Kernel Fault

Hello
I followed the instraction from toradex site to build kernel and uboot:
http://developer.toradex.com/knowledge-base/build-u-boot-and-linux-kernel-from-source-code
But whenever i ran:
#make -j 2>&1 | tee build.log
i get the error:
arch/arm/lib/asm-offsets.c:1:0: error: bad value (armv5) for -march= switch
I have attached the build.log file.
Did i clone a false version?
Thanks
Rainer Slink text

What’s the output of

arm-linux-gnueabihf-gcc -v

end

echo $CROSS_COMPILE

Hi
thanks for answering.
echo $CROSS_COMPILE is:
arm-linux-gnueabihf-

arm-linux-gnueabihf-gcc -v:
bash: /home/user/imx7/gcc-linaro/bin/arm-linux-gnueabihf-gcc: cannot execute binary file: Exec format error

Okay, this means i have install the wrong toolchain?
My Linux is 16.04 but not X64, it is 686…

Ok
I could u-boot built, but had to install toolchain first by invoking:

sudo apt install gcc-arm-linux-gnueabihf

Is this right, that i have to install the toolchain?
I thought, i can invoke the toolchain
by setting (expand) the path envroiement variable…

then i had by calling #arm-linux-gnueabihf-gcc -v:

**Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabihf/5/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-armhf-cross/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-armhf-cross --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-armhf-cross --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libgcj --enable-objc-gc --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=arm-linux-gnueabihf --program-prefix=arm-linux-gnueabihf- --includedir=/usr/arm-linux-gnueabihf/include
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4)**

Regular linux distros are not shipping with cross-compilers installed, so installing them is normal. However we recommend using linaro GCC 6.2 toolchain instead of the one from ubuntu. Detailed instruction can be found here http://developer.toradex.com/knowledge-base/build-u-boot-and-linux-kernel-from-source-code#Toolchain_for_Hard_Float_Calling_Convention Just remember to use 32-bit linaro package from this link https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-i686_arm-linux-gnueabihf.tar.xz instead of 64-bit mentioned in the instruction.

Yes, i see. But i followed this article step-by-step and there isn’t any
mentioned from an install (e.g. sudo apt-get install xxx). And in my expirience
it isn’t necessary, because we set the path var, so the compiler and linker should
be found.
Now, the build runs thrugh, and i^'m not shure, if the build took the right
(cross) compiler, or the “normal” compiler from Ubuntu…
Thanks
Rainer

There is no need to install cross-compiler using apt or other package managers. All you need is to follow step-by-step instructions. Since you’ve installed toolchain for a different architecture and it did execute something means that you’ve failed to follow the step-by-step instructions. With proper PATH, CROSS_COMPILE and ARCH variables it should’ve exited with “cannot execute binary file: Exec format error” .

you’ll need 32-bit toolchain. you can download it from here:

https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-i686_arm-linux-gnueabihf.tar.xz

Also make sure that echo $ARCH returns arm

Ok, i built it on a 64 bit Ubuntu and it runs. But my next problem is,
that i havn’t the files:

“vf500-colibri-eval-v3.dtb” and “vf610-colibri-eval-v3.dtb”

instead i have the files: “vf500-colibri-eval-v3.dts” and “vf610-colibri-eval-v3.dts”
And when i copy the files on stick, boot in recovery mode, than the “run setupdate”
begins to run and boot after normally (without changing the kernel) in Command prompt from
Angstrom…

http://developer.toradex.com/knowledge-base/build-u-boot-and-linux-kernel-from-source-code#Kernel_Compilation explains how to properly compile the kernel and dtbs.
In short, just execute make vf500-colibri-eval-v3.dtb or make vf610-colibri-eval-v3.dtb

Yes, it runs thrugh, but i still have no *.dtb files on /linux-toradex/arch/arm/boot/dts/.
Only files with endings *.dts.
In description is the step to copy:

cp ~/linux-toradex/arch/arm/boot/zImage /media///
cp ~/linux-toradex/arch/arm/boot/dts/vf500-colibri-eval-v3.dtb /media///
cp ~/linux-toradex/arch/arm/boot/dts/vf610-colibri-eval-v3.dtb /media///

but there are only vf500-colibri-eval-v3.dts and vf610-colibri-eval-v3.dts

what’s the output of the make vf500-colibri-eval-v3.dtb command?

I’m on the imx7 colibri side, and i made a:

make imx7d-colibri-eval-v3.dtb

the output was:
make[1]: ‘arch/arm/boot/imx7d-colibri-eval-v3.dtb’ is up to date.

becuase i had it built before…

Then it worked and you should be able to find imx7d-colibri-eval-v3.dtb file
Same procedure can be used to get vf500-colibri-eval-v3.dtb file. Just remember that imx7 and vf kernel are on different branches.

Yes, i prepared a USB stick as described in “Flashing Embedded Linux to iMX7 Modules” copy zImage and the *.dtb file on it (in colibi_imx7 folder).
Then i run the recovery mode and start update with “run setupdate”.
At this point the system makes somthing and ended with the angstrom command promt.
When i type in “run update_kernel” the system says:
“Command not found”…

Please provide console output from run setupdate

Okee output after “run setupdate” is:

Colibri iMX7 # run setupdate
MMC: no card present
starting USB...
USB0:   USB EHCI 1.00
scanning bus 0 for devices... 1 USB Device(s) found
USB1:   USB EHCI 1.00
scanning bus 1 for devices...

U-Boot 2016.11-2.7.2+g60021a4 (Apr 10 2017 - 03:49:01 +0200)

CPU:   Freescale i.MX7D rev1.2 996 MHz (running at 792 MHz)
CPU:   Extended Commercial temperature grade (-20C to 105C) at 43C
Reset cause: POR
DRAM:  512 MiB
PMIC:  RN5T567 LSIVER=0x01 OTPVER=0x0d
NAND:  512 MiB
MMC:   FSL_SDHC: 0
*** Warning - bad CRC, using default environment

Video: 640x480x18
In:    serial
Out:   serial
Err:   serial
Model: Toradex Colibri iMX7 Dual 512MB V1.1C, Serial# 02910965
Net:   FEC0
Hit any key to stop autoboot:  0

Which carrier board are you using and how are you powering it?

Hi diminik.tx
I am using Colibri Evaluation Board V3.2B.
I powering it with a power supply (220 V~ input, 15 V Output, Power limitation
is half open…

It looks like the board is rebooting during USB discovery.
Please try running run setupdate without USB stick connected and see if it reboots. Try using different power supply with higher power rating. Try updating using a sd card or over tftp.