主题 : 一个困惑的编译小错误 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 8981
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
综合积分: 20 分
注册时间: 2009-09-13
最后登录: 2009-10-31
楼主  发表于: 2009-09-14 22:39

 一个困惑的编译小错误

编译时提示错误如下:
MOV     R1,#0x00015001
led2_on.S:14: Error: invalid constant -- `mov R1,#0x00015001'

但改成
MOV     R1,#0x00015000
就没问题. 困惑中.......

另外:
LDR  R1,=0x00015001
也没问题

详细程序如下
===
simon@lionteeth:~/work/studycdrom/hardware/led_on$ vim led2_on.S
No mapping found
Hit ENTER or type command to continue
@******************************************************************************
@ Lignt LED2 and LED4 and LED3
@ LED2 : GPB6
@ LED3 : GPB7
@ LED4 : GPB8
@******************************************************************************

.text
.global _start
_start:
            LDR     R0,=0x56000010      @ GPBCON address
                                        @
                                        @
            MOV     R1,#0x00015001      @ GPB6: [13:12] GPB7[15,14] GPB8[17:16] 0x0001 5000
            @LDR     R1,=0x00015001      @ GPB6: [13:12] GPB7[15,14] GPB8[17:16] 0x0001 5000
            STR     R1,[R0]             @
            LDR     R0,=0x56000014      @ GPBDATA address
                                        @
            MOV     R1,#0x00000001      @
                                        @
            STR     R1,[R0]             @
MAIN_LOOP:
            B       MAIN_LOOP
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~
~

simon@lionteeth:~/work/studycdrom/hardware/led_on$                                                                
simon@lionteeth:~/work/studycdrom/hardware/led_on$ make clean;make
rm -f   led2_on.bin led2_on_elf *.o
arm-linux-gcc -v -g -c -o led2_on.o led2_on.S
Reading specs from /home/simon/work/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/gcc/arm-linux/3.4.5/specs
Configured with: /home/simon/work/crosstool/crosstool-0.43/build/arm-linux/gcc-3.4.5-glibc-2.3.6/gcc-3.4.5/configure --target=arm-linux --host=i686-host_pc-linux-gnu --prefix=/home/simon/work/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux --with-float=soft --with-headers=/home/simon/work/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/arm-linux/include --with-local-prefix=/home/simon/work/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/arm-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.4.5
/home/simon/work/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/libexec/gcc/arm-linux/3.4.5/cc1 -E -lang-asm -quiet -v -D__ARM_ARCH_3__ led2_on.S -msoft-float -fworking-directory -o /tmp/ccyDvFp3.s
#include "..." search starts here:
#include <...> search starts here:
/home/simon/work/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/gcc/arm-linux/3.4.5/include
/home/simon/work/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/gcc/arm-linux/3.4.5/../../../../arm-linux/sys-include
/home/simon/work/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/gcc/arm-linux/3.4.5/../../../../arm-linux/include
End of search list.
/home/simon/work/crosstool/gcc-3.4.5-glibc-2.3.6/arm-linux/lib/gcc/arm-linux/3.4.5/../../../../arm-linux/bin/as --gdwarf2 -mfpu=softfpa -o led2_on.o /tmp/ccyDvFp3.s
led2_on.S: Assembler messages:
led2_on.S:14: Error: invalid constant -- `mov R1,#0x00015001'
make: *** [led2_on.bin] Error 1
simon@lionteeth:~/work/studycdrom/hardware/led_on$
级别: 新手上路
UID: 8981
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
综合积分: 20 分
注册时间: 2009-09-13
最后登录: 2009-10-31
1楼  发表于: 2009-09-15 12:29
贴上来有乱码,难道源文件有看不见的控制字符, 晚上回去好好检查一下.....
????????????MOV???? R1,#0x00015001??????@ GPB6: [13:12] GPB7[15,14] GPB8[17:16] 0x0001 5000
级别: 新手上路
UID: 8981
精华: 0
发帖: 10
金钱: 100 两
威望: 50 点
综合积分: 20 分
注册时间: 2009-09-13
最后登录: 2009-10-31
2楼  发表于: 2009-09-19 12:29
原来是RISC MOV的immedia_8问题.....