Linux Driver Development
我们编程吧
我们编程吧
Letsprogramming
展开
-
内核和用户空间共享内存的实现例程-proc和mmap
关于mmap和read在用户空间和内核空间的一个比较简单的实现,对刚开始学驱动开发的有很大帮助!!转载 2010-08-18 18:38:00 · 608 阅读 · 0 评论 -
mmap--最简单的测试程序(用户空间与内核空间数据交换&&用户态和内核态的数据交换用例)
mmap--最简单的测试程序(用户空间与内核空间数据交换&&用户态和内核态的数据交换用例)原创 2010-08-20 18:18:00 · 3665 阅读 · 3 评论 -
关于驱动--多块pci板卡识别的问题(收集到的一个资料)
<br /> 板卡插入机箱,通过CPU(PCI总线的中央资源)在系统初始化阶段(POST)为各个PCI设备(包括插入的板卡)进行资源分配(IO/MEM/中断),资源分配完毕后,PCI设备的驱动程序进行PCI总线搜索,看是否有符合本驱动的板卡存在(根据PCI Vendor Id和Device Id,以及Revison Id),找到设备后驱动程序则根据板卡的硬件设计情况进行相应的寄存器初始化和中断挂载工作。<br /> 所以有几点需要注意:<br /> 因为PCI总原创 2010-10-01 14:55:00 · 2917 阅读 · 0 评论 -
vi 命令大全
<br /><br /><br /><br />进入vi的命令<br />vi filename :打开或新建文件,并将光标置于第一行首<br />vi +n filename :打开文件,并将光标置于第n行首<br />vi + filename :打开文件,并将光标置于最后一行首<br />vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处<br />vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename转载 2010-10-22 16:47:00 · 549 阅读 · 0 评论 -
Fedora 12 13 14基础环境配置
<br />发现好文,忍不住分享的冲动。我立即更新了很多很多的东西。<br /> <br />========================================================<br /><br /><br />Fedora 12 13 14基础环境配置2010年7月23日 Dawnson 发表评论 阅读评论 25 views这里假设Fedora 12/13/14业已安装完成,并能联入网络,那么接下来的基础办公和编程环境的配置过程可以走下面这个路线:<br />原创 2010-11-16 12:37:00 · 1944 阅读 · 0 评论 -
linux开机启动脚本的顺序
<br />最近在做驱动的程序,需要开启启动,研究了一下,蛮简单的,找篇好文章,以飨大家。<br /> <br />如果服务器重启之后需要手工开启许多服务、工作及以后的维护相对比较繁琐、特地总结了下linux下开机自动启动脚本所涉及的知识和方法、如下:<br />1、相关基础知识点<br /> 1)redhat的启动方式和执行次序是: <br /> 加载内核 <br /> 执行init程序 <br /> /etc/rc.d/rc.sysinit # 由init执行的第一个脚原创 2010-11-24 11:08:00 · 679 阅读 · 0 评论 -
linux内核空间与用户空间信息交互方法
<br />摘要:在进行设备驱动程序,内核功能模块等系统级开发时,通常需要在内核和用户程序之间交换信息。Linux提供了多种方法可以用来完成这些任务。本文总结了各种常用的信息交换方法,并用简单的例子演示这些方法各自的特点及用法。其中有大家非常熟悉的方法,也有特殊条件下方可使用的手段。通过对比明确这些方法,可以加深我们对Linux内核的认识,更重要的是,可以让我们更熟练驾御linux内核级的应用开发技术。<br /> <br />内核空间(kernel-space) VS 用户空间(user-space)<b原创 2010-11-23 19:00:00 · 1028 阅读 · 0 评论 -
Linux字符设备驱动的register_chrdev()与unregister_chrdev()
<br />Linux下的设备驱动程序被组织为一组完成不同任务的函数的集合,通过这些函数使得Windows的设备操作犹如文件一般。在应用程序看来,硬件设备只是一个设备文件,应用程序可以象操作普通文件一样对硬件设备进行操作,如open ()、close ()、read ()、write () 等。<br />Linux主要将设备分为二类:字符设备和块设备。字符设备是指设备发送和接收数据以字符的形式进行;而块设备则以整个数据缓冲区的形式进行。字符设备的驱动相对比较简单。<br /><br /> 下面我们来假设原创 2011-05-11 09:41:00 · 759 阅读 · 0 评论 -
2.6内核中被废弃的pci_present()
<br /> <br />在pci驱动是使用pci_present()函数在init函数中,编译过程中报错。<br />其中的源码为:<br /><br /><br />static int __init shao_init(void){ int init_ret; if (!pci_present()){ printk("This kernel version does not support PCI.../n"); return -ENODEV; } if(!p原创 2011-05-11 10:19:00 · 1188 阅读 · 0 评论 -
Linux内存管理之kmalloc 与 __get_free_page()
在设备驱动程序中动态开辟内存,不是用malloc,而是kmalloc,或者用get_free_pages直接申请页。释放内存用的是kfree,或free_pages. 对于提供了MMU(存储管理器,辅助操作系统进行内存管理,提供虚实地址转换等硬件支持)的处理器而言,Linux提供了复杂的存储管理系统,使得进程所能访问的内存达到4GB。 进程的4GB内存空间被人为的分为两个部分--用户空间与内核空间。用户空间地址分布从0到3GB(PAGE_OFFSET,在0x86中它等于0xC000000转载 2010-08-20 15:14:00 · 5959 阅读 · 1 评论 -
mmap and DMA
本章内容分为三节。第一节讲述了 mmap 系统调用的实现,mmap允许直接将设备内存映射到用户进程的地址空间中。然后我们讨论内核 kiobuf 机制,它能提供从内核空间对用户内存的直接访问,kiobuf 系统可用于为某些种类的设备实现"裸(raw)I/O"。最后一节讲述直接内存访问(DMA)I/O操作,它本质上提供了外围设备直接访问系统内存的能力。转载 2010-08-19 09:24:00 · 3375 阅读 · 0 评论 -
mmap的详细使用(用户空间)
共享内存可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以。<br />采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据[1]:转载 2010-08-17 15:29:00 · 1041 阅读 · 0 评论 -
Linux 设备驱动 Edition 3(中文版)
驱动开发的经典大牛书籍,百读不厌呀!!原创 2010-08-18 19:58:00 · 827 阅读 · 0 评论 -
用户空间存取内核空间
用户空间存取内核空间,具体的实现方法要从两个方面考虑,先是用户进程,需要调用mmap来将自己的一段虚拟空间映射到内核态分配的物理内存;然后内核空间需要重新设置用户进程的这段虚拟内存的页表,使它的物理地址指向对应的物理内存。针对linux内核的几种不同的内存分配方 式(kmalloc、vmalloc和ioremap),需要进行不同的处理。转载 2010-08-18 20:04:00 · 1063 阅读 · 0 评论 -
用户空间内核空间ipc总结(sockopt,ioctl,mmap,netlink,proc,seq,file,copy_user)
多数的 Linux 内核态程序都需要和用户空间的进程交换数据,但 Linux 内核态无法对传统的 Linux 进程间同步和通信的方法提供足够的支持!本文就总结下常见的ipc,getsockopt/setsockopt mmap netlink/socket proc/seq copy_from_user/copy_to_user 文件。采用先讲解后测试代码的方式,netlink和proc由于江哥和段兄都写的比较好了我就贴了链接...转载 2010-08-18 20:15:00 · 3112 阅读 · 0 评论 -
Linux调试技术介绍
对于任何编写内核代码的人来说,最吸引他们注意的问题之一就是如何完成调试。由于内核是一个不与某个进程相关的功能集,其代码不能很轻松地放在调试器中执行,而且也不能跟踪。本章介绍你可以用来监视内核代码和跟踪错误的技术。原创 2010-08-18 17:56:00 · 704 阅读 · 0 评论 -
Zero Copy I: User-Mode Perspective
Despite some drawbacks, zero-copy sendfile is a useful feature, and I hope you have found this article informative enough to start using it in your programs. If you have a more in-depth interest in the subject, keep an eye out for my second article, titled转载 2010-08-18 19:48:00 · 929 阅读 · 0 评论 -
在 Linux 下用户空间与内核空间数据交换的方式
本文详细地介绍了 Linux 系统下用户空间与内核空间数据交换的九种方式,包括内核启动参数、模块参数与 sysfs、sysctl、系统调用、netlink、procfs、seq_file、debugfs和relayfs,并给出具体的例子帮助读者掌握这些技术的使用。原创 2010-08-18 16:55:00 · 623 阅读 · 0 评论 -
mmap 设备操作
mmap内存映射是现代 Unix 系统最有趣的特性之一. 至于驱动, 内存映射可被实现来提供用户程序对设备内存的直接存取.原创 2010-08-18 19:55:00 · 2517 阅读 · 0 评论 -
get_free_page 和其友
如果一个模块需要分配大块的内存, 它常常最好是使用一个面向页的技术. 请求整个页也有其他的优点原创 2010-08-18 19:56:00 · 8830 阅读 · 0 评论 -
Davinci DM6446开发攻略——LINUX GPIO驱动源码移植
一、 DM6446 GPIO的介绍 说到LINUX 驱动移植,没有移植过的朋友,或刚刚进入LINUX领域的朋友,最好去看看《LINUX 设备驱动程序》第三版,有个理论或感性的认识。该版本是基于2.6.10的基础上描述的,经典读物,网上有转载 2011-08-29 08:27:10 · 1463 阅读 · 0 评论