嵌入式Linux裸机开发(一)——点亮Led
2019-07-12 16:14发布
生成海报
嵌入式Linux裸机开发(一)——点亮Led
开发板:友善之臂smart210一、电路图查阅
1、底板电路图
查阅开发板底板电路图,查阅LED相关部分LED电路工作原理:
LED的正极接3.3V,负极接地时导通,LED发光。
开发板共有四颗LED,正极接3.3V,负极接开发板的LED1_LED4引脚,如果LED要点亮则需要输入低电平。2、核心板电路图
查阅核心板电路图可知,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--led4为output 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
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮