linux驱动(韦东山)
驱动设计思想P9
- linux 驱动 = 驱动框架 + 硬件操作 = 驱动框架 + 单片机
面向对象
- 字符设备驱动程序抽象出file_operation结构体
- 对硬件部分抽象为led_operation 结构体
分层
- 上下分层
- 1.上层实现硬件无关的操作,注册字符设备驱动 leddrv.c(实现file_operations 注册驱动)
- 2.下层实现硬件相关的操作,实现单板的LED操作 board.c(实现硬件操作,构造各自的led_operation)
分离
led_resource.h 详细代码
#ifndef _LED_RESOURCE_H
#define _LED_RESOURCE_H
/* GPIO3_0 /
/ bit[31:16] = group /
/ bit[15:0] = which pin */
#define GROUP(x) (x>>16)
#define PIN(x) (x&0xFFFF)
#define GROUP_PIN(g,p) ((g<<16) | §)
struct led_resource {
int pin;
};
struct led_resource *get_led_resouce(void);
board_A_led.c 详细代码
#include “led_resource.h”
#define GROUP(x) (x>>16)
#define PIN(x) (x&0xFFFF)
#define GROUP_PIN(g,p) ((g<<16) | §)
//变量初始化
static struct led_resource board_A_led = {
.pin = GROUP_PIN(3,1);
};
struct led_resource *get_led_resoucre(void)
{
return &boarf_A_led;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)