嵌入式Linux裸机开发(一)——点亮Led

2019-07-12 16:14发布

嵌入式Linux裸机开发(一)——点亮Led

开发板:友善之臂smart210

一、电路图查阅

1、底板电路图

查阅开发板底板电路图,查阅LED相关部分LED电路工作原理:wKioL1dSyoCwaSpsAAAbV0ZVsno967.png LED的正极接3.3V,负极接地时导通,LED发光。 wKiom1dSyZeChSxmAABFJfhHZso637.png     开发板共有四颗LED,正极接3.3V,负极接开发板的LED1_LED4引脚,如果LED要点亮则需要输入低电平。

2、核心板电路图

wKioL1dSyrmjXqYzAADTf__16yU234.png     查阅核心板电路图可知,LED1-LED4接在SoC的GPJ2_0-GPJ2_3,通过控制GPJ2_0-GPJ2_3的寄存器使对应GPIO引脚输出电平为低电平,则LED会点亮。

二、SoC手册查阅

    查阅三星S5PV210 SoC的dadasheet:S5PV210_UM_REV1.1文档,GPIO位于文档的section2-system部分的GPIO节,查找GPJ2_0-GPJ2_3对应的寄存器,得到GPJ2_0-GPJ2_3对应的寄存器地址和配置参数。GPJ2CON = 0xE0200280    设置为0001 = Output方式GPJ2DAT = 0xE0200284设置bit0-bit3为低电平,即0

三、程序实现

start.S源码文件:#define GPJ2CON 0xE0200280#define GPJ2DAT 0xE0200284 .global _start_start:    //设置GPJ2CON    ldr r0,=0xE0200280      //GPJ2CON    ldr r1,=0x00001111      //设置led1--led4output    str r1,[r0]//GPJ2CON设置为0x00001111    //led闪烁led_blink:    ldr r0,=0xE0200284      //GPJ2DAT    ldr r1,=(0<<0 | 0<<1 | 0<<2 | 0<<3) //led1--led4点亮    str r1,[r0]     bl delay//延时     ldr r0,=0xE0200284    ldr r1,=(1<<0 | 1<<1 | 1<<2 | 1<<3) //关闭led1--led4    str r1,[r0]     bl delay//延时     ldr r0,=0xE0200284    ldr r1,=(0<<0 | 1<<1 | 1<<2 | 1<<3) //点亮led1,其他熄灭    str r1,[r0]    bl delay//延时     ldr r0,=0xE0200284    ldr r1,=(1<<0 | 0<<1 | 1<<2 | 1<<3) //点亮led2,其他熄灭    str r1,[r0]    bl delay     ldr r0,=0xE0200284    ldr r1,=(1<<0 | 1<<1 | 0<<2 | 1<<3) //点亮led3,其他熄灭    str r1,[r0]    bl delay     ldr r0,=0xE0200284    ldr r1,=(1<<0 | 1<<1 | 1<<2 | 0<<3) //点亮led4,其他熄灭    str r1,[r0]    bl delay     b led_blink//循环流水灯     //延时函数delay:    ldr r2,=0x1FFFFFFldr r3,=0x0loop:    sub r2,r2,#1    cmp r2,r3    bne loop    mov pc,lr.end Makefile:led.bin: start.o arm-linux-ld -Ttext 0x0 -o led.elf $^ arm-linux-objcopy -O binary led.elf led.bin arm-linux-objdump -D led.elf > led_elf.dis gcc mkv210_image.c -o mkmini210 ./mkmini210 led.bin smart210.bin %.o : %.S arm-linux-gcc -o $@ $< -c %.o : %.c arm-linux-gcc -o $@ $< -c clean: rm *.o *.elf *.bin *.dis –f    编译后用工具将smart210.bin烧录到SD卡,将SD卡插到开发板,切换到SD卡启动模式,启动开发板则可以看到四颗LED先全亮,后全灭,接着LED1-LED4分别点亮,如此循环。说明:mkv210_image.c编译得到的mkmini210工具用于制作SD镜像。
本文出自 “生命不息,奋斗不止” 博客,请务必保留此出处http://9291927.blog.51cto.com/9281927/1786139