嵌入式Linux学习(四)用c语言点亮LED

硬件初始化

1、关闭看门狗

2、初始化时钟

3、初始化SDRAM

 

启动文件需要完成的任务

1、设置main函数的返回地址

2、调用main函数          

3、设置栈(将sp指针指向某块内存)

4、清理工作

 

自行编写启动文件

@************************************************
.text
.global _start
_start:
     LDR    R0,=0x53000000       @WATCHDOG寄存器地址
     MOV    R1,#0x0
     STR    R1,[R0]              @写入0,禁止看门狗,防止CPU不断重启
     LDR    sp,=1024*4           @设置堆栈
     BL     main                 @调用c程序中的main函数,并将返回地址保存在lr寄存器中
halt_loop:
     B      halt_loop            @死循环

编写.c文件

/*
 *   p =( unsigned long *)0x56000050
 *   *p = (*(unsigned long *)0x56000050) 取得改地址处的值
 *   volatile告诉编译器不要优化该变量
 */
#define GPFCON    (*(volatile unsigned long *)0x56000050)
#define GPFDAT    (*(volatile unsigned long *)0x56000054)

int main()
{
        GPFCON = 0x00000100;    //设置GPF4为输出口
        GPFDAT = 0x00000000;    //GPF4输出0,LED1点亮

        return 0;
}

 编写makefile文件

led_on.bin :led.c start_up.s
        arm-linux-gcc -g -c -o led_on.o led.c 
        arm-linux-gcc -g -c -o start_up.o start_up.s
        arm-linux-ld -Ttext 0x0000000 -g led_on.o start_up.o -o led_on_elf
        arm-linux-objcopy -O binary -S led_on_elf led_on.bin
clean:
        rm -f   led_on.bin led_on_elf *.o

烧写程序验证程序 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值