Linux驱动
似水流年___
这个作者很懒,什么都没留下…
展开
-
linux usb 驱动详解 二
USB 设备驱动代码通过urb和所有的 USB 设备通讯。urb用 struct urb 结构描述(include/linux/usb.h )。 urb 以一种异步的方式同一个特定USB设备的特定端点发送或接受数据。一个 USB 设备驱动可根据驱动的需要,分配多个 urb 给一个端点或重用单个 urb 给多个不同的端点。设备中的每个端点都处理一个 urb 队列, 所以多个 urb 可在队列清空原创 2014-02-20 09:51:42 · 546 阅读 · 0 评论 -
基于Linux内核的IIC驱动
#include #include #include #include #include #include #include //分配初始化设备ID信息static struct i2c_device_id at24c02_id[] = {{"at24c02", 0} //这个名称很重要,用于匹配};static struct i2c_c原创 2014-02-20 10:45:31 · 1452 阅读 · 0 评论 -
Linux 内核驱动固件加载方式
对于内核驱动需要的固件文件,有两种方式加载: 方式1:固件编写进内核1, 在驱动的 Driver ---> Generic Driver Options ---> External firmware blobs to build into the kernel binary 下编写 固件名字,(全称)。同时在此后的root direction下编写文件路径, e原创 2014-11-13 15:44:14 · 3020 阅读 · 1 评论 -
Linux DMA
大家都知道,DMA的操作是需要物理地址的,但是在linux内核中使用的都是虚拟地址,如果我们想要用DMA对一段内存进行操作,我们如何得到这一段内存的物理地址和虚拟地址的映射呢?dma_alloc_coherent这个函数实现了这种机制。1、函数原型:void *dma_alloc_coherent(struct device *dev, size_t size,dma_addr_t *dma_原创 2014-11-18 14:27:19 · 501 阅读 · 0 评论 -
Linux SDIO
1、sdio接口层解析SDIO总线 SDIO总线 和 USB总线 类似,SDIO也有两端,其中一端是HOST端,另一端是device端。所有的 通信 都是 由HOST端 发送 命令 开始的,Device端只要能解析命令,就可以相互通信。 CLK信号:HOST给DEVICE的 时钟信号,每个时钟周期传输一个命令。 CMD信号:双向 的信号,用于传送 命令 和 反应。原创 2014-11-18 13:34:15 · 1193 阅读 · 0 评论 -
Linux 线程与进程的学习
【摘要】本文首先介绍了进程和线程的区别,接着分析了内核线程、轻量级LWP线程以及常见的用户线程的特点,同时介绍了内核线程和进程的区别。分析了创建内核线程kernel_thread函数的实现过程,介绍了一个在驱动中使用内核线程的实例。最后针对内核线程创建销毁的特点,给出了通用的内核线程操作函数API,使用该API可在自己的驱动或内核代码中方便的使用内核线程。 1 线程和进程的差别原创 2014-11-04 14:22:56 · 488 阅读 · 0 评论 -
BT 的初步探索
蓝牙模块与单片机或者嵌入式ARM处理器的接口有原创 2014-11-04 09:42:02 · 794 阅读 · 0 评论 -
ubunt64位系统下的使用问题
1,ubunt64位系统安装之后有些软件biany原创 2014-07-05 15:02:17 · 584 阅读 · 0 评论 -
AllWinner board 笔记
1,编译出现 sh : arm-linux- 找不到 是因为 Makefile配置CROSS_COMPARE的时候最后的空格没有处理干净;2,自己编译的驱动加载后出现 insmod: init_module 'wlan.ko' failed (Exec format error) wlan: disagrees about原创 2014-12-13 22:14:24 · 925 阅读 · 0 评论 -
ts_calibrate
/* * tslib/tests/ts_calibrate.c * * Copyright (C) 2001 Russell King. * * This file is placed under the GPL. Please see the file * COPYING for more details. * * * Basic test program for touchscreen lib原创 2014-12-05 16:03:26 · 1743 阅读 · 0 评论 -
Dropbear
dropbear是一个轻量级的ssh服务,比openssh要小的多,而且速度比较好。本文介绍在嵌入式的环境中的安装方法。环境以x86架构的linux+busybox环境为例,如果dropbear编译安装于流行版的linux下应该问题不大,但是对于精简的busybox环境就需要做一些工作。我所搭建的环境为x86架构的,比较简单,不需要交叉编译。对于其他的嵌入式架构,可能需要交叉编译。但是这里所说原创 2014-12-11 10:14:10 · 2315 阅读 · 0 评论 -
Linux设备驱动中的并发控制总结
并发(concurrency)指的是多个执行单元同时、并行被执行。而并发的执行单元对共享资源(硬件资源和软件上的全局、静态变量)的访问则容易导致竞态(race conditions)。 SMP是一种紧耦合、共享存储的系统模型,它的特点是多个CPU使用共同的系统总线,因此可访问共同的外设和存储器。 进程与抢占它的进程访问共享资源的情况类似于SMP的多个CPU. 中断可 打断正转载 2014-02-15 10:00:46 · 1735 阅读 · 0 评论 -
android wifi驱动移植详细过程
对于刚入手android没多久的人来说,android wifi 驱动的移植确实还是有难度的,不过参考了网友的相关帖子后,最终还是移植成功了,,以便自己和他人查看学习:&&&& WIFI的基本架构 &&&&(这一部分比较重要,是一直wifi驱动的基础)1、wifi用户空间的程序和库:external/wpa_supplicant/生成库libwpaclient.so和守护进程w原创 2014-08-08 13:48:35 · 3716 阅读 · 0 评论 -
linux usb 驱动详解 三
本部分的一些示例源码来自drivers/usb/usb-skeleton.c,它是Linux内核为我们提供的最基础的USB驱动程序,USB骨架程序) 驱动程序把驱动对象注册到 USB 子系统中,之后使用供应商(idVendor)和设备(idProduct)标识来判断对应的硬件是否已经安装. 驱动的设备支持列表 struct usb_device_id转载 2014-02-20 09:53:20 · 461 阅读 · 0 评论 -
linux USB驱动详解 一
内核使用2.6.29.4 拓扑结构上, 一个 USB 子系统并不是以总线的方式来分布; 它是一棵由几个点对点连接构成的树。这些连接是连接设备和集线器的4线电缆(地, 电源, 和 2 个差分信号线), 如同以太网的双绞线。USB主控制器负责询问每个USB设备是否有数据需要发送。由于这个拓扑结构,一个 USB 设备在没有主控制器要求的情况下不能发送数据. 也就是说:USB原创 2014-02-20 09:50:13 · 1252 阅读 · 0 评论 -
基于Linux内核的USB鼠标驱动的简单实现
#include #include #include #include #include #include static struct input_dev *uk_dev;static char *usb_buf;static dma_addr_t usb_buf_phys;static int len;static struct urb *uk_u原创 2014-02-20 10:39:50 · 797 阅读 · 0 评论 -
Linux list解读
Sam之前看2.4 kernel时,常看到List.也仔细看了一下,但现在长期没有看kernel,没有写程序,已经忘记了很多。今天又看一看并记录下来。 Linux Kernel中,常常需要使用双向链表。在~/include/linux/list.h中,就定义了双向链表和常用的function.链表头如下:struct list_head { struct list_head *原创 2014-09-04 11:15:35 · 593 阅读 · 0 评论 -
基于Linux的LCD驱动及测试代码
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2014-02-20 10:56:38 · 2704 阅读 · 0 评论 -
Linux内核的五大模块
Linux内核的五大模块 1.进程调度模块 2.内存管理模块 3.文件系统模块 4.进程间通信模块 5.网络接口模块进程调度模块用来负责控制进程对CPU 资源的使用。所采取的调度策略是各进程能够公平合理地访问CPU, 同时保证内核能及时地执行硬件操作。内存管理模块用于确保所有进程能够安全地共享机器主内存区, 同时, 内存管理模块还支持虚拟内存管理方式, 使得Linux原创 2014-02-18 08:54:49 · 3481 阅读 · 0 评论 -
基于Linux内核的1-wair总线驱动
#include #include #include #include #include #include #include #include #include #include #include #define DS18B20_RESET (0x10009)#define DS18B20_REL (0x10011)#defi原创 2014-02-20 10:51:17 · 688 阅读 · 0 评论 -
基于Linux内核的input子系统驱动
#include #include #include #include #include #include #include /*1.硬件私有结构体*/struct button_resource {unsigned long gpio;int irq;char *name;int code;};//初始化按键信息原创 2014-02-20 10:41:32 · 515 阅读 · 0 评论 -
应用程序实现多路监听的内核驱动实现
#include #include #include #include #include #include #include #include #include #include #include #include #include static int major;struct cdev btn_cdev;struct class原创 2014-02-20 11:04:21 · 520 阅读 · 0 评论 -
从Linux内核镜像中提取内核配置文件
如果你是一个喜欢编译内核的狂人,同时也是经常忘记将默认的.config文件备份的懒家伙,那么下面的方法将会使你的内核配置工作变得更轻松,从linux 2.6开始内核提供了一种将.config附加到映像文件的方法,通过这种方法,内核配置者可以不必备份当前的.config文件,而是在需要的时候直接从内核映像中提取.config文件。步骤如下:1. 配置内核1.1 make menuco原创 2014-12-13 22:03:43 · 2004 阅读 · 0 评论