刚买回来Tiny6410的开发板,还不是很熟悉,看到别人都用ADS或者RVDS来编译裸奔程序,但我看别的教程是在linux下编译的裸奔程序,因此我也选择了在Linux下编译裸奔程序,编写Makefile,但是经过SD启动后,然后选择[d] Download and Run an Absolute User Application,使用dnw将led.bin(我只点亮一个LED,就是核心板的LED1)下载后,总是不可以(下载demo.bin是可以正常运行的),所以现在的问题就是不知道是我的代码错了,还是哪儿错了
main.c
#include "s3c6410_addr.h"
void delay()
{
int i=0x10000;
while(i--);
}
int main(void)
{
rGPKCON0|=1<<16; /*set GPK4 to be outport*/
while(1)
{
rGPKDAT =0; //GPK4输出0
delay();
rGPKDAT = 1<<4; //GPK4输出1
delay();
}
}
start.s
.globl _start
_start:
ldr r0, =0x70000000
orr r0, r0,#0x13
mcr p15,0,r0,c15,c2,4 @256M(0x70000000-0x7fffffff)
ldr r0, =0x7E004000
mov r1,#0
str r1,[r0]
ldr sp,=8*1024
bl main
makefile:
led.bin:main.o start.0
@arm-linux-ld -Ttext 0 -o led.elf start.o main.o
@arm-linux-objcopy -O binary led.elf led.bin
@arm-linux-objdump -D led.elf > led.dis
start.o:start.s
@arm-linux-gcc -o start.o start.s -c
main.o:main.c
@arm-linux-gcc -o main.o main.c -c
clean:
@rm -f *.o led.elf led.dis led.bin