嵌入式Linux裸机开发(一)——点亮Led
来源:互联网 发布:南京行知教育 编辑:程序博客网 时间:2024/05/16 00:54
嵌入式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,=0x1FFFFFF
ldr r3,=0x0
loop:
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
- 嵌入式Linux裸机开发(一)——点亮Led
- ARM11裸机开发(一)---点亮LED
- TQ210_裸机编程(一)——点亮LED灯
- exynox裸机开发1——点亮LED
- ARM裸机开发-bootloader—点亮LED灯
- 嵌入式驱动开发笔记(裸机程序篇)---点亮LED灯
- 一、2440裸机点亮led
- 裸机开发之点亮LED
- 嵌入式linux裸板开发--点亮LED
- 嵌入式Linux开发——裸板程序点亮开发板上的LED灯
- Jlink FL2440 裸机开发(一) 点亮LED和按键控制
- TQ210的裸机编程(一)点亮一个LED灯
- S3C2440裸机程序开发点亮LED
- 嵌入式Linux学习笔记(5)——点亮mini2440 LED
- 一灯大师之点亮OK6410开发板上4个LED裸机程序---嵌入式回归第十篇
- Raspberry PI 系列 —— 裸机点亮LED灯
- Linux设备驱动开发——3.点亮LED灯
- Linux驱动开发——使用汇编语言点亮一个LED
- 嵌入式Linux ARM汇编(四)——ARM汇编程序设计
- 嵌入式Linux ARM汇编(五)——ARM体系结构过程调用标准
- 解决Idea 导入项目出现 building“project name”gradle project info 问题
- 嵌入式Linux ARM汇编(六)——GNU ARM汇编编程
- 嵌入式Linux ARM汇编(七)——C语言与ARM汇编混合编程
- 嵌入式Linux裸机开发(一)——点亮Led
- HTML标签
- 嵌入式Linux裸机开发(二)——S5PV210启动过程分析
- 嵌入式Linux裸机开发(三)——BL0初始化
- 嵌入式Linux裸机开发(四)——重定位relocate
- 给linux添加启动脚本
- 嵌入式Linux裸机开发(五)——SDRAM初始化
- 【高性能JavaScript】读书笔记
- 嵌入式Linux裸机开发(六)——S5PV210时钟系统