`

20130801 linux添加驱动 在dev下可以看到

 
阅读更多

友善之臂的Tiny210 linux3.0.8 for android

实现:在linux内核下添加LED的驱动 LED@LZM@FJICC并且可以在# /dev/下看到。

#ls /dev/看到驱动LED@LZM@FJICC

1.进入linux/drivers/char/新建一个文件lzm_fjicc.c

编写内容:

//lzm_fjicc.c

#include <linux/kernel.h>

#include <linux/module.h>

#include <linux/miscdevice.h>

#include <linux/fs.h>

#include <linux/types.h>

#include <linux/moduleparam.h>

#include <linux/slab.h>

#include <linux/ioctl.h>

#include <linux/cdev.h>

#include <linux/delay.h>

#include <mach/gpio.h>

#include <mach/regs-gpio.h>

#include <plat/gpio-cfg.h>

 

#define DEVICE_NAME "LED@LZM@FJICC"

static int led_gpios[] = {

S5PV210_GPJ2(0),

S5PV210_GPJ2(1),

S5PV210_GPJ2(2),

S5PV210_GPJ2(3),

};

 

#define LED_NUMARRAY_SIZE(led_gpios)

 

 

static long fjicc_leds_ioctl(struct file *filp, unsigned int cmd,

unsigned long arg)

{

switch(cmd) {

case 0:

case 1:

if (arg > LED_NUM) {

return -EINVAL;

}

 

gpio_set_value(led_gpios[arg], !cmd);

//printk(DEVICE_NAME": %d %d\n", arg, cmd);

break;

 

default:

return -EINVAL;

}

 

return 0;

}

 

static struct file_operations fjicc_led_dev_fops = {

.owner= THIS_MODULE,

.unlocked_ioctl= fjicc_leds_ioctl,

};

 

static struct miscdevice fjicc_led_dev = {

.minor= MISC_DYNAMIC_MINOR,

.name= DEVICE_NAME,

.fops= &fjicc_led_dev_fops,

};

 

static int __init fjicc_led_dev_init(void) {

int ret;

int i;

 

for (i = 0; i < LED_NUM; i++) {

ret = gpio_request(led_gpios[i], "LED");

if (ret) {

printk("%s: request GPIO %d for LED failed, ret = %d\n", DEVICE_NAME,

led_gpios[i], ret);

return ret;

}

 

s3c_gpio_cfgpin(led_gpios[i], S3C_GPIO_OUTPUT);

gpio_set_value(led_gpios[i], 1);

}

 

ret = misc_register(&fjicc_led_dev);

 

printk(DEVICE_NAME"\tinitialized\n");

 

return ret;

}

 

static void __exit fjicc_led_dev_exit(void) {

int i;

 

for (i = 0; i < LED_NUM; i++) {

gpio_free(led_gpios[i]);

}

 

misc_deregister(&fjicc_led_dev);

}

 

module_init(fjicc_led_dev_init);

module_exit(fjicc_led_dev_exit);

 

MODULE_LICENSE("GPL");

MODULE_AUTHOR("LZM@FJICC");

 

2.然后修改char目录下的KconfigMakefile文件

Kconfig:

config LEDS_LZM_FJICC

tristate "LEDS_LZM_FJICC"

depends on MACH_MINI210

default y

help

This option enables support for LEDs connected to GPIO lines

on Mini210 boards.

 

Makefile:

obj-$(CONFIG_LEDS_LZM_FJICC)+= lzm_fjicc.o

 

3.进到linux根目录,然后#make menuconfig

就可以在配置菜单中看到LEDS_LZM_FJICC,具体在devices driversàchracter devicesà就可以看到了。

4.配置好了,make zImage就可以了。

5.烧写了系统后,就可以查看驱动了。#ls /dev/

6.提升驱动权限:#chmod 777 /dev/LED@LZM@FJICC

分享到:
评论

相关推荐

    linux 添加字符设备驱动程序及测试程序.zip

    linux 添加字符设备驱动程序及测试程序,linux下采用模块方法,添加一个新的设备驱动程序。要求添加字符设备的驱动。另附一个应用程序,测试添加的驱动程序. int main(void) { int fd; char buf[MAX_SIZE]; char ...

    ADI公司的AD719x的linux驱动

    其中包含AD7192 AD7190 AD7195等芯片适用的linux驱动 作为SPI总线上的从设备,在移植时需在linux的板文件中添加关于该设备的描述数据结构spi_dev_info

    在Linux运行期间升级Linux系统(Uboot+kernel+Rootfs) v1.0

    2.1.1.1. 在开发板相关部分添加对应nor flash初始化相关代码 4 2.1.1.2. Linux通用nor flash驱动m25p80.c简介 5 2.1.2. Linux中已实现了U盘挂载,以方便拷贝要升级的文件 8 2.1.3. Linux中Nor Flash和Nand Flash已能...

    BCM4322在CentOS 7驱动程序

    CentOS7.4下编译测试通过。改进了程序并增加了安装说明。 # cat README 1、以root身份执行如下语句安装依赖: yum install kernel-headers-`uname -r` kernel-devel-`uname -r` gcc 2、执行install.sh脚本编译、...

    JZ2440平台下Linux3.4.2的wm8976音频驱动(附详细教程)

    献上JZ2440平台下Linux3.4.2的wm8976音频驱动(附详细教程),按照资料里面的教程把音频驱动添加上之后就会在/dev/snd/目录下面出现相关的设备文件,然后可以用MPlayer播放mp3,enjoy it!这是本人历时两天的辛苦研究...

    ARM9160*160液晶屏驱动

    1、 编译内核:将hgo.c复制到linux内核下drivers/char 目录,修改drvers/char/Makefile 在 obj-$(CONFIG_AT91_LED) += at91_led.o 一句之后,添加: obj-y += hgo.o 重新编译内核,驱动即可编译进内核。 2、建立...

    接口/总线/驱动中的7000 芯片Linux下的SPI接口与驱动配置

    2. 点击“CreateBlock Design”创建一个新的工程桌布,在其中添加IP,将ZYNQ7芯片IP添加进来;图1 ZYNQ7 IP3. 双击ZYNQ7芯片IP,点击界面左边的Peripheral I/O Pins对芯片的引脚进行配置,分别点击“Quad SPI Flash...

    ARM-Linux-IIC设备的添加与驱动实现

    分析了ARM-Linux下IIC总线及其设备驱动的层次结构,指出了IIC设备添加与驱动实现的途径,详细阐述了如何采用通用i2c-dev.c驱动常规IIC设备、如何编写特定IIC设备的probe方式驱动、怎样设计动态加载的简易IIC“客服-...

    linux 驱动编写之虚拟字符设备的编写实例详解

     昨天我们说了一些简单模块编写方法,但是终归没有涉及到设备的编写内容,今天我们就可以了解一下相关方面的内容,并且用一个实例来说明在Linux上面设备是如何编写的。虽然我不是专门做linux驱动的,却也经常收到...

    ioctl_driver:有关如何编写Linux驱动程序的示例

    关于如何为Linux创建IOCTL驱动程序的简单示例。 这可以用于简单的测试目的: 从内核模式访问特殊寄存器以在用户模式下获得结果。 例如,CP15处理器的Arm寄存器。 访问某些内存映射区域 ... 此仓库包含以下文件夹...

    Linux操作系统基础教程

    Linux 是在 1991 年发展起来的与 UNIX兼容的操作系统,可以免费使用,它的源代码 可以自由传播且可任人修改、充实、发展,开发者的初衷是要共同创造一个完美、理想并 可以免费使用的操作系统。 我们并不能使同学...

    Android为Tiny4412设备驱动在proc目录下添加一个可读版本信息的文件

    https://www.jb51.net/article/152879.htm上节,我们明白了proc文件系统的作用,接下来我们在已经写好的led驱动的基础上,在proc目录下创建一个文件夹,然后加入led驱动的版本信息读取。 我们在init函数的最后加入: ...

    buspirate:Bus Pirate Linux I2C 总线驱动程序

    BP 使用板载 FTDI 芯片将自身作为 /dev/ttyUSB 串行端口呈现给 Linux。 因此,该驱动程序作为线路规则驱动程序在该串行端口之上实现。 要实例化 I2C 总线,只需在 BP 的串行端口上注册 N_BUSPIRATE 线路规则。 之后...

    RED HAT LINUX 6大全

    1.3 在哪里可以获取Red Hat Linux 3 1.4 系统需求 3 1.5 小结 4 第2章 Red Hat系统的安装 5 2.1 准备,认真准备 5 2.2 安装Red Hat Linux 6 2.2.1 创建引导盘和辅助盘 6 2.2.2 不利用引导软盘进行安装 7 2.2.3 虚拟...

    pcf8563_i2c1_r8_ruoge_ov2640通过给RTC驱动增加设备节点读取秒钟成功+直接读取I2C1获取秒钟值20160626_2201.7z

    通过/dev/i2c-n节点,用户可以在userspace直接访问板上的i2c外设寄存器,主要是透过I2C_RDWR这个IO控制命令将i2c_msg数组传递给kernel去执行。 开发板的/dev/i2c-1总线下挂有一片I2C的RTC:pcf8563。 root@android...

    入门学习Linux常用必会60个命令实例详解doc/txt

    -n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。 4.应用技巧 在Linux 和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分...

    mt7610u_wifi_sta_v3002_dpo_20130916:修改后的TP_link Archer T2U的usb wifi驱动程序(针对Linux内核4.15编译)

    在Linux上针对TP-Link TL-WDN5200 / Archer T2U修改了USB wifi驱动程序。 修改:common / rtusb_dev_id.c 添加TL-WDN5200 / Archer T2U的产品ID 修改:include / os / rt_linux.h 修改:os / linux / rt_linux.c...

    适用于各种微控制器和无线电 的嵌入式总线适配器_python_代码_相关文件_下载

    GoodFET 是一个漂亮的小工具,用于快速将嵌入式系统...在 Linux 中,默认包含 FTDI 驱动程序。确保用户具有 的权限/dev/ttyUSB0,这可能需要将该用户添加到拨出组。 更多详情、使用方法,请下载后阅读README.md文件

    ARM_Linux启动分析.pdf

    而SRM则具有功能强大的命令行界面,用户可以在控制台上使用boot等命令引导系统。ARC有分区(Partition)的概念,因此可以访问到分区的首扇区;而SRM只能将控制转给磁盘的首扇区。两种firmware都可以通过引导MILO来...

Global site tag (gtag.js) - Google Analytics