原创 LED_ON_C

2009-2-5 14:42 2196 4 4 分类: MCU/ 嵌入式

//crt0.S


@******************************************************************************
@ File:crt0.S
@ 功能:通过它转入C程序
@******************************************************************************      


.text
.global _start
_start:
            ldr     r0, =0x53000000     @ WATCHDOG寄存器地址,书上是0x56000010,我觉得不对就改过来了。
            mov     r1, #0x0                    
            str   r1, [r0]              @ 写入0,禁止WATCHDOG,否则CPU会不断重启
           
            ldr     sp, =1024*4         @ 设置堆栈,注意:不能大于4k, 因为现在可用的内存只有4K
                                        @ nand flash中的代码在复位后会移到内部ram中,此ram只有4K
            bl      main                @ 调用C程序中的main函数
halt_loop:
            b       halt_loop


//led_on_c.c


#define GPFCON      (*(volatile unsigned long *)0x56000050)
#define GPFDAT      (*(volatile unsigned long *)0x56000054)


int main()


{
    GPBCON = 0x00000100;    // 设置GPF4为输出口, 位[9:8]=0b01
    GPFDAT = 0x00000000;    // GPF4输出0,LED1点亮
    return 0;
}


//Makefile


led_on_c.bin : crt0.S  led_on_c.c
 arm-linux-gcc -g -c -o crt0.o crt0.S
 arm-linux-gcc -g -c -o led_on_c.o led_on_c.c
 arm-linux-ld -Ttext 0x0000000 -g  crt0.o led_on_c.o -o led_on_c_elf
 arm-linux-objcopy -O binary -S led_on_c_elf led_on_c.bin
 arm-linux-objdump -D -m arm  led_on_c_elf > led_on_c.dis
clean:
 rm -f led_on_c.dis led_on_c.bin led_on_c_elf *.o


第六行将结构转换为汇编,查看后是有点头晕

文章评论0条评论)

登录后参与讨论
我要评论
0
4
关闭 站长推荐上一条 /2 下一条