crt0.S:
.text
.global _start
_start:
LDR R0,=0xE2700000 @ 看门狗寄存器地址
MOV R1,#0x0
STR R1,[R0] @ 禁止看门狗
LDR sp,=0xD0037D80 @IROM里的固定代码设置的sp就等于0xD003_7D80
@也可以自己随便设置,只要指向的是一块可用的内存
@且不会覆盖我们自己的代码即可
bl main
halt_loop:
b halt_loop
leds.c:
#define GPJ2CON (*(volatile unsigned long *)0xE0200280)
#define GPJ2DAT (*(volatile unsigned long *)0xE0200284)
int main()
{
GPJ2CON = 0x00000001;
GPJ2DAT = 0;
while(1)
{
}
return 0;
}
#define GPJ2DAT (*(volatile unsigned long *)0xE0200284)
int main()
{
GPJ2CON = 0x00000001;
GPJ2DAT = 0;
while(1)
{
}
return 0;
}
Makefile
leds.bin : crt0.S leds.c
arm-linux-gcc -g -c -o crt0.o crt0.S
arm-linux-gcc -g -c -o leds.o leds.c
arm-linux-ld -Ttext 0x0000000 -g crt0.o leds.o -o leds_elf
arm-linux-objcopy -O binary -S leds_elf leds.bin
arm-linux-objdump -D -m arm leds_elf > leds.dis
clean:
rm -f leds.dis leds.bin leds_elf *.o
arm-linux-gcc -g -c -o crt0.o crt0.S
arm-linux-gcc -g -c -o leds.o leds.c
arm-linux-ld -Ttext 0x0000000 -g crt0.o leds.o -o leds_elf
arm-linux-objcopy -O binary -S leds_elf leds.bin
arm-linux-objdump -D -m arm leds_elf > leds.dis
clean:
rm -f leds.dis leds.bin leds_elf *.o
按照韦东山的2440GPIO实验做的代码试了试可以点亮