UP-MOBNET-Ⅱ型实验箱LED驱动控制实验
熟悉 Linux 系统下硬件驱动编程、编程实现对嵌入式设备上 LED 灯的控制
硬件:UP-MobNet-II 型网关部分嵌入式实验平台、U盘 软件:Vmware Workstation 、linux虚拟机、Xshell + ARM-LINUX 交叉编译开发环境
交叉编译和实验平台系统的烧写这里不再赘述:
UP-MobNet-II 型网关部分平台上共有 5 个 LED 显示灯,位于 LCD 显示屏下方,分别为 D601、D602、D603、D604、D605,对应的 Exynos4412 处理器的引脚依次为 GPX3_2、GPX3_3、GPX1_2、GPD0_4、GPL0_3上。5 个 LED 显示灯分别共阳极 3.3V 电压,因此相应 GPIO 低电平点亮,高电平熄灭。
Linux 系统下,应用程序不可直接操作底层硬件寄存器,必须经过驱动层来完成对硬件的操作。
驱动程序分析:/UP-CUP4412/SRC/exp/driver/02_leds/driver/s3c-leds.c
文章目录
实验箱
名称 | 移动互联网教学科研平台Ⅱ型 |
---|---|
型号 | UP-MOBNET-Ⅱ |
编号 | 03019024 |
批号 | 32017040520 |
实验内容
熟悉 Linux 系统下硬件驱动编程、编程实现对嵌入式设备上 LED 灯的控制
实验环境
硬件:UP-MobNet-II 型网关部分嵌入式实验平台、U盘 软件:Vmware Workstation 、linux虚拟机、Xshell + ARM-LINUX 交叉编译开发环境
交叉编译和实验平台系统的烧写这里不再赘述:
实验原理
硬件接口原理
UP-MobNet-II 型网关部分平台上共有 5 个 LED 显示灯,位于 LCD 显示屏下方,分别为 D601、D602、D603、D604、D605,对应的 Exynos4412 处理器的引脚依次为 GPX3_2、GPX3_3、GPX1_2、GPD0_4、GPL0_3上。5 个 LED 显示灯分别共阳极 3.3V 电压,因此相应 GPIO 低电平点亮,高电平熄灭。
驱动层程序分析
Linux 系统下,应用程序不可直接操作底层硬件寄存器,必须经过驱动层来完成对硬件的操作。
驱动程序分析:/UP-CUP4412/SRC/exp/driver/02_leds/driver/s3c-leds.c
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/miscdevice.h>
#include <linux/delay.h>
#include <linux/device.h>
#include <linux/cdev.h>
#include <plat/gpio-cfg.h>
#include <asm/irq.h>
#include <mach/gpio.h>
MODULE_LICENSE("GPL");
#define DEVICE_NAME "leds" //驱动名称
#define DEVICE_MAJOR 231 //驱动主设备号
#define DEVICE_MINOR 0
struct cdev *mycdev;
struct class *myclass;
dev_t devno;
// LED GPIO 列表
static unsigned long led_table [] = {
EXYNOS4_GPX3(2),
EXYNOS4_GPX3(3),
EXYNOS4_GPX1(2),
EXYNOS4_GPL0(4),
EXYNOS4_GPL0(3),
};
// LED GPIO 输出类型配置列表
static unsigned int led_cfg_table [] = {
S3C_GPIO_OUTPUT,
S3C_GPIO_OUTPUT,
S3C_GPI