14 Linux平台设备应用---beep

一 beep平台驱动编写

GPIO资源:
GPDCON, R/W, Address = 0xE030_0080

定时器资源:TIMER1

#define S5PC100_PA_GPIO 0xE0300080
#define S5PC100_PA_TIMER 0xEA000000
#define S5PC100_PA_TIMER1 0xEA000018
#define SZ_4 0x00000004

struct resource s5pc100_beep_resource = {
[0] = {
.start = S5PC100_PA_GPIO,
.end = S5PC100_PA_GPIO + SZ_4 - 1,
.flags = IORESOURCE_MEM,
},

[1] = {
.start = S5PC100_PA_TIMER,
.end = S5PC100_PA_TIMER + SZ_4*3 - 1,
.flags = IORESOURCE_MEM,
},

[2] = {
.start = S5PC100_PA_TIMER1,
.end = S5PC100_PA_TIMER1 + SZ_4*3 - 1,
.flags = IORESOURCE_MEM,
},

}

struct platform_device = {
.name = "s5pc100-beep",
.id = -1,
.resource = s5pc100_beep_resource,
.num_resources = ARRAY_SIZE(s5pc100_beep_resource),
.dev = {
.release = s5pc100beep_release,
},
};

----------------------------------------------------------------------------------

enum reg_type = {
GPIO,
TIMER,
TIMER1,
};

struct beep_device
{
dev_t dev_num;
void * __iomem reg[3];
struct cdev cdev;
struct class *cls;
struct device *device;
struct resource *res[3];
};

for(i = 0;i < 3;i ++)
pbeep->reg[i] = ioremap;

#define TCFG0 0
#define TCFG1 4
#define TCON 8

#define TCNTB 0
#define TCMPB 4

例如:我想操作TCON寄存器

pbeep->reg[TIMER] + TCON

思路:先找基地址然后加上偏移,就可以找到对应的寄存器
我想操作TCMPB寄存器
pbeep->reg[TIMER1] + TCMPB

时间: 2024-12-14 16:26:44

14 Linux平台设备应用---beep的相关文章

14.linux中设备的访问

一 设备访问1.设备识别/dev/xdxn       ##硬盘设备/dev/sda1/dev/cdrom      ##光驱/dev/mapper/*   ##虚拟设备 2.设备的使用##<设备的发现>##fdisk -l                ##查看真实存在的设备cat /proc/partitions    ##系统能够识别的设备blkid                   ##系统能够挂载使用的设备iddf                      ##查看设备被系统使用的

Linux设备驱动开发 - 平台设备驱动

Linux2.6的内核中引入了一种新的设备驱动模型-平台(platform)设备驱动,平台设备驱动分为平台设备(platform_device)和平台驱动(platform_driver),平台设备的引入使得Linux设备驱动更加便于移植. 一.平台设备平台设备结构体: 1 struct platform_device { 2 const char * name; /* 设备名 */ 3 int id; 4 struct device dev; /* 设备结构体 */ 5 u32 num_res

Linux驱动之平台设备

<平台设备设备驱动> a:背景: 平台总线是Linux2.6的设备驱动模型中,关心总线,设备和驱动这3个实体.一个现实的Linux设备和驱动通常需要挂接在一种总线上(比如本身依附于PCI,USB,IIC,SPI等设备而言).但是在嵌入式系统里面,SoC系统即集成的独立外设控制器,挂接在SoC内存空间的外设却没有这样的总线依附,为了和Linux设备驱动模型理论相互统一,Linux系统开发了Platform_bus这种虚拟总线,相应的设备叫做platform_device ,相应的驱动叫platf

Linux平台驱动设备总线模型

Linux中的Platform总线是虚拟总线,它把驱动和设备的注册都分开来,对于他们的牵红线(匹配)过程,提供了“总线-设备-驱动”模型. 它的结构如下图所示: 为什么要这么做? 试想,如果设备和驱动不分开,那么不同设备将会产生大量驱动(代码冗余),而且维护起来工作量很大. Platform模型则把稳定不变的部分放在driver,把尽量可变需要设置的部分放到device端,并且两边分别注册管理. 这样做有如下好处: 平台设备都挂在一条Platform总线上 设备和驱动代码隔离,可移植性和扩展性强

Linux平台下裸设备的绑定:

Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + - + Ak. Input The input contains exactly one test case. The first line of input contains three positive integers n (n ≤ 30), k (k ≤ 109) and m (m < 104). Then

驱动开发读书笔记. 0.04 linux 2.6 platform device register 平台设备注册 1/2 共2篇

驱动开发读书笔记. 0.04  linux 2.6 platform device register 平台设备注册  1/2 共2篇下面这段摘自 linux源码里面的文档 : Documentation/driver-model/platform.txt Device Enumeration 82 ~~~~~~~~~~~~~~~~~~ 83 As a rule, platform specific (and often board-specific) setup code will 84 reg

Linux Platform devices 平台设备驱动

设备总线驱动模型:http://blog.csdn.net/lizuobin2/article/details/51570196 本文主要参考:http://www.wowotech.net/device_model/platform_device.html platform平台设备驱动是基于设备总线驱动模型的,它只不过是将 device 进一步封装成为 platform_device,将 device_driver 进一步封装成为 platform_device_driver,前面已经分析过设

linux设备驱动那点事儿之平台设备理论篇

一:Platform总线 1.1概述 一个现实的linux设备驱动通常需要挂接在一种总线上,对于本身依附于PCI,USB,IIC,SPI等的设备而言,这自然不是问题,但是在嵌入式系统里面,SOC系统中集成的独立的外设控制器,挂接在SOC内存空间的外设等确不依附于此类总线.基于这一背景,linux发明了一种虚拟的总线,称为platform总线,相应的设备称为platform_device,而驱动成为platform_driver.Platform总线是linux2.6内核加的一种虚拟总线. 1.2

Linux平台总线驱动设备模型

platform总线是一种虚拟的总线,相应的设备则为platform_device,而驱动则为platform_driver.Linux 2.6的设备驱动模型中,把I2C.RTC.LCD等都归纳为platform_device. 总线将设备和驱动绑定,在系统每注册一个设备的时候,会寻找与之匹配的驱动:相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成. Linux2.6系统中定义了一个bus_type的实例platform_bus_type [cpp] view plai