首页 > 学院 > 操作系统 > 正文

Cubieboard2裸机开发之(一)点亮板载LED

2024-06-28 13:27:33
字体:
来源:转载
供稿:网友
Cubieboard2裸机开发之(一)点亮板载LED

前言

CUbieboard2板载两个LED,一个绿色的,一个蓝色的,其中绿色LED通过三极管与PH20管脚连接,蓝色LED通过三极管与PH21管脚连接,这里只以蓝色LED为例,电路原理图如图1和图2所示。

图1 LED所使用的管脚

图2 LED与三极管连接图

由此可知,当PH21输出高电平时,三极管处于导通状态,从而蓝色LED会被点亮;当PH21输出低电平时,三极管处于截止状态,蓝色LED熄灭。

一、目的

编写第一个裸机程序,点亮板载的蓝色LED。

二、源代码说明

程序很简单,已给出详细注释,直接看代码好了,如下所示:

 1 /* 2  * (C) Copyright 2014 Conan Liang <lknlfy@163.com> 3  * 4  * a very simple source to set the blue led on for Cubieboard2. 5  *  6  */ 7  8 /* GPIO reg addr */ 9 #define SUNXI_PIO_BASE          0x01C2080010 #define SUNXI_PIO_PH_CFG2_BASE  (SUNXI_PIO_BASE + 0x104)11 #define SUNXI_PIO_PH_DAT_BASE   (SUNXI_PIO_BASE + 0x10C)12 13 /* global entry point */14 .globl _start15 _start: b    reset16 17 reset:18     ldr r0, =SUNXI_PIO_PH_CFG2_BASE19     /* before write, read the reg value into r1*/20     ldr r1, [r0]21     /* blue led is connected to PH21 */22     ldr r2, =(0xf << 20)23     mvn r3, r224     /* clear 4 bits for PH21*/25     and r1, r1, r326     /* set PH21 for output function */27     orr r1, r1, #(0x1 << 20)28     str r1, [r0]29 30     /* set PH21 output 1(high value), so the blue led is on */31     ldr r0, =SUNXI_PIO_PH_DAT_BASE32     ldr r1, [r0]33     orr r1, r1, #(1 << 21)34     str r1, [r0]35 loop:36     b loop

三、验证

使用arm-linux-gnueabihf工具编译后生成led.b文件,再使用mksunxiboot工具在led.b文件前面加上一个头部,最终生成led.bin文件,使用以下命令将led.bin文件烧写到TF中:

#sudo dd if=./led.bin of=/dev/sdb bs=1024 seek=8

将TF卡插入Cubieboard2,上电即可看到蓝色LED被点亮。效果如图3所示。

图3 效果图


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表