代码改变世界

[置顶]Linux设备驱动第七篇:高级字符驱动操作之阻塞IO

2015-07-31 14:29 by 麦子熟了, 1497 阅读, 1 推荐, 收藏, 编辑
摘要:我们之前介绍过简单的read,write操作,那么会有一个问题:当驱动无法立即响应请求该怎么办?比如一个进程调用read读取数据,当没有数据可读时该怎么办,是立即返回还是等到有数据的时候;另一种情况是进程调用write向设备写数据,如果缓冲区满了或者设备正忙的时候怎么办,是立即返回还是继续等待直到设... 阅读全文

[置顶]Linux设备驱动第六篇:高级字符驱动操作之iotcl

2015-07-24 15:09 by 麦子熟了, 1467 阅读, 0 推荐, 收藏, 编辑
摘要:在之前我们介绍了如何实现一个简单的字符设备驱动,并介绍了简单的open,close,read,write等驱动提供的基本功能。但是一个真正的设备驱动往往提供了比简单读写更高级的功能。这一篇我们就来介绍一些驱动动中使用的一些高级的操作的实现。大部分驱动除了提供对设备的读写操作外,还需要提供对硬件控制的... 阅读全文

[置顶]Android binder学习一:主要概念

2015-07-17 10:54 by 麦子熟了, 1593 阅读, 1 推荐, 收藏, 编辑
摘要:要看得懂android代码,首先要了解binder机制。binder机制也是android里面比较难以理解的一块,这里记录一下binder的重要概念以及实现,作为备忘。部分内容来源于网上,如有侵权,请及时告知。1.binder通信机制概述binder通信是一种client-server的通信结构,1... 阅读全文

[置顶]Android GUI系统学习1:Gralloc

2015-07-10 10:54 by 麦子熟了, 3202 阅读, 2 推荐, 收藏, 编辑
摘要:Gralloc模块是从Android Eclair(android 2.1)开始加入的一个HAL模块,Gralloc的含义为是Graphics Alloc(图形分配)。他对上为libui提供服务,为其分配显存,刷新显示等。对下对framebuffer进行管理。gralloc代码通常位于hardwar... 阅读全文

[置顶]Android HAL模块实现

2015-07-03 10:56 by 麦子熟了, 1891 阅读, 1 推荐, 收藏, 编辑
摘要:1. HAL介绍Android的HAL(Hardware Abstract Layer硬件抽象层)是为了保护一些硬件提供商的知识产权而提出的,是为了避开linux的GPL束缚。思路是把控制硬件的动作都放到了Android HAL中,而linux driver仅仅完成一些简单的数据交互作用,甚至把硬件... 阅读全文

[置顶]linux进程间通讯总结

2015-06-26 15:52 by 麦子熟了, 941 阅读, 2 推荐, 收藏, 编辑
摘要:1. 概览本文记录经典的IPC:pipes, FIFOs, message queues, semaphores, and shared memory。2. PIPES管道是UNIX系统IPC的最古老形式,并且所有的UNIX系统都提供此通信机制。但管道有两个局限性:历史上,它们是半双工的,现在某些系... 阅读全文

[置顶]Linux read系统调用

2015-06-19 10:07 by 麦子熟了, 830 阅读, 0 推荐, 收藏, 编辑
摘要:最近一个项目做了一个模拟u盘的设备,但是在read虚拟u盘的内容时必须每次都从磁盘内读取,而不是从系统的cache中读取,由于这个问题,就查资料看了下read的系统调用,以及文件系统的一些内容。由于文件系统涉及面较广,例如虚拟文件系统(VFS),页缓存,块缓存,数据同步等内容,不可能全部分析到位,这... 阅读全文

[置顶]linux设备驱动第四篇:以oops信息定位代码行为例谈驱动调试方法

2015-04-02 07:48 by 麦子熟了, 2938 阅读, 2 推荐, 收藏, 编辑
摘要:上一篇我们大概聊了如何写一个简单的字符设备驱动,我们不是神,写代码肯定会出现问题,我们需要在编写代码的过程中不断调试。在普通的c应用程序中,我们经常使用printf来输出信息,或者使用gdb来调试程序,那么驱动程序如何调试呢?我们知道在调试程序时经常遇到的问题就是野指针或者数组越界带来的问题,在应用... 阅读全文

[置顶]linux设备驱动第三篇:写一个简单的字符设备驱动

2015-03-28 19:16 by 麦子熟了, 2917 阅读, 1 推荐, 收藏, 编辑
摘要:在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动。本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存。下面就开始学习如何写一个简单的字符设备驱动。首先我们来分解一下字符设备驱动都有那些结构或者方法组成... 阅读全文

webkit浏览器常见开发问题

2015-04-15 23:02 by 麦子熟了, 162 阅读, 0 推荐, 收藏, 编辑
摘要:前段时间有人问我一个简单的问题,html如何创建解析的? 我讲了一大堆,什么通过DocumentLoader, CachedResourceLoader, CacheResource, ResourceLoaderScheduler, ResourceHandle这些类一步一步的完成cache查找然... 阅读全文

Bitmap那些事之内存占用计算和加载注意事项

2015-04-14 19:31 by 麦子熟了, 163 阅读, 1 推荐, 收藏, 编辑
摘要:前言:本来我是做电视应用的,但是因为公司要出手机,人员紧张,所以就抽调我去支援一下,谁叫俺是雷锋呢!我做的一个功能就是处理手机中的应用ICON,处理无非就是美化一下,重新与底板进行合成和裁剪,用到了很多Bitmap的知识。本来之前一直想写一些关于Bitmap的博客,正好这是个机会,因此Bitmap那... 阅读全文

android apk 自我保护技术-加密apk

2015-04-13 19:42 by 麦子熟了, 328 阅读, 0 推荐, 收藏, 编辑
摘要:经过了忙碌的一周终于有时间静下来写点东西了,我们继续介绍android apk防止反编译技术的另一种方法。前两篇我们讲了加壳技术(http://my.oschina.net/u/2323218/blog/393372)和运行时修改字节码(http://my.oschina.net/u/2323218... 阅读全文