友善之臂的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目录下的Kconfig和Makefile文件:
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 添加字符设备驱动程序及测试程序,linux下采用模块方法,添加一个新的设备驱动程序。要求添加字符设备的驱动。另附一个应用程序,测试添加的驱动程序. int main(void) { int fd; char buf[MAX_SIZE]; char ...
其中包含AD7192 AD7190 AD7195等芯片适用的linux驱动 作为SPI总线上的从设备,在移植时需在linux的板文件中添加关于该设备的描述数据结构spi_dev_info
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已能...
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音频驱动(附详细教程),按照资料里面的教程把音频驱动添加上之后就会在/dev/snd/目录下面出现相关的设备文件,然后可以用MPlayer播放mp3,enjoy it!这是本人历时两天的辛苦研究...
1、 编译内核:将hgo.c复制到linux内核下drivers/char 目录,修改drvers/char/Makefile 在 obj-$(CONFIG_AT91_LED) += at91_led.o 一句之后,添加: obj-y += hgo.o 重新编译内核,驱动即可编译进内核。 2、建立...
2. 点击“CreateBlock Design”创建一个新的工程桌布,在其中添加IP,将ZYNQ7芯片IP添加进来;图1 ZYNQ7 IP3. 双击ZYNQ7芯片IP,点击界面左边的Peripheral I/O Pins对芯片的引脚进行配置,分别点击“Quad SPI Flash...
分析了ARM-Linux下IIC总线及其设备驱动的层次结构,指出了IIC设备添加与驱动实现的途径,详细阐述了如何采用通用i2c-dev.c驱动常规IIC设备、如何编写特定IIC设备的probe方式驱动、怎样设计动态加载的简易IIC“客服-...
昨天我们说了一些简单模块编写方法,但是终归没有涉及到设备的编写内容,今天我们就可以了解一下相关方面的内容,并且用一个实例来说明在Linux上面设备是如何编写的。虽然我不是专门做linux驱动的,却也经常收到...
关于如何为Linux创建IOCTL驱动程序的简单示例。 这可以用于简单的测试目的: 从内核模式访问特殊寄存器以在用户模式下获得结果。 例如,CP15处理器的Arm寄存器。 访问某些内存映射区域 ... 此仓库包含以下文件夹...
Linux 是在 1991 年发展起来的与 UNIX兼容的操作系统,可以免费使用,它的源代码 可以自由传播且可任人修改、充实、发展,开发者的初衷是要共同创造一个完美、理想并 可以免费使用的操作系统。 我们并不能使同学...
https://www.jb51.net/article/152879.htm上节,我们明白了proc文件系统的作用,接下来我们在已经写好的led驱动的基础上,在proc目录下创建一个文件夹,然后加入led驱动的版本信息读取。 我们在init函数的最后加入: ...
BP 使用板载 FTDI 芯片将自身作为 /dev/ttyUSB 串行端口呈现给 Linux。 因此,该驱动程序作为线路规则驱动程序在该串行端口之上实现。 要实例化 I2C 总线,只需在 BP 的串行端口上注册 N_BUSPIRATE 线路规则。 之后...
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 虚拟...
通过/dev/i2c-n节点,用户可以在userspace直接访问板上的i2c外设寄存器,主要是透过I2C_RDWR这个IO控制命令将i2c_msg数组传递给kernel去执行。 开发板的/dev/i2c-1总线下挂有一片I2C的RTC:pcf8563。 root@android...
-n:一般而言,mount挂上后会在/etc/mtab中写入一笔资料,在系统中没有可写入文件系统的情况下,可以用这个选项取消这个动作。 4.应用技巧 在Linux 和Unix系统上,所有文件都是作为一个大型树(以/为根)的一部分...
在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...
GoodFET 是一个漂亮的小工具,用于快速将嵌入式系统...在 Linux 中,默认包含 FTDI 驱动程序。确保用户具有 的权限/dev/ttyUSB0,这可能需要将该用户添加到拨出组。 更多详情、使用方法,请下载后阅读README.md文件
而SRM则具有功能强大的命令行界面,用户可以在控制台上使用boot等命令引导系统。ARC有分区(Partition)的概念,因此可以访问到分区的首扇区;而SRM只能将控制转给磁盘的首扇区。两种firmware都可以通过引导MILO来...