感谢韦东山老师!!!
汇编程序.S:
<span style="font-size:18px;">.text
.global _start
_start:
其间很多代码
MAIN_LOOP:
B MAIN_LOOP</span>
makefile:
<span style="font-size:18px;">led_on.bin : led_on.S
arm-linux-gcc -g -c -o led_on.o led_on.S
arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf //这里就规定了代码段从0x</span><span style="font-size: 18px; font-family: Arial, Helvetica, sans-serif;">0000000开始 下面有具体讲解</span><span style="font-size:18px;">
arm-linux-objcopy -O binary -S led_on_elf led_on.bin
clean:
rm -f led_on.bin led_on_elf *.o</span>
具体原因如下:
两种启动方式:
nandflash启动时,2440内部有4K的SRAM 硬件上会强制的把nandflash前面4K的内容拷贝到4K的SRAM上。CPU从0地址开始启动(SRAM的地址0)。
norflash启动时,直接从norflash的0地址开始执行 。
norflash的特性:可以像内存一样读数据,但是不能像内容一样写数据