linux 驱动
文章平均质量分 86
yuzeze
这个作者很懒,什么都没留下…
展开
-
移植USB无线网卡驱动心得
最近因为需要,要在Zedboard上移植一个无线网卡驱动,因为以前在友善之臂上面移植过,所以以为很简单,没想到这件事情却花了我将近一周才搞好,中间就因为内核的一个小的疏忽,特在此将中间遇到的问题写下来,留作以后谨记。开发板:Zynq Zedboard操作系统:Ubuntu 12,04交叉编译器:arm-Xilinx-Linux-gnueabi gccWIFI 模组:TP转载 2016-12-27 13:48:24 · 1958 阅读 · 0 评论 -
Linux驱动子系统之I2C(3)
3 i2c-dev3.1 概述之前在介绍I2C子系统时,提到过使用i2c-dev.c文件在应用程序中实现我们的I2C从设备驱动。不过,它实现的是一个虚拟,临时的i2c_client,随着设备文件的打开而产生,并随着设备文件的关闭而撤销。I2c-dev.c针对每个I2C适配器生成一个主设备号为89的设备文件,实现了i2c_driver的成员函数以及文件操作接口,所以i2c-dev.c的转载 2016-07-12 16:16:47 · 323 阅读 · 0 评论 -
Linux驱动子系统之I2C(4)
4 总线驱动4.1 概述I2C总线驱动是I2C适配器的软件实现,提供I2C适配器与从设备间完成数据通信的能力,比如起始,停止,应答信号和master_xfer的实现函数。I2C总线驱动由i2c_adapter和i2c_algorithm来描述 4.2 S3c2440I2C控制器的硬件描述S3c2440处理器内部集成了一个I2C控制器,通过四个寄存器来进行控制:IIC转载 2016-07-12 16:17:58 · 262 阅读 · 0 评论 -
Linux驱动子系统之I2C(2)
2 I2C子系统2.1 LinuxI2C子系统架构在内核中已经提供I2C子系统,所以在做I2C驱动之前,就必须要熟悉该子系统。2.2 三大组成部分1、I2C核心(i2c-core)I2C核心提供了I2C总线驱动和设备驱动的注册、注销方法,I2C通信方法(algorithm)上层的、与具体适配器无关的代码以及探测设备、检测设备地址的上层代码等。 2、I2C总转载 2016-07-12 16:21:27 · 322 阅读 · 0 评论 -
Linux驱动子系统之I2C(1)
1 硬件特性1.1 概述I2C总线是由Philips公司开发的两线式串行总线,这两根线为时钟线(SCL)和双向数据线(SDA)。由于I2C总线仅需要两根线,因此在电路板上占用的空间更少,带来的问题是带宽较窄。I2C在标准模式下传输速率最高100Kb/s,在快速模式下最高可达400kb/s。属于半双工。在嵌入式系统中,I2C应用非常广泛,大多数微控制器中集成了I2C总线,一转载 2016-07-12 16:20:46 · 309 阅读 · 0 评论 -
Linux驱动子系统之I2C(6)
6 总结下图根据之前的分析丰富的架构图Tips:I2C适配器驱动不一定是基于platform实现,这里是以s3c-i2c为例。 I2c_driver、i2c_client与i2c_adapterI2c_driver与i2c_client是一对多的关系,一个i2c_driver上可以支持多个同等类型的i2c_client。调用i2c_add_driver函数将I2c_dr转载 2016-07-12 16:19:49 · 345 阅读 · 0 评论 -
Linux驱动子系统之I2C(5)
5 客户驱动5.1 概述I2C客户驱动是对I2C从设备的实现,一个具体的I2C客户驱动包括两个部分:一部分是i2c_driver,用于将设备挂接于i2c总线;另一部分是设备本身的驱动。I2C客户驱动程序主要由i2c_driver和i2c_client来描述。 5.2 实例源码分析好了,我们来深入了解客户驱动代码的实现,drivers/misc/eeprom/at24.c文件转载 2016-07-12 16:19:08 · 312 阅读 · 0 评论 -
深入浅出:Linux设备驱动之字符设备驱动
原文出处: 时光漫步LH 一、linux系统将设备分为3类:字符设备、块设备、网络设备。使用驱动程序:字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据。字符设备是面向流的设备,常见的字符设备有鼠标、键盘、串口、控制台和LED设备等。块设备:是指可以从设备的任意位置读取一定长度数据的设备。块设备包括硬盘、磁盘、U盘和转载 2016-06-29 15:54:48 · 235 阅读 · 0 评论 -
深入浅出:Linux设备驱动之中断与定时器
原文出处: 时光漫步LH “我叮咛你的 你说 不会遗忘 你告诉我的 我也全部珍藏 对于我们来说 记忆是飘不落的日子 永远不会发黄 相聚的时候 总是很短 期待的时候 总是很长 岁月的溪水边 捡拾起多少闪亮的诗行 如果你要想念我 就望一望天上那 闪烁的繁星 有我寻觅你的 目光” 谢谢你,曾经来过~中断与定时器是我们再熟悉不过的问题了,我们在进行裸机开发学习的 时候,这几乎就是重难点,也转载 2016-06-29 15:40:36 · 3884 阅读 · 0 评论 -
基于OK6410的串口数据收发
*************************** *基于OK6410的串口程序 *2012.12.4 *孙旭 ***************************/ #include #include #include #include #include #include #include #inclu转载 2016-06-29 15:09:11 · 326 阅读 · 0 评论 -
深入浅出:Linux设备驱动之异步通知和异步I/O
原文出处: 时光漫步LH 在设备驱动中使用异步通知可以使得对设备的访问可进行时,由驱动主动通知应用程序进行访问。因此,使用无阻塞I/O的应用程序无需轮询设备是否可访问,而阻塞访问也可以被类似“中断”的异步通知所取代。异步通知类似于硬件上的“中断”概念,比较准确的称谓是“信号驱动的异步I/O”。1、异步通知的概念和作用影响:阻塞–应用程序无需轮询设备是否可以访问非转载 2016-06-29 15:07:03 · 3499 阅读 · 0 评论 -
深入浅出:Linux设备驱动中的阻塞和非阻塞I/O
今天写的是Linux设备驱动中的阻塞和非阻塞I/0,何谓阻塞与非阻塞I/O?简单来说就是对I/O操作的两种不同的方式,驱动程序可以灵活的支持用户空间对设备的这两种访问方式。一、基本概念:阻塞操作 : 是指在执行设备操作时,若不能获得资源,则挂起进程直到满足操作条件后再进行操作。被挂起的进程进入休眠, 被从调度器移走,直到条件满足。非阻塞操作 :在不能进行设备操作时,并不挂起,它或者转载 2016-06-29 14:22:51 · 397 阅读 · 0 评论 -
OK6410的单个按键驱动程序(Linux),测试通过
#include #include#include#include#include #include //#include#include#include#include#include#include#include #include#include#include#include#include#inc转载 2016-06-29 11:27:57 · 493 阅读 · 0 评论 -
OK6410的6个按键驱动程序(Linux),测试通过
如果你的飞凌Linux-3.0.1内核源码没有编译过,编译时可能会出现:scripts/basic/fixdep: 1: scripts/basic/fixdep: ELF: not foundscripts/basic/fixdep: 2: scripts/basic/fixdep: Syntax error: "(" unexpected这时要先到Linux-3.0.1目转载 2016-06-29 11:22:57 · 777 阅读 · 0 评论 -
S3C6410按键驱动
S3C6410按键驱动——查询方式实现OK6410总共有6个按键,按键分别接在GPN0~GPN5,原理图上根本没有这么说,原理图上说的是KEYINT!~KEYINT6,很明显这里是接在中断引脚上的,直接查询S3C6410的中断引脚就可以知道这个6个按键的接法,一下是用查询方法实现的按键驱动:[cpp] view plaincopy转载 2016-06-29 11:03:40 · 443 阅读 · 0 评论 -
linux等待队列wait_queue_head_t和wait_queue_t
等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。等待队列头和等待转载 2016-06-29 10:28:34 · 381 阅读 · 0 评论 -
SIM300实现GPRS上网
1.首先得让内核支持PPP,进入Linux 内核目录(kernel-2.6 或 以上内核版本),执行 #make menuconfig添加如下内核选项:Device Drivers ---> Network device support ---> PPP (point-to-point protocol) support[*] PPP multilink sup转载 2016-06-28 15:24:51 · 390 阅读 · 0 评论 -
Linux下的eeprom读写操作
利用Linux内核自带的IIC总线驱动,按系统提供的框架,用ioctl方法对eeprom设备进行读写操作,并分别按单字节及多字节读写方式,对外提供函数接口,以供外部程序方便调用。 程序由3个文件组成,分别为头文件,函数实现文件,及测试程序。/* ********************************************************************转载 2016-07-12 16:55:35 · 8988 阅读 · 1 评论 -
《深入浅出嵌入式底层软件开发》
++++++++++++++++++++++++++++++++++++++++++本文系本站原创,欢迎转载! 转载请注明出处:http://blog.csdn.net/mr_raptor/article/details/6744480++++++++++++++++++++++++++++++++++++++++++ + 硬件-宝剑,软件-剑法,体转载 2016-07-01 16:43:35 · 1779 阅读 · 0 评论 -
Linux spi驱动分析(三)----spiddev分析
一、spidev简单介绍 如果在内核中配置spidev,会在“/dev”目录下产生设备节点,通过此节点可以操作挂载在该SPI总线上的设备,接下来将从驱动层和应用层来分析程序。二、spidev驱动层2.1、驱动注册 分析一个设备驱动,一般都是从module_init和module_exit处开始,本文也不例外,程序如下:转载 2016-08-25 11:07:54 · 1029 阅读 · 0 评论 -
Linux spi驱动分析(二)----SPI核心(bus、device_driver和device)
一、spi总线注册 这里所说的SPI核心,就是指/drivers/spi/目录下spi.c文件中提供给其他文件的函数,首先看下spi核心的初始化函数spi_init(void)。程序如下:点击(此处)折叠或打开static int __init spi_init(void){ int status;转载 2016-08-25 11:06:35 · 686 阅读 · 0 评论 -
Linux spi驱动分析(一)----总线驱动
一、SPI总线驱动介绍 SPI总线总共需要四根线,包括MOSI、MISO、CLK和CS。本文首先从SPI设备注册开始来讲述SPI总线驱动。二、设备注册 在系统启动的时候,会按照顺序执行一些初始化程序,比如device_initcall和module_init等宏。这些宏是按照顺序执行的,比如device_initcall的优先级高于modul转载 2016-08-25 11:04:59 · 522 阅读 · 0 评论 -
Linux spi驱动分析(四)----SPI设备驱动(W25Q32BV)
一、W25Q32BV芯片简介 W25X是一系列SPI接口Flash芯片的简称,它采用SPI接口和CPU通信,本文使用的W25Q32BV容量为32M,具体特性如下:1.1、基本特性 该芯片最大支持104MHz的时钟,供电电压范围在2.7~3.6V,SPI的片选信号CS低有效,在操作芯片的时候,需要将/WP和/HOLD管脚接电源。转载 2016-08-25 10:48:19 · 1012 阅读 · 0 评论 -
AM335x(TQ335x)学习笔记——触摸屏驱动编写
前面几篇文章已经通过配置DTS的方式完成了多个驱动的移植,接下来我们解决TQ335x的触摸驱动问题。由于种种原因,TQ335x的触摸屏驱动是以模块方式提供的,且Linux官方内核中也没有带该触摸屏的驱动源码,单纯的配置DTS是无法完成TQ335x的触摸驱动移植工作的,因此,本文参考内核中原有的pixcir_i2c_ts驱动编写TQ335x的触摸屏(TN92)驱动。在之前移植TQ210时,我转载 2016-08-25 09:29:19 · 1130 阅读 · 0 评论 -
AM335x(TQ335x)学习笔记——WM8960声卡驱动移植
经过一段时间的调试,终于调好了TQ335x的声卡驱动。TQ335x采用的Codec是WM8960,本文来总结下WM8960驱动在AM335x平台上的移植方法。Linux声卡驱动架构有OSS和ALSA两种架构,目前最常用的架构是ALSA,本文也使用ALSA架构对WM8960驱动进行移植。ASoC是对ALSA驱动架构的进一步封装。ASoC将ALSA驱动中的各模块抽象为三部分:Platform、转载 2016-08-25 09:27:04 · 2048 阅读 · 0 评论 -
[S5PV210 Linux字符驱动之PWM蜂鸣器驱动
在SMDK210.C中添加如下beeper_device 结构体static struct platform_device beeper_device = {.name = "pwm_buzzer",.id = 1,.dev = {.parent = &s3c_device_timer[1].dev, //PWM1是定时器1.platform_data转载 2016-08-31 09:16:54 · 3413 阅读 · 0 评论 -
S5PV210(TQ210)学习笔记——按键驱动程序
经过前面的配置,S5PV210开发已经可以成功进入Linux控制台了,那么,有了这个环境就可以开始学习Linux驱动的编写和测试了。学习Linux设备驱动,通常是从字符设备驱动开始。我写的第一个驱动程序是Led的,其实也就是熟悉下字符设备驱动的基本结构,本文以中断方式的按键驱动为例,简单的介绍下字符设备驱动程序。一 按键驱动程序的简单实现下面是基于中断和消息的按键驱动程序,转载 2016-08-20 09:36:02 · 694 阅读 · 1 评论 -
LCD驱动(FrameBuffer)实例开发讲解
一、开发环境主 机:VMWare--Fedora 9开发板:Mini2440--64MB Nand, Kernel:2.6.30.4编译器:arm-linux-gcc-4.3.2二、背景知识1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/C转载 2016-07-08 10:01:59 · 2269 阅读 · 0 评论 -
嵌入式Linux内核I2C子系统详解
转自http://www.embeddedlinux.org.cn/html/yingjianqudong/201303/17-2502.html1.1 I2C总线知识1.1.1 I2C总线物理拓扑结构 I2C 总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来 产生I2转载 2016-07-08 09:59:08 · 418 阅读 · 0 评论 -
第十五章 Linux I2C核心、总线与设备驱动
第十五章 Linux I2C核心、总线与设备驱动本章导读I2C总线仅仅使用SCL、SDA两根信号线就实现了设备之间的数据交互,极大地简化对硬件资源和PCB板布线空间的占用。因此,I2C总线被非常广泛地应用在EEPROM、实时钟、小型LCD等设备与CPU的接口中。Linux定义了系统的I2C驱动体系结构,在Linux系统中,I2C驱动由3部分组成,即I2C核心、I2C总线驱动和I2C设转载 2016-07-08 09:57:57 · 435 阅读 · 0 评论 -
对Linux CAN驱动的理解(1)
在Ti的AM335X系列Cortext-A8芯片中,CAN模块采用D_CAN结构,实质即两路CAN接口。在此分享一下对基于AM335X的Linux CAN驱动源码的理解。下面来分析它的驱动源码及其工作方式。在Linux内核源码中,CAN设备驱动文件如下:drivers/net/can/d_can/d_can_platform.cdrivers/net转载 2016-07-28 19:21:49 · 3402 阅读 · 0 评论 -
对CAN驱动中的NAPI机制的理解
NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以首先采用中断唤醒数据接收的服务程序,然后 通过poll的方法来轮询数据。采用NAPI技术可以大大改善短长度数据包接收的效率,减少中断触发的时间。可以这样理解,在NAPI机制没有出现时,由于网络设备接收数据是采用中断方式的,假设每次数据包很小,小到只有几个字节。而刚好在1秒内有转载 2016-07-28 19:19:01 · 443 阅读 · 0 评论 -
6410 spi 设备驱动
在arch/arm/mach-s3c64XX/mach-smdk6410.c中中增加如下代码:static void cs_set_level(unsigned line_id, int lvl) { gpio_direction_output(line_id, lvl);};static struct s3c64xx_spi_csinfo s3c64xx_spi0_c转载 2016-07-28 17:25:13 · 580 阅读 · 0 评论 -
Linux下I2C设备驱动开发和实现
I2C总线具有结构简单使用方便的特点。本文描述了linux下I2C驱动的结构,并在此基础上给出了I2C设备驱动和应用的实现。 1 引言 I2C (Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。I2C总线最主要的优点是其简单性和有效性。由于 接口直接在组件之上,因此I2C总转载 2016-07-07 17:33:26 · 485 阅读 · 0 评论 -
linux之GPIO的使用------OK6410
S3C6410的GPIO引脚相对来说比较多,而且大部分引脚都具有多重复用功能,如何在linux上用最简单的方式来控制GPIO这需要我们好好研究一下底层的代码了,其实方法有很多种,鉴于在操作系统端控制GPIO并不像控制传统的单片机那样。这里我将提及一种方法来讲述,这种方法也是我至今看到最简单的方法首先我们打开linux-3.0.1\arch\arm\plat-samsung\incl转载 2016-07-04 14:28:44 · 555 阅读 · 0 评论 -
LINUX和PC之间通过串口传文件
转自:http://www.360doc.com/content/090528/23/150654_3691341.html 从PC机下载东西到开发板的嵌入式linux系统里面,首先会想到用tftp sftp等网络工具从网口下载。但如果网络用不了,只能通过串口下载怎么办呢?这个时候有两个工具能帮到你:一个是zmrx、zmtx,另外一个是lsz、lrz。 下面介绍一下lsz/lrz的使用转载 2016-06-28 14:47:38 · 735 阅读 · 0 评论 -
利用Makefile单独编译驱动模块文件
Makefile文件如下:KERNELDIR = /home/wenhao/platform/linux-2.6.34PWD := $(shell pwd)CROSS_COMPILE = /usr/local/arm/4.3.2/bin/arm-linux-CC = $(CROSS_COMPILE)gcc转载 2016-06-28 14:45:54 · 757 阅读 · 0 评论 -
MINI2440按键中断
编写按键驱动的方法很多,这里我仅仅列举用中断法加上简单地字符设备注册来编写,并没有采用misc设备来注册。(这里的注册函数都是相对古老,以后不推荐使用!)首先编写一个设备驱动程序头文件先定义了,这很容易,照搬别人的就行了。接着确定你的设备驱动程序会用到的数据结构,这里会用到一个重要的数据结构,struct button_irqs,用来表征按键的状态以及按键的标识。接着确定file_operat转载 2016-04-18 17:22:36 · 405 阅读 · 0 评论 -
linux驱动头文件说明
http://hi.baidu.com/%BB%F0%D0%C7%C6%B0%B3%E6911/blog/item/3c01cb8c3c5bccab0f244491.html驱动程序: #include 是在linux-2.6.29/include/linux下面寻找源文件。#include 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。转载 2016-04-18 14:25:12 · 235 阅读 · 0 评论 -
I/O驱动相关__raw_readl和__raw_writel
1.S3C2410_GPB5是端口编号,定义在regs-gpio.h中,#define S3C2410_GPIO_BANKB (32*1)#define S3C2410_GPIONO(bank,offset) ((bank) + (offset))#define S3C2410_GPB5 S3C2410_GPIONO(S3C2410_GPIO_BANKB,转载 2016-04-18 14:13:24 · 2035 阅读 · 0 评论