This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

335x uboot编译问题



各位好,求帮忙看看这个编译问题是怎么回事,谢谢:

我从TI官网下载了335x最新的uboot源码和工具链:www.ti.com/.../PROCESSOR-SDK-AM335X

并且按照官网上找到的关于uboot的指导手册操作编译,操作过程如下(工具链路径我使用了绝对路径,没有配置PATH变量):

make CROSS_COMPILE=/home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-  distclean

rm -rf am335x_evm/

make CROSS_COMPILE=/home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig

make CROSS_COMPILE=/home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- O=am335x_evm

最后这一步编译会出现下面的问题:

../arch/arm/lib/memset.S: Assembler messages:
../arch/arm/lib/memset.S:46: Error: thumb conditional instruction should be in IT block -- `stmiage ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:47: Error: thumb conditional instruction should be in IT block -- `stmiage ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:48: Error: thumb conditional instruction should be in IT block -- `stmiage ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:49: Error: thumb conditional instruction should be in IT block -- `stmiage ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:51: Error: thumb conditional instruction should be in IT block -- `ldmfdeq sp!,{r8,pc}'
../arch/arm/lib/memset.S:56: Error: thumb conditional instruction should be in IT block -- `stmiane ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:57: Error: thumb conditional instruction should be in IT block -- `stmiane ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:59: Error: thumb conditional instruction should be in IT block -- `stmiane ip!,{r1,r3,r8,lr}'
../arch/arm/lib/memset.S:106: Error: thumb conditional instruction should be in IT block -- `stmiane ip!,{r1,r3}'
../arch/arm/lib/memset.S:108: Error: thumb conditional instruction should be in IT block -- `strne r1,[ip],#4'
../arch/arm/lib/memset.S:114: Error: thumb conditional instruction should be in IT block -- `strbne r1,[ip],#1'
../arch/arm/lib/memset.S:115: Error: thumb conditional instruction should be in IT block -- `strbne r1,[ip],#1'
../arch/arm/lib/memset.S:117: Error: thumb conditional instruction should be in IT block -- `strbne r1,[ip],#1'
../arch/arm/lib/memset.S:123: Error: thumb conditional instruction should be in IT block -- `strblt r1,[ip],#1'
../arch/arm/lib/memset.S:124: Error: thumb conditional instruction should be in IT block -- `strble r1,[ip],#1'
make[2]: *** [arch/arm/lib/memset.o] 错误 1
make[1]: *** [arch/arm/lib] 错误 2

源码完全是从官网下载下来的,没有一点改动,是否是我哪里配置的有问题呢?还请各位大神帮忙看看这个问题如何解决,谢谢。

  • 在CMAKE配置中的参数CMAKE_CXX_FLAGS_RELEASE 后添加”-Wa,-mimplicit-it=thumb”,依然存在问题可考虑在CMAKE_CXX_FLAGES后也添加此内容。

  • 大侠,能不能指导下CMAKE配置文件在什么地方?对这个完全无认识,求指点,谢谢。

  • 顶,求解答。。。。。

  • 先 export PATH=$HOME/gcc-linaro-4.9-2015.05-x86_64_arm-linux-gnueabihf/bin:$PATH
    再 运行
    $ make CROSS_COMPILE=arm-linux-gnueabihf- distclean
    $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig
    $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm
    三个步骤,会成功吗?
  • Eggsy Pang,你好。

    如此执行同样不行的,不过我下载的最新的SDK里面工具链的版本已经是2016年的了:

    llf@llf-virtual-machine:~/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin$ pwd
    /home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin

    llf@llf-virtual-machine:~/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin$ echo $PATH
    /home/llf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf/bin:/opt/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/arm-arago-linux-gnueabi/bin

    三步执行,其中前两个命令无问题,最后一个命令执行后依然会出现这个问题:

    ../arch/arm/lib/memset.S: Assembler messages:
    ../arch/arm/lib/memset.S:46: Error: thumb conditional instruction should be in IT block -- `stmiage ip!,{r1,r3,r8,lr}'
    ../arch/arm/lib/memset.S:47: Error: thumb conditional instruction should be in IT block -- `stmiage ip!,{r1,r3,r8,lr}'
    ../arch/arm/lib/memset.S:48: Error: thumb conditional instruction should be in IT block -- `stmiage ip!,{r1,r3,r8,lr}'
    ../arch/arm/lib/memset.S:49: Error: thumb conditional instruction should be in IT block -- `stmiage ip!,{r1,r3,r8,lr}'
    ../arch/arm/lib/memset.S:51: Error: thumb conditional instruction should be in IT block -- `ldmfdeq sp!,{r8,pc}'
    ../arch/arm/lib/memset.S:56: Error: thumb conditional instruction should be in IT block -- `stmiane ip!,{r1,r3,r8,lr}'
    ../arch/arm/lib/memset.S:57: Error: thumb conditional instruction should be in IT block -- `stmiane ip!,{r1,r3,r8,lr}'
    ../arch/arm/lib/memset.S:59: Error: thumb conditional instruction should be in IT block -- `stmiane ip!,{r1,r3,r8,lr}'
    ../arch/arm/lib/memset.S:106: Error: thumb conditional instruction should be in IT block -- `stmiane ip!,{r1,r3}'
    ../arch/arm/lib/memset.S:108: Error: thumb conditional instruction should be in IT block -- `strne r1,[ip],#4'
    ../arch/arm/lib/memset.S:114: Error: thumb conditional instruction should be in IT block -- `strbne r1,[ip],#1'
    ../arch/arm/lib/memset.S:115: Error: thumb conditional instruction should be in IT block -- `strbne r1,[ip],#1'
    ../arch/arm/lib/memset.S:117: Error: thumb conditional instruction should be in IT block -- `strbne r1,[ip],#1'
    ../arch/arm/lib/memset.S:123: Error: thumb conditional instruction should be in IT block -- `strblt r1,[ip],#1'
    ../arch/arm/lib/memset.S:124: Error: thumb conditional instruction should be in IT block -- `strble r1,[ip],#1'
    make[2]: *** [arch/arm/lib/memset.o] 错误 1
    make[1]: *** [arch/arm/lib] 错误 2
    make[1]:正在离开目录 `/home/llf/ti_335x/board-support/u-boot-2017.01+gitAUTOINC+9fd60700db-g9fd60700db/am335x_evm'
    make: *** [sub-make] 错误 2

  • 顶~顶~顶~

    希望大神能看到,帮忙解决问题。。。。。。

  • 继续。。。。

    TI的攻城狮们,有没有人可以用最新的sdk测试下看看是否确实存在这个问题,还是我的编译环境配置的有问题。。。。

  • 哥们,问一下,你的那个问题解决了没?