Trouble building spec. toolchain for ARM Hi3531

Nikita Orlov
Mon Apr 21 15:16:00 GMT 2014


I have maybe strange problem, my knowledge is not enough to solve it, so I`m try to find help here.

I have a board with ARM SoC Hi3531. Brief datasheet -
Specs of processor is:
ARM Cortex A9 dual cores
− Up to 930 MHz
− 32 KB I-cache and 32 KB D-cache
− 256 KB L2 cache

I have an SDK for it. SDK contains linux kernel 3.0.8 with some editions for support this device (march-godnet dir in /arch/arm).
Toolchain is arm-hisiv200-linux-gcc (Hisilicon_v200(gcc4.4-290+glibc-2.11+eabi+nptl)) 4.4.1
There are some precompiled modules for this SoC. Note said that:

Hi3531 support hardware floating-point. And all libs in default file system are compiled to hardware floating-point. So it's strongly recommen$
  CFLAGS += -march=armv7-a -mcpu=cortex-a9 –mfloat-abi=softfp -mfpu=vfpv3-d16
  CXXFlAGS +=-march=armv7-a -mcpu=cortex-a9 –mfloat-abi=softfp -mfpu=vfpv3-d16

So, as I understand my ARM is
armv7-a, cortex-a9, softfp, vfpv3-d16

On the board there is installed U-boot to SPI slash memory chip. I can connect to board via serial port and get access to U-boot.
So, I can use my kernel via usb or TFTP and edit kernel boot params.

If I compile kernel with toolchain from SDK, everything is good, kernel loads.

I try to build my own toolchain for this SoC, with last gcc, binutils and glibc via crosstool-NG 1.9.0
I have a number of different configs for crosstool-NG, it builds toolchain with no errors, but when I compile kernel (it builds ok), after booting it 
via U-boot nothing happens, no errors just a string
Uncopressed kernel ok, booting... (something like this words)
After it usually there is some boot log, but it seems something goes wrong.

I think my mistake is somewhere in configuring Target options menu (ct-ng menuconfig)
I choose:
Target Architecture - arm
Suffix to the arch-part - nothing
Build a multilib toolchain - NO
Use the MMU - Yes (SoC supports it)
Endianness: - Little endian
Bitness: - 32-bit
Architecture level
Emit assembly for CPU - cortex-a9
Tune for CPU - nothing
Use specific FPU vfpv3-d16
Floating point: softfp
Target CFLAGS - nothing
Target LDFLAGS - nothing
Default instruction set mode - arm
Use Thumb-interworking - no

I use headers from my kernel tree.
gcc - 4.8.1

As I understand settings of binutls, glibc, and others don`t affects step of kernel building and booting, so I left them defaults.

So, I think I need to config Target options right to build and boot kernel.
I`m asking for advice or way to solve this.


Nikita Orlov
Skype: nik_stet
QQ: 2717846083

For unsubscribe information see

More information about the crossgcc mailing list