
Linux driver basics
cjok376240497
这个作者很懒,什么都没留下…
展开
-
Linux内核模块符号导出后无法调用问题
Linux内核模块符号导出后无法调用问题Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。然而在linux2.6.26以后的内核中模块的符号导出经常会出现问题,一个模块中的导出符号不能被另外一个模块进行调用。这个使得处理有依赖关系的模块非常的头疼。1. 符号导出函数EXPORT_SYMBOL() EXPORT_SYMBOL标签内定义的函数对全部内核代码转载 2011-10-25 11:39:47 · 1677 阅读 · 0 评论 -
The videobuf2 API
The videobuf2 APIAuthor:CJOKContact:cjok.liao#gmail.comSinaWeibo:@廖野cjok 原文地址:http://lwn.net/Articles/447435/ Video4linux2驱动主要负责从sensor(通常是通过DMA)上获取视频数据然后把这些视频帧传输到用户空间,大量数据的传输是性能要考虑。出于此目翻译 2013-05-28 22:51:44 · 3841 阅读 · 0 评论 -
Linux内存管理
Linux内存管理原文地址:http://www.kerneltravel.net/journal/v/mem.htm摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存转载 2013-10-04 23:27:36 · 1181 阅读 · 0 评论 -
伙伴算法
伙伴算法源地址:http://ilinuxkernel.com/?p=1029Linux内核内存管理的任务包括:遵从CPU的MMU(Memory Management Unit)机制合理、有效、快速地管理内存实现内存保护机制实现虚拟内存共享重定位Linux内核通过伙伴算法来管理物理内存。伙伴系统(Buddy S转载 2013-09-22 21:55:59 · 1897 阅读 · 0 评论 -
android 常见死机问题--log分析
android 常见死机问题--log分析原地址:http://blog.youkuaiyun.com/andyhuabing/article/details/7553524===================================================================================================一般在平时工作中,基本上很多转载 2014-02-20 18:56:35 · 3204 阅读 · 0 评论 -
内核泄露检测(kmemleak)
内核泄露检测(kmemleak)原地址:http://blog.youkuaiyun.com/lishenglong666/article/details/8287783介绍:Kmemleak 提供了一种可选的内核泄漏检测,其方法类似于跟踪内存收集器。(http://en.wikipedia.org/wiki/Garbage_collection_%28computer_scien转载 2014-02-24 18:12:54 · 3364 阅读 · 0 评论 -
linux内核调试指南
linux内核调试指南发表于11个月前(2013-03-11 15:16) 阅读(795) | 评论(0) 17人收藏此文章, 我要收藏赞0调试http://my.oschina.net/fgq611/blog/112929#OSC_h3_143目录[-]大海里的鱼有很多,而我们需要的是鱼钩一只一些前言作者前言知识从哪转载 2014-02-25 22:52:24 · 5840 阅读 · 0 评论 -
使用 Crash 工具分析 Linux dump 文件
使用 Crash 工具分析 Linux dump 文件源地址:https://www.ibm.com/developerworks/cn/linux/l-cn-dumpanalyse/Linux 内核由于其复杂性,使得对内核出现的各种异常的追踪变得异常困难。本文将介绍内核中的内存转储机制,以及如何使用 crash工具对内核产生的内存存储文件进行分析。通过对本文的学习,读者可以像专业内核转载 2014-02-25 20:30:16 · 1794 阅读 · 0 评论 -
Linux内核调试方法总结(1)
原 Linux内核调试方法总结发表于11个月前(2013-03-12 16:25) 阅读(3237) | 评论(2) 24人收藏此文章, 我要收藏赞1linux 调试源地址:http://my.oschina.net/fgq611/blog/113249#OSC_h3_24目录[-]一 调试前的准备二 内核中的bug三转载 2014-02-25 22:48:04 · 2179 阅读 · 0 评论 -
Linux内核调试方法总结(2)
原 Linux内核调试方法总结(2)九 KGDBkgdb提供了一种使用 gdb调试 Linux 内核的机制。使用KGDB可以象调试普通的应用程序那样,在内核中进行设置断点、检查变量值、单步跟踪程序运行等操作。使用KGDB调试时需要两台机器,一台作为开发机(Development Machine),另一台作为目标机(Target Machine),两台机器之间通过串口或者以太网转载 2014-02-25 22:50:17 · 1853 阅读 · 0 评论 -
Android内核详解之Low memory killer
Android low memory killer 详解 Android在内存管理上与linux有些小的区别。其中一个就是引入了Low memory killer .1,引入原因 Android是一个多任务系统,也就是说可以同时运行多个程序,这个大家应该很熟悉。一般来说,启动运行一个程序是有一定的时间开销的,因此为了加快运 行速度,当你退出一个程序时,Andro转载 2014-02-22 13:13:46 · 1764 阅读 · 0 评论 -
Linux内核调试
驱动程序开发的一个重大难点就是不易调试。本文目的就是介绍驱动开发中常用的几种直接和间接的调试手段,它们是:利用printk查看OOP消息利用strace利用内核内置的hacking选项利用ioctl方法利用/proc 文件系统使用kgdb一、利用printk这是驱动开发中最朴实无华,同时也是最常用和有效的手段。scull驱动的main.c第338行如下,就是使用printk转载 2014-09-17 10:39:34 · 1716 阅读 · 0 评论 -
Device Tree(三):代码分析
Device Tree(三):代码分析作者:linuxer 发布于:2014-6-6 16:03 分类:统一设备模型一、前言Device Tree总共有三篇,分别是:1、为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因)2、Device Tree的基础概念(请参考DT基础概念)3、ARM lin转载 2014-11-02 10:28:42 · 1092 阅读 · 0 评论 -
Device Tree(二):基本概念
Device Tree(二):基本概念作者:linuxer 发布于:2014-5-30 16:47 分类:统一设备模型一、前言一些背景知识(例如:为何要引入Device Tree,这个机制是用来解决什么问题的)请参考引入Device Tree的原因,本文主要是介绍Device Tree的基础概念。简单的说,如果要使用Device Tree,首先用户要了解自己的硬件配转载 2014-11-02 10:28:15 · 1306 阅读 · 0 评论 -
Device Tree(一):背景介绍
Device Tree(一):背景介绍作者:linuxer 发布于:2014-5-22 16:46 分类:统一设备模型一、前言作为一个多年耕耘在linux 2.6.23内核的开发者,各个不同项目中各种不同周边外设驱动的开发以及各种琐碎的、扯皮的俗务占据了大部分的时间。当有机会下载3.14的内核并准备学习的时候,突然发现linux kernel对于我似乎变得非常的陌生了,各种转载 2014-11-02 10:26:31 · 1018 阅读 · 0 评论 -
深入理解Linux中内存管理
源地址:http://www.embeddedlinux.org.cn/html/yingjianqudong/201310/09-2632.html首先,必须要阐述一下这篇文章的主题是Linux内存管理中的分段和分页技术。来回顾一下历史,在早期的计算机中,程序是直接运行在物理内存上的。换句话说,就是程序在运行的过程中访问的都是物理地址。如果这个系统只运行一个程序,那么只要这个程序转载 2015-06-28 13:09:31 · 788 阅读 · 0 评论 -
Device Tree Usage
Device Tree UsageQuality page [view draft] (+/-) (http://devicetree.org/Device_Tree_Usage)This page walks through how to write a device tree for a new machine.转载 2015-07-08 17:43:16 · 830 阅读 · 0 评论 -
Linux Notifier Chains mechanism
Linux Notifier Chains mechanism源地址:http://hi.baidu.com/zmdesperado/blog/item/a8d701eec86ffcc2b31cb1fe.html1. 引言Linux是单内核架构(monolithic kernel),大多数内核子系统和模块是相互独立的,它们被动态地加载或卸载,以使内核变得小巧和可扩展。然而,子系统转载 2012-07-01 22:17:55 · 1070 阅读 · 0 评论 -
阻塞型字符设备驱动
阻塞型字符设备驱动[概述]首先明确一点,不管你是睡眠、休眠还是阻塞,还是挂起,本质上都是把进程放到等待队列上。 [休眠的实现]休眠通过等待队列进行处理。等待队列是由等待某些事件发生的进程组成的简单链表。内核中用wake_queue_head_t来代表等待队列。等待队列可以通过DECLARE_WAITQUEUE()静态创建,也可以由Init_waitqueue_head()动态创原创 2011-10-25 19:56:31 · 1055 阅读 · 0 评论 -
Linux内核学习之中断(2)-工作队列
工作队列[概述]工作队列是一种将工作推后执行的的形式,工作队列可以把工作推后,交由一个内核线程去执行,占有进程上下文的所有优势,允许重新调度和睡眠。 [工作队列的实现]工作队列子系统是一个用于创建内核线程的接口,通过它创建的进程负责执行由内核其他部分排到队列里的任务。它创建的这些内核线程称作工作者线程(worker thread)。工作队列子系统提供了一个缺省的工作者线程来处理原创 2011-11-10 13:59:16 · 1973 阅读 · 2 评论 -
Linux内核学习之中断(3)-tasklet
Tasklet[概述]Tasklet是软中断的特殊实现。Tasklet通常是下半部处理的优选机制,它在性能和易用性之间有着很好的平衡。较softirq,tasklet不需要考虑SMP下的并发问题,而又比workqueue有着更好的性能。不同类型的tasklet可以在不同的处理器上同时执行,但同类型的tasklet不能同时执行。这就避免了并发问题。ksoftirqd内核线程有着类似工原创 2011-11-11 11:29:10 · 1608 阅读 · 1 评论 -
简单字符设备驱动和自动创建设备文件
简单字符设备驱动和自动创建设备文件国庆花了两天时间把字符设备驱动重新学习了一下,发现自己之前学的几乎一半都忘得一干二净了,所以决定写成blog,以便以后会用到,也供初学者参考。[必要的头文件]/** Asimple character driver for learn*/#include #include #include #include #in原创 2011-10-07 14:29:07 · 2722 阅读 · 1 评论 -
ARM Linux静态映射分析
ARM Linux静态映射分析源地址:http://www.embedu.org/Column/Column225.htm在华清远见上课过程中,发现静态映射方面初学者比较难于掌握和理解,下面分析一下静态映射机制的原理并通过GPIO和USB、LCD等的静态映射作为例子来说明如何通过这种静态映射的方式访问外设资源。内核提供了一个重要的结构体struct machine_desc ,这个结构转载 2012-01-08 12:52:15 · 898 阅读 · 0 评论 -
编写和提交自己的第一个内核patch
write and submit your first linux kernel patch1. 建立自己的branch Git branch test 2. 切换到branch Git checkout test 3. 检查编码的风格cjok@ubuntu:~/git-work/linux$原创 2012-01-03 23:32:31 · 2978 阅读 · 0 评论 -
NFS挂载android文件系统
NFS挂载android文件系统1.安装NFS服务$sudo apt-get install nfs-kernel-serverportmap$sudo mkdir /nfsboot$sudo vim /etc/exports /*(rw,no_root_squash,sync)然后重启NFS服务$sudo /etc/init.d/nfs-kernel-serv原创 2012-02-13 13:27:51 · 4921 阅读 · 6 评论 -
Linux内核学习之中断(1)
Linux内核学习之中断[中断概述]中断本质上是一种特殊的电信号,由硬件设备发向处理器。异常和中断的不同是异常在产生时必须考虑与处理器时钟同步。实际上异常也常常称为同步中断。比如在除0或者缺页时,必须靠内核处理的时候,处理器就会产生一个异常。 [中断处理机制的实现]原创 2011-11-08 17:07:41 · 1139 阅读 · 2 评论 -
linux内核学习之同步
Linux内核学习之同步[临界区和竞争条件]所谓临界区就是访问和操作共享数据的代码段。多个执行线程并发访问同一个资源通常是不安全的,为了避免在临界区中并发访问,coder必须保证这些代码原子执行。如果两个执行线程有可能处于同一个临界区中同时执行,那么这就是程序包含的一个bug。如果这种情况确实发生了,我们就称它是竞争条件(race conditions)。避免并发和防止竞争条件称为同步原创 2011-11-06 13:15:01 · 1147 阅读 · 0 评论 -
内核中常见的符号
内核中常见的符号[THIS_MODULE]模块是一种可以在内核运行过程中动态加载、卸载的内核功能组件。2.6内核中模块在被使用时,是不允许被卸载的。编程是需要用”使用计数”来描述模块是否在被使用。THIS_MODULE就充当了这个功能。 [likely& unlikely]在2.6的内核中经常看到这两个符号,表面上看if(likely(value))和if(unlikely(v原创 2011-11-03 20:59:55 · 1127 阅读 · 0 评论 -
[转载]Linux系统对IO内存和IO端口的管理
Linux系统对IO内存和IO端口的管理一、I/O端口 端口(port)是接口电路中能被CPU直接访问的寄存器的地址。几乎每一种外设都是通过读写设备上的寄存器来进行的。CPU通过这些地址即端口向接口电路中的寄存器发送命令,读取状态和传送数据。外设寄存器也称为“I/O端口”,通常包括:控制寄存器、状态寄存器和数据寄存器三大类,而且一个外设的寄存器通常被连续地编址。 二、IO原创 2012-06-25 20:38:40 · 1904 阅读 · 0 评论 -
Android 耳机驱动知识
Android 耳机驱动知识2015-03-06原地址:http://yunzhi.github.io/headset_knowledge/工作以后接手的第一个驱动就是android平台下耳机的插拔检测和按键检测。这部分涉及的硬件知识比较简单,但是软件上对中断的处理,软件检测的鲁棒性,都有比较高的要求,涉及到驱动开发中经常使用的中断申请,工作队列,tasklet,竟态和同步转载 2016-01-06 20:18:27 · 5826 阅读 · 0 评论