出现这个问题的原因可能如下:
1. rootfs (busybox), kernel 编译的时候,没有选中 EABI 选项
可以用 readelf 查看是否有 EABI:
$ arm-linux-gnueabi-readelf -h vmlinux | grep Flags
Flags: 0x5000202, has entry point, Version5 EABI, soft-float ABI
2. 编译busybox 和 kernel 的工具链的体系结构不一样
我就遇到过这样的问题, busynox是用 arm a9 gcc 编的, kernel 是用 arm a15 gcc编的,结果,系统boot的时候就报这个错了。
也可以用 readelf 查看二进制文件的编译器类型
$ arm-linux-gnueabi-readelf -A vmlinux
Attribute Section: aeabi
File Attributes
Tag_CPU_name: "7-A"
Tag_CPU_arch: v7
Tag_CPU_arch_profile: Application
Tag_ARM_ISA_use: Yes
Tag_THUMB_ISA_use: Thumb-2
Tag_FP_arch: VFPv3
Tag_ABI_PCS_wchar_t: 4
Tag_ABI_FP_denormal: Needed
Tag_ABI_FP_exceptions: Needed
Tag_ABI_FP_number_model: IEEE 754
Tag_ABI_align_needed: 8-byte
Tag_ABI_enum_size: int
Tag_CPU_unaligned_access: v6