高级会员
- 积分
- 555
- 金钱
- 555
- 注册时间
- 2015-6-11
- 在线时间
- 66 小时
|
10金钱
makefile内容如下:
#cc := arm-none-linux-gnueabihf-gcc
#ld := arm-none-linux-gnueabihf-ld
#cp := arm-none-linux-gnueabihf-objcopy
#dm := arm-none-linux-gnueabihf-objdump
BIN.bin : main.o start.o
arm-none-linux-gnueabihf-as -c -o start.o start.S
arm-none-linux-gnueabihf-gcc -c -o main.o main.c
arm-none-linux-gnueabihf-ld -Ttext 0x2FFC2500 start.o main.o -o ELF
arm-none-linux-gnueabihf-objcopy -O binary -S ELF BIN.bin
arm-none-linux-gnueabihf-objdump -D -m arm ELF > asm.txt
stm32image -s BIN.bin -d BIN.stm32 -l 0x2FFC2500 -e 0x2FFC2500
clean:
rm -f *.o BIN.stm32 ELF BIN.bin asm.txt
直接make,回报如下错误
cc -c -o main.o main.c
cc -c -o start.o start.S
start.S: Assembler messages:
start.S:4: 错误: no such instruction: `ldr sp,=0x30000000@设置堆栈'
start.S:6: 错误: no such instruction: `bl main@调用C程序中的main函数'
start.S:8: 错误: no such instruction: `b halt_loop'
make: *** [<内置>:start.o] 错误 1
如果先编译start.S(arm-none-linux-gnueabihf-gcc -c -o start.o start.S),然后mkae就没问题。
有没有大神知道什么原因?
start.S内容如下:
.text
.global _start
_start:
ldr sp, =0x30000000 @ 设置堆栈
bl main @ 调用C程序中的main函数
halt_loop:
b halt_loop
|
最佳答案
查看完整内容[请看2#楼]
make之前export CC=arm-none-linux-gnueabihf-gcc就可以了。默认使用gcc,X86所以提示no such instruction
|