1.在CSDN的资源中,可以找到irom的资料
IROM其实就是固化在芯片内部的程序,这个是在做晶圆的时候就封装进去的。这个可以方便你去调试外围驱动。在IROM的资料中,我们可以知道通过SD卡中的启动方式,是IROM将SD卡中最后的8K byte 读进IRAM中,然后执行。那么我们的Makefile 基址就是SRAM的起始地址:0x0C000000.所以我的的makefile是
objs := head.o init.o serial.o main.o
uart.bin: $(objs)
arm-none-linux-gnueabi-ld -Tuart.lds -o uart_elf $^
arm-none-linux-gnueabi-objcopy -O binary -S uart_elf $@
arm-none-linux-gnueabi-objdump -D -m arm uart_elf > uart.dis
%.o:%.c
arm-none-linux-gnueabi-gcc -Wall -O2 -c -o $@ $<
%.o:%.S
arm-none-linux-gnueabi-gcc -Wall -O2 -c -o $@ $<
clean:
rm -f uart.bin uart_elf uart.dis *.o
但是这个会报错。必须改正为以下:
objs := head.o init.o serial.o main.o
uart.bin: $(objs)
arm-none-linux-gnueabi-ld -Tuart.lds -o uart_elf $^
arm-none-linux-gnueabi-objcopy -O binary -S uart_elf $@
arm-none-linux-gnueabi-objdump -D -m arm uart_elf > uart.dis
%.o:%.c
arm-none-linux-gnueabi-gcc -Wall -nostdlib -O2 -c -o $@ $<
%.o:%.S
arm-none-linux-gnueabi-gcc -Wall -nostdlib -O2 -c -o $@ $<
clean:
rm -f uart.bin uart_elf uart.dis *.o
就不会报错了。下一次再说怎么进行下一步,脚痛啊~!!