minglicnblogs

arm裸机驱动错误总结

 

错误001:

 

从上图画红线部分可知错误是:arm-linux-gcc -o &@ start.S -c 

         正确写法:arm-linux-gcc -o $@ start.S -c

在Makefile文件中:buzzer.bin: start.o main.o buzzer.o
buzzer.bin: start.o main.o buzzer.o
    arm-linux-ld -Ttext 0x20000000 -o buzzer.elf $^
    arm-linux-objcopy -O binary buzzer.elf buzzer.bin
    arm-linux-objdump -D buzzer.elf > buzzer_elf.dis

%.o : %.S
    #arm-linux-gcc -o &@ $< -c //错在这
    arm-linux-gcc -o $@ $< -c

%.o : %.c
    arm-linux-gcc -o $@ $< -c

clean:
    rm *.o *.elf *.bin *dis *.exe -f

 

错误002:

  led-buzzer-button裸机程序开发时:使汇编与C语言汇合编程时,程序能编译成功,当下载到mini210开发板上时,蜂鸣器不响,led也也不点亮;

  原因是:设置堆栈地址有问题,代码如下:

  .global _start

_start:
    //关闭看门狗
    
    ldr r0, =0xE2700000    //0xE270000
    mov r1, #0
    str r1, [r0]

    //设置栈,以便调用c函数
    ldr sp, =0xD0037D80  //=0x40000000  

              //栈地址0x40000000可能已经被占用,所以改成0xD0037D80
    //调用main
    bl main

halt:
    b halt

    

分类:

技术点:

相关文章:

  • 2021-11-24
  • 2021-06-29
  • 2017-12-01
  • 2022-12-23
  • 2021-08-05
  • 2022-01-21
  • 2022-01-17
  • 2021-06-29
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-20
  • 2021-10-29
  • 2021-04-11
  • 2022-12-23
相关资源
相似解决方案