0

I'm new to embedded and am reading 'Embedded Linux Primer' at the moment.

I tried to build an xscale arm kernel:

make ARCH=arm CROSS_COMPILE=xscale_be- ixp4xx_defconfig
#
# configuration written to .config

followed by the make:

~/linux-stable$ make ARCH=arm CROSS_COMPILE=xscale_be- zImage
make: xscale_be-gcc: Command not found
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
  CC      kernel/bounds.s
/bin/sh: 1: xscale_be-gcc: not found
make[1]: *** [kernel/bounds.s] Error 127
make: *** [prepare0] Error 2

I had downloaded and extracted gcc-arm-none-eabi-4_9-2014q4 from https://launchpad.net/gcc-arm-embedded

and set the path

PATH=/opt/gcc-arm-none-eabi-4_9-2014q4/bin/

Do I need another compiler for the xscale architecture?

Any ideas where I can find xscale_be-gcc?

1

I'm reading the same book and get stuck in the same part, so... after some research i finally compiled the kernel for ixp4xx target

Download the ARM toolchain from: Devloper arm Compiler v6 then...

$ mkdir -p ~/opt

$ cd ~/opt

$ tar xjf ~/Downloads/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2

$ chmod -R -w ~/opt/gcc-arm-none-eabi-6-2017-q2-update

look if the installation is correct

~/opt$ gcc-arm-none-eabi-6-2017-q2-update/bin/arm-none-eabi-gcc --version

The output will be something like this:

arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors 6-2017-q2-update) 6.3.1 20170620 (release) [ARM/embedded-6-branch revision 249437] Copyright (C) 2016 Free Software Foundation, Inc...

Now you can prepare your Kernel source tree

make ARCH=arm CROSS_COMPILE=~/opt/gcc-arm-none-eabi-6-2017-q2-update/bin/arm-none-eabi- ixp4xx_defconfig

And finally compile...

make ARCH=arm CROSS_COMPILE=~/opt/gcc-arm-none-eabi-6-2017-q2-update/bin/arm-none-eabi- zImage

Success!

Maybe it is not the best compiler for the target or need a kernel patch but... in order to follow each step in the book i think is enough.

BR,

| improve this answer | |
1

What is your board ? Did you configure the Kernel ? You need to configure the Kernel to match your board and specify the corss-compile toolchain.

Isn't the arm-none-eabi-* for bare-metal ? Not for linux. Who siad you need to use gcc-arm-none-eabi-4_9-2014q4 ?

Also, you are resetting the PATH! Do this:

PATH=$PATH:/opt/gcc-arm-none-eabi-4_9-2014q4/bin/

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.