Beaglebone Black的U-boot无法构建 - 目标CPU不支持THUMB指令。

3

我正在尝试按照Chris Simmonds的《掌握嵌入式Linux编程》中的说明为Beagle Bone Black构建u-boot。我已经构建了交叉工具链,现在正在尝试使用该工具链构建Das U-boot,但由于THUMB指令不受支持(是由编译器?还是BeagleBone?),构建失败了。我正在使用Denx git存储库v2018.05的最新版本进行构建,Ubuntu 18.04上进行构建。

以下是控制台输出:

johann@mars:~/uboot-work/u-boot$ make CROSS_COMPILE=arm-cortex_a8-linux-gnueabihf- am335x_evm_defconfig
#
# configuration written to .config
#
johann@mars:~/uboot-work/u-boot$ make CROSS_COMPILE=arm-cortex_a8-linux-gnueabihf- 
scripts/kconfig/conf  --silentoldconfig Kconfig
CHK     include/config.h
UPD     include/config.h
CFG     u-boot.cfg
GEN     include/autoconf.mk
GEN     include/autoconf.mk.dep
CFG     spl/u-boot.cfg
GEN     spl/include/autoconf.mk
CHK     include/config/uboot.release
CHK     include/generated/version_autogenerated.h
CHK     include/generated/timestamp_autogenerated.h
UPD     include/generated/timestamp_autogenerated.h
CC      lib/asm-offsets.s
cc1: warning: target CPU does not support THUMB instructions
CHK     include/generated/generic-asm-offsets.h
CC      arch/arm/lib/asm-offsets.s
cc1: warning: target CPU does not support THUMB instructions
CHK     include/generated/asm-offsets.h
HOSTCC  scripts/dtc/dtc.o
HOSTCC  scripts/dtc/flattree.o
HOSTCC  scripts/dtc/fstree.o
HOSTCC  scripts/dtc/data.o
HOSTCC  scripts/dtc/livetree.o
HOSTCC  scripts/dtc/treesource.o
HOSTCC  scripts/dtc/srcpos.o
HOSTCC  scripts/dtc/checks.o
HOSTCC  scripts/dtc/util.o
SHIPPED scripts/dtc/dtc-lexer.lex.c
SHIPPED scripts/dtc/dtc-parser.tab.h
HOSTCC  scripts/dtc/dtc-lexer.lex.o
SHIPPED scripts/dtc/dtc-parser.tab.c
HOSTCC  scripts/dtc/dtc-parser.tab.o
HOSTLD  scripts/dtc/dtc
HOSTCC  tools/mkenvimage.o
HOSTCC  tools/lib/crc32.o
HOSTLD  tools/mkenvimage
HOSTCC  tools/common/bootm.o
HOSTCC  tools/lib/fdtdec.o
HOSTCC  tools/fit_image.o
HOSTCC  tools/image-host.o
HOSTCC  tools/dumpimage.o
HOSTLD  tools/dumpimage
HOSTCC  tools/mkimage.o
HOSTLD  tools/mkimage
CC      arch/arm/cpu/armv7/cache_v7.o
cc1: warning: target CPU does not support THUMB instructions
{standard input}: Assembler messages:
{standard input}:42: Error: selected processor does not support `dsb sy' in ARM mode

make[1]: *** [arch/arm/cpu/armv7/cache_v7.o] Error 1
Makefile:1363: recipe for target 'arch/arm/cpu/armv7' failed

make: *** [arch/arm/cpu/armv7] Error 2
2个回答

4

我也在看这本书,遇到了同样的错误。我通过使用U-Boot的主分支(日期:2019-03-19,操作系统:Ubuntu 18.04)解决了问题。

然而,U-Boot的主分支没有am335x_boneblack_defconfig配置文件。我使用了am335x_evm_defconfig代替。

尽管存在编译问题,但是这本书很棒。

编辑:

进一步调查后,我发现根本原因是需要使用./ct-ng menuconfig将fpu-type设置为“neon-vfpv3”。

由于本书指示将浮点ABI设置为hard,因此fpu-type也应该设置为neon-vfpv3。否则,Linux内核和Barebox/U-boot都无法编译。


非常感谢您的回答。我会尝试并在这里发布结果。 - Sandrocottus
我改变了FPU类型,并使它工作了!非常感谢你,伙计。为我回答! - Sandrocottus
不过从SD卡启动没有成功!我无法将BBB识别为/dev/ttyUSB。 - Sandrocottus
1
ct-ng的menuconfig选项可在“Target options ---> Use specific FPU”(crosstool-ng-1.24.0)下找到。 - kostr22

0

我正在尝试按照Chris Simmonds的《精通嵌入式Linux编程》中的说明为Beagle Bone Black构建u-boot。我尽可能仔细地遵循了说明,但还是遇到了问题。因此,这本书似乎是错误的,可能是关于在构建crosstools-ng时从哪个配置文件开始的问题。我将改用am335x_evm_defconfig重新构建。谢谢。 - JohnBabrick
你好,@JohnBabrick,之后你能从SD卡启动吗? - Sandrocottus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接