
linux驱动
文章平均质量分 85
阿特图
这个作者很懒,什么都没留下…
展开
-
Linux阻塞与非阻塞I/O之poll与select
轮询操作 轮询操作的概念与作用: 使用非阻塞I/O的应用程序通常会使用select()和poll()系统调用查询是否可对设备进行无阻塞的 访问。select()和poll()系统调用最终会引发设备驱动中的poll()函数被执行 应用程序中的轮询编程 应用程序中最广泛用到的BSD UNIX中引入的select()系统调用。原型为:原创 2012-03-27 22:20:05 · 2093 阅读 · 0 评论 -
OK6410按键驱动程序(改)亲测可以运行
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include #include #define原创 2012-04-30 10:30:27 · 6440 阅读 · 7 评论 -
Linux usb驱动程序全注释
/* * USB Skeleton driver - 2.0 */#include #include #include #include #include #include #include #include #include #include /* Define these values to match your devices */原创 2012-04-18 15:17:12 · 2791 阅读 · 0 评论 -
在Linux内核中增加驱动选项
在linux内核中增加驱动程序要完成3个方面的工作1.将编写的源代码拷贝到Linux内核源代码相应目录2.在目录的Kconfig文件中增加关于源代码的相应目录3.在目录的Makefile文件中增加对新源代码的编译条目扫盲点:Makefile:分布在Linux内核源代码中的Makefile,定义Linux内核的编译规则Kconfig:给用户提供原创 2012-04-15 16:07:19 · 2530 阅读 · 0 评论 -
Source Insight建立Linux内核代码工程的方法
用Source Insight建立一个Linux内核代码工程具体步骤如下:(一)打开Source Insight,单击【项目】按钮,弹出下拉菜单。(二)单击【新项目】按钮,弹出【新项目】对话框,输入项目名和存放路径,单击【确定】按钮。(三)弹出【添加删除文件】对话框,在内核源代码路径下选择全部 2.6.25内核代码,单击【关闭】按钮。转载 2012-04-23 21:18:01 · 5446 阅读 · 1 评论 -
基于platform的ok6410按键中断实验
plat_btn_device.c#include #include #include #include #include #include #include #include #define DEVICE_NAME "ok6410_plat_btn"/*平台资源的定义,按键中断*/static struct resource s3c_buttons_resou原创 2012-05-09 10:16:45 · 1917 阅读 · 0 评论 -
Linux bus总线模型试验
bus.c#include #include #include #include #include MODULE_AUTHOR("Sola");MODULE_LICENSE("Dual BSD/GPL");static char *Version = "$Revision: 1.9 $";static int my_match(struct device *dev,原创 2012-05-08 16:10:46 · 1101 阅读 · 0 评论 -
ok6410增加工作队列的platform按键驱动程序
plat_btn_device.c#include #include #include #include #include #include #include #include #define DEVICE_NAME "ok6410_plat_btn"/*平台资源的定义,按键中断*/static struct resource s3c_buttons_resourc原创 2012-05-10 18:09:44 · 1117 阅读 · 0 评论 -
在没有Jlink的情况下进行裸机调试
OK6410裸机程序(用超级终端下载)转自:http://blog.youkuaiyun.com/eagle_lzt/article/details/6364692上面已经解决 了几个问题。现在我们的状态:可以在PC - OK6410 之间进行tftp传输,确定了一下可用的地址 空间,下面我们来说一下printf调试 、因为没有jlink,只能用printf调试,你也许会问转载 2012-05-29 23:01:37 · 855 阅读 · 0 评论 -
s3c6410中断处理
Andrew Huang bluedrum@163.com 转载请注明作者及联络方式一.中断的场景模拟----------------------------------------------------------------------------中断(Interrupt)是最常用的硬件通知软件的机制。中断的优点相对另一种机制轮询(Polling)的缺点而言,这两种的机制转载 2012-06-04 16:11:03 · 5351 阅读 · 3 评论 -
ok6410LCD测试程序
1.在屏幕上分别显示红绿蓝三个长方形: #ifndef LCD_APP_H#define LCD_APP_H/*自定义结构体用来在用户空间里管理帧缓冲的信息*/typedef struct fd_dev{ int fd;//帧缓冲设备文件描述符 void *pfb;//指向帧缓冲映射到用户空间的首地址 int xres,yres,siz;//一帧图像的宽度、高度和大小 i原创 2012-05-15 17:50:11 · 2805 阅读 · 0 评论 -
Linux驱动阻塞与非阻塞IO之等待队列
上次我和大家一起探讨了Linux驱动中的竞态问题,本环节为们来探讨一下Linux驱动编写中的阻塞与非阻塞I/O阻塞与非阻塞I/O简介阻塞操作:是指在执行设备操作时,若不能获得资源,则挂起进程直到满足可操作的条件后再进行操作,被挂起的进程会进入休眠状态,被从调度器的运行队列中移除,直到条件被满足。非阻塞操作:是指在执行设备操作时,若不能获得原创 2012-03-22 20:42:17 · 3841 阅读 · 0 评论 -
platform设备驱动简介
简介:目的:说白了就是为了将设备与驱动分离,通过platform总线进行连接废话不多说:相关结构介绍:1.platform设备结构体structplatform_device{const charname;/*设备名*/u32 id;/*设备id*/struct device dev;/*设备*/u32 num_resourc原创 2012-04-14 09:21:49 · 15786 阅读 · 1 评论 -
异步操作之异步通知编程
我们前面介绍了阻塞与非阻塞的相关操作,其中poll()函数提供了较好的解决设备访问的基址,但是如果有了异步通知的整套基址就更加完整了。这次我就和大家一起来探讨一下Linux驱动开发中的异步操作 异步操作的概念与作用: 概念:一旦设备准备就绪,则主动通知应用程序,这样应用程序就不需要查询设备状态了 ,这一点与硬件上的"中断"概念非常相似 在原理上一个进程收到一原创 2012-03-29 20:35:51 · 883 阅读 · 0 评论 -
异步I/O之用户空间
Linux2.6异步I/O AIO的基本思想: 允许进程发起很多I/O操作,而不用阻塞或等待任何操作完成,稍后或在 接收到I/O操作完成通知时,进程可以检索I/O操作结果 在异步非阻塞I/O中,我们可以同时发起多个传输操作,这需要每个传输操作都有唯一的上下文 ,这样我们才能在他们完成时区分到底是哪个传输操作完成了,这个 工作可以通过aiocb结构体进行原创 2012-03-30 17:34:24 · 3824 阅读 · 0 评论 -
Linux异步IO操作
Linux异步IOLinux® 中最常用的输入/输出(I/O)模型是同步 I/O。在这个模型中,当请求发出之后,应用程序就会阻塞,直到请求满足为止。这是很好的一种解决方案,因为调用应用程序在等待 I/O 请求完成时不需要使用任何中央处理单元(CPU)。但是在某些情况中,I/O 请求可能需要与其他进程产生交叠。可移植操作系统接口(P转载 2012-03-30 15:35:26 · 16842 阅读 · 3 评论 -
Linux中断处理驱动程序编写
本章节我们一起来探讨一下Linux中的中断中断与定时器:中断的概念:指CPU在执行过程中,出现某些突发事件急待处理,CPU暂停执行当前程序,转去处理突发事件,处理完后CPU又返回原程序被中断的位置继续执行中断的分类:内部中断和外部中断内部中断:中断源来自CPU内部(软件中断指令、溢出、触发错误等)外部中断:中断源来自CPU外部,由外设提出请求屏蔽原创 2012-04-02 18:18:25 · 19591 阅读 · 4 评论 -
用中的linux驱动 platform_device
原文出自:http://blog.youkuaiyun.com/ghostyu/article/details/6908805一个现实的linux设备和驱动通常要挂接在一种总线上,像pci,usb,iic,spi等都是总线结构,这当然不是问题,但是嵌入式系统中,Soc系统集成的独立外设控制器,挂接在soc内存空间的外设等却不依附于此类总线。基于这个背景,linux发明了一种虚拟总线:platfor转载 2012-04-05 22:26:54 · 6612 阅读 · 0 评论 -
Linux驱动之并发与竞态
并发控制与竞态: 并发是指多个单元同时、并行被执行,而并发执行单元对共享资源的访问 很容易导致竞态。 竞态的解释: 假设有一个设备,执行单元A对其写入3000个字符'a'而另一个执行单元B对 其写入4000个'b',第三个执行单元C读取globalmem的所有字符,如果执行单元A 、B对于设备的写入操作同时发生,此时就会造成竞态 竞争状态的分类:原创 2012-03-20 17:43:31 · 2370 阅读 · 0 评论 -
Linux Platform Device and Driver
原文出自:http://linux.chinaunix.net/techdoc/develop/2008/12/23/1054402.shtmlLinux Platform Device and Driver日期:08-06-27 从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。 Linux中转载 2012-04-09 11:50:27 · 694 阅读 · 0 评论 -
Linux等待队列简介
转载自:http://www.360doc.com/content/10/1009/13/1317564_59573185.shtml相信很多写程序的人都写过 socket 的程序。当我们 open 一个 socket 之后,接着去 读取这个 socket,如果此时没有任何资料可供读取,那 read 就会 block 住。(这是 没有加上 O_NONBLOCK 的情形),直到有转载 2012-03-22 10:25:40 · 1361 阅读 · 0 评论 -
怎样写Linux下的USB驱动
引言随着人们生活水平的提高,我们用到的USB设备也越来越多,但是Linux在硬件配置上仍然没有做到完全即插即用,对于Linux怎样配置和使用他们,也越来越成为困扰我们的一大问题;本文的目地是使大家了解怎样编制USB设备驱动,为更好地配置和使用USB设备提供方便;对于希望开发Linux系统下USB设备驱动的人员,也可作为进一步学习USB驱动的大体架构进而编写出特殊USB设备的驱动程序。U转载 2012-04-10 10:45:27 · 732 阅读 · 0 评论 -
内存与I/O访问
本章节带大家一起来探讨一下Linux驱动中的内存与I/O访问CPU与内核和I/OI/O空间:在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的。它通过特定的指令in、out来访问指令格式:IN 累加器,{端口号|DX}OUT {端口号|DX},累加器注意:目前大多数嵌入式微控制例如ARM、PowerPC等不提供I/O空间,而仅存在内原创 2012-04-06 11:20:57 · 5788 阅读 · 0 评论 -
在没有仿真器的情况下调试ok6410裸机程序
前段时间 买了个OK6410 B玩。看了看视频JlinkV8调试 挺麻烦的,就直接用uboot 上的printf进行很简单的调试,特意分享给像我一样的小白,也感谢帮我的大牛。1、开发 环境 :PC:archlinux,minicom 或者 kermit.(工具不会用的google啊,呵呵)开发板: ok6410B(256 SDRAM,2G Nand flash )两者之间通信转载 2012-08-09 11:12:33 · 1251 阅读 · 2 评论