嵌入式Linux中文站

主设备号--驱动模块与设备节点联系的纽带

阅读(198)

111 一、如何对设备操作 linux中对设备进行操作是通过文件的方式进行的,包括open、read、write。 对于设备文件,一般称其为设备节点, 节点有一个属性是设备号(主设备号、次设备号),其中主设备号将设备文件与驱动模块对应起来 当我们open一个设备节点时,告诉了kern

驱动模块静态编译到 Linux 内核

阅读(197)

一、准备好可以正常引导开发板的源码 二、在内核源码kernel文件夹的driver目录下,创建led_arm文件夹 mkdir drivers/led_arm 三、将LED驱动实验的驱动程序拷贝到led_arm目录下(详情见上一次LED驱动博客) 将led.c拷贝在该文件夹下面 Kconfig就是对应着内核的配置菜单。假如要想添加新的驱动到内核的源码中,可以通过修改Kconfig来增加对我们驱动的配置菜单,这样就有途径选择我们的驱动。 每个config菜单项都要有类型定义,bool:布尔类型, trist

Linux设备驱动模型

阅读(257)

尽管 LDD3 中说对多数程序员掌握设备驱动模型不是必要的,但对于嵌入式 Linux 的底层程序员而言,对设备驱动模型的学习非常重要。 Linux 设备模型的目的:为内核建立一个统一的设备模型,从而又一个对系统结构的一般性抽象描述。换句话说, Linux 设备模型提取了设备操作的共同属性,进行抽象,并将这部分共同的属性在内核中实现,而为需要新添加设备或驱动提供一般性的统一接口,这使得驱动程序的开发变得更简单了,而程序员只需要去学习接口就行了。 在正式进入设备驱动模型的学习之前,有必要把 documenta

Linux eMMC子系统之主机控制器驱动(host conntroller driver)

阅读(379)

1. 前言 本文是Linux MMC framework的第二篇,将从驱动工程师的角度,介绍MMC host controller driver有关的知识,学习并掌握如何在MMC framework的框架下,编写MMC控制器的驱动程序。同时,通过本篇文章,我们会进一步的理解MMC、SD、SDIO等有关的基础知识。 2. MMC host驱动介绍 MMC的host driver,是用于驱动MMC host控制器的程序,位于drivers/mmc/host目录。从大的流程上看,编写一个这样的驱动非常简单,只需

Linux下PCI设备驱动程序开发

阅读(203)

PCI是一种广泛采用的总线标准,它提供了许多优于其它总线标准(如EISA)的新特性,目前已经成为计算机系统中应用最为广泛,并且最为通用的总线标准。Linux的内核能较好地支持PCI总线,本文以Intel 386体系结构为主,探讨了在Linux下开发PCI设备驱动程序的基本框架。 一、PCI总线系统体系结构 PCI是外围设备互连(Peripheral Component Interconnect)的简称,作为一种通用的总线接口标准,它在目前的计算机系统中得到了非常广泛的应用。PCI提供了一组完整的总线接口规

linux设备驱动模型一字符设备open系统调用流程

阅读(197)

我们在操作一个调和时都 是通过open系统调用先去打开这个设备,不管是设备还是文件,我们要访问它都要称通过open函数来先打开, 这样才能调用其它的函数如read、write来操作它,即通知内核新建一个代表该文件的结构,并且返回该文件的描述符(一个整数),该描述符在进程内唯一。 在Linux系统进程中,分为内核空间和用户空间,当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(内核态)。在内核态下,CPU可执行任何指令。当进程在执行用户自己的代码时,则称其处于用户运行态(用户

小米随身WiFi,Linux下AP热点驱动(开源)

阅读(296)

前言 这是作者修改后的Linux下的小米随身WiFi驱动,支持Ap模式,开源,同时支持360随身WiFi二代和小度WiFi 注意: 1.这个是 Linux下的小米随身WiFi驱动 ,不是Window和MAC下 2.这个不是STA模式下的可当作无线网卡的驱动,是可当 Ap热点模式 的驱动 3.这个支持 360随身WiFi二代 。(rtusb_dev_id.c 里面同样有360的id) (也有童鞋测试了也支持小度wifi) 4.现在最新的版本同时支持ubuntu12.04 和 ubuntu14.04 ( 谢谢

Linux强制卸载内核模块(由于驱动异常导致rmmod不能卸载)

阅读(518)

1 问题描述 在进行驱动编程的时候, 如果驱动出现了异常, insmod , rmmod 或者使用过程中出现了异常, 那么导致系统的驱动加载了, 但是却无法被卸载, 或者卸载时出错. 就比如前面我们在博文Linux Kernel PANIC(三)Soft Panic/Oops调试及实例分析中讲解调试内核 OOPS 时, 使用的有异常的驱动, kerneloops 或者 createoops , 他们在初始化函数 init 中出现了 NULL 指针异常 我们以 kerneloops 为示例, 来进行演示.