嵌入式Linux中文站

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

阅读(170)

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

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

阅读(263)

前言 这是作者修改后的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不能卸载)

阅读(450)

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

Linux设备驱动模型之platform总线深入浅出(加入设备树)

阅读(168)

在Linux2.6以后的设备驱动模型中,需关心总线,设备和驱动这三种实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 对于依附在USB、PCI、I2C、SPI等物理总线来 这些都不是问题。但是在嵌入式系统里面,在Soc系统中集成的独立外设控制器,挂接在Soc内存空间的外设等却不依附在此类总线。基于这一背景,Linux发明了一种总线,称为platform。 相对于USB、PCI、I2C、SPI等物理总线来

嵌入式Linux设备驱动工作原理的研究

阅读(277)

摘要: 计算机软件和集成电路技术的发展,为嵌入式产业带来了巨大的机遇和挑战,Linux以其稳定、高效、易定制、硬件广泛支持等特点,迅速崛起为当今计算机领域的一匹黑马。文章通过对与嵌入式Linux设备驱动程序相关内核源码进行分析,从设备驱动的体系结构和内核环境两方面入手,对嵌入式Linux设备驱动程序的工作原理进行剖析和阐述。 关键词: Linux;嵌入式系统;设备驱动;内核环境 0. 引 言 设备驱动程序在Linux内核中占有极其重要的位置,它是内核用于完成对物理设备的控制操作的功能模块。除了CPU、内存

Linux IIC设备驱动剖析

阅读(244)

写在前面 由于IIC总线只需要两根线就可以完成读写操作,而且通信协议简单,一条总线上可以挂载多个设备,因此被广泛使用。但是IIC总线有一个缺点,就是传输速率比较低。本文基于Linux-2.6.36版本,说说IIC子系统在Linux中的实现。 IIC子系统框架分为3各部分: 1. I2C核心: I2C总线和I2C设备驱动的中间枢纽,它为 I2C总线和设备驱动 提供了注册、注销等方法。 2. I2C总线驱动(I2C控制器驱动): 对I2C硬件体系中适配器端的实现,控制器可以在CPU内部,也可以集成在CPU内部

linux内存管理之物理内存相关知识

阅读(255)

Linux内核采用页式存储管理,进程的地址空间被划分成固定大小的页面(page),物理内存同样被分为与页面大小相同的页帧(page frame),由MMU在运行时将虚拟地址映射成某个物理内存页帧上的地址,MMU一般内嵌在CPU上。 1NUMA(Non Uniform Memory Access) 在现代计算机,特别是在多核的CPU环境中,CPU访问内存的速度与两者之间的距离有关,导致访问不同内存区域的时间可能不同。如下图,是系统中有2个CPU(可以超过2个CPU)时,NUMA内存访问 模型。 下图是Int

Linux中的loop设备

阅读(158)

1. 什么是loop设备? loop设备是一种伪设备,是使用文件来模拟块设备的一种技术,文件模拟成块设备后, 就像一个磁盘或光盘一样使用。在使用之前,一个 loop 设备必须要和一个文件进行连接。这种结合方式给用户提供了一个替代块特殊文件的接口。因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。之所以叫loop设备(回环),其实是从文件系统这一层来考虑的,因为 这种被 mount 起来的镜像文件它本身也包含有文件系统,通过loop设备把它mount起来,