<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[caotaiqiang的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/caotaiqiang</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; caotaiqiang]]></copyright><item><title><![CDATA[Android上层启动过程的几个关键点]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767663</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767663</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 15:02:37 +0800</pubDate><description><![CDATA[在前面我简单的描述了Android的启动过程http://blog.youkuaiyun.com/codectq/article/details/7383231，但终究是不够完善。

        现在在工程中遇到了实际的问题，反过来阅读下代码，再重新审视一下在kernel启动之后的ANDROID启动过程。

        在frameworks/base/services/java/com/an]]></description><category></category></item><item><title><![CDATA[文件系统简介]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767647</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767647</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 15:00:46 +0800</pubDate><description><![CDATA[在简单的介绍文件系统之前一定要先简单的说明一下物理的存储介质。为什么要介绍物理存储介质呢？

      主要是为了说明“everything is files”。好吧……既然大家知道一切皆文件了，我们在此就不介绍物理存储介质了。但是还是希望大家能够对物理的介质进行读写操作，真正的感受下，读取文件系统第一个分区的第一个扇区的感觉。这样便于我们理解文件系统的概念。

     首先我们查看下]]></description><category></category></item><item><title><![CDATA[中断处理--上下半部机制]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767641</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767641</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 15:00:16 +0800</pubDate><description><![CDATA[首先需要了解一下中断的概念：一个“中断”仅仅是一个信号，当硬件需要获得处理器对它的关注时，就可以发送这个信号。内核维护了一个中断信号线的注册表，该注册表类似于I/O端口的注册表。

      模块在使用中断前要先请求一个中断通道（或中断请求IRQ），然后在使用后释放该通道。用到的API就是request_irq()以及free_irq()。注意在调用request_irq()和free_ir]]></description><category></category></item><item><title><![CDATA[触摸屏相关的一点拙见--以及android系统中linux内核部分的编译]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767635</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767635</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:59:51 +0800</pubDate><description><![CDATA[今天一个小项目终于尘埃落定，虽然本人在其中从事的工作很简单，但是还是颇有一些心得想跟大家分享一下。

      首先我们需要了解一下linux内核中驱动为何能被编译进内核，在这里有两个很重要的文件不得不提：Kconfig和Makefile。其中Kconfig是分布在各目录的，这些Kconfig文件构成了一个分布式的内核配置数据库，每个Kconfig分别描述了所属目录源文档相关的内核配置菜单，]]></description><category></category></item><item><title><![CDATA[返璞归真系列——————微内核与宏内核]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767621</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767621</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:59:12 +0800</pubDate><description><![CDATA[我发现我一直是一个后知后觉的人。不知道是心里的浮躁还是自己脑子小装不下那么多知识。不过幸好我还是一个善于思考的人。现在重新想到了要区分一下这两个概念。也不至于稀里糊涂的过着。了解了如下的问题之后更有利于对linux架构的认识。

         在通常情况下，我们会想到把凡是能够为进程服务的模块就应该放在操作系统的内核中。例如：文件管理模块是为进程服务的，所以放在内核中；各种驱动模块是为进程]]></description><category></category></item><item><title><![CDATA[什么是真正的实时操作系统]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767615</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767615</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:58:39 +0800</pubDate><description><![CDATA[http://club.topsage.com/thread-513248-1-1.html什么是真正的实时操作系统
http://club.topsage.com/thread-513248-1-1.html]]></description><category></category></item><item><title><![CDATA[编译过程简介]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767603</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767603</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:57:58 +0800</pubDate><description><![CDATA[之前做了一次在Android上的移植，后来多次被人问到移植的相关问题。正好做完那个项目很久了也没有认真的把编译的知识进行单纯的整理。有很多问题没有总结在此，是因为我没遇到。有些知识还是需要用到的时候再学也为时未晚的。好了不罗嗦了，开始对编译的过程进行简单的总结吧。

        linux应用程序编译时，需要交叉编译GCC，它依赖于所运行系统的内核、glibc库等。针对ARM处理器平台建立]]></description><category></category></item><item><title><![CDATA[Android 4.0 消息处理的流程之我见]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767589</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767589</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:57:02 +0800</pubDate><description><![CDATA[最近本人想通过截获触摸屏的消息，从来能够用来进行相关的操作。但是目前的Android系统并不能够提供对这些事件的支持，因此本人采取了围魏救赵的方式试图对此问题能够进行很好的解决。

         前面本人已经撰文描述了消息的相关知识。已经比较清晰的交代了消息的一般处理流程包括：从产生到消息的获取以及消息的处理过程。毕竟还是存在一些特殊的消息需要进行特殊的处理。

        输入消]]></description><category></category></item><item><title><![CDATA[Android 启动过程简介]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767587</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767587</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:56:37 +0800</pubDate><description><![CDATA[从某个方面来讲，我们可以将安卓看成是LINUX之上的一种XWINDOW。所以系统启动的过程难免要先从linux kernel开始讲起。当然linux kernel的启动不是我们这里需要讨论的问题。

       本人最近试图在framework层添加一个自己的service，之前研究了一下但还不是特别清楚。故以此理清思路。也希望能够给同样在研究这部分的朋友好的提示。由于Android系统非常]]></description><category></category></item><item><title><![CDATA[binder介绍——JNI的架构和实现]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767573</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767573</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:55:58 +0800</pubDate><description><![CDATA[首先介绍一下JNI设计的目的：

JNI是Java Native Interface的缩写：

    The standard Java class library may not support the platform-dependent features needed by your application.

   You may already have a library]]></description><category></category></item><item><title><![CDATA[Android frameworks层启动分析]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767557</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767557</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:54:58 +0800</pubDate><description><![CDATA[由于本人对这部分知识的学习还不深入，但是愿意拿出仅有的一点了解来分享，希望大家能给点好的建议。
众所周知，Android平台是Java、C、C++等多种混合语言写成的，我们在使用Android SDK提供的framework层的API来进行应用开发时通常调用的是java方法，而实际上这些java API很多时候只是一个入口，方法功能的真正实现是通过JNI调用到framework层的native方]]></description><category></category></item><item><title><![CDATA[上报和分发消息的流程]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767541</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767541</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:53:54 +0800</pubDate><description><![CDATA[概论

        Android系统中，大体上分为三个层次kernel、framework、app层。对于kernel层，我们主要关心的是驱动，驱动层上报的事件都是原始数据。这些原始数据通过相应的机制上传到framework层的frameworks\base\service\input文件夹下的EventHub文件中对设备进行扫描区分具体的设备，并交由InputReader.cpp进行对]]></description><category></category></item><item><title><![CDATA[AIDL简介]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767531</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767531</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:53:18 +0800</pubDate><description><![CDATA[通常每个应用程序都在他自己的进程内运行，但有时需要在进程之间传递对象（IPC通信）。此时可以通过应用程序UI的方式写一个运行在不同进程中的service。在Android平台中，一个进程通常不能访问其他进程中的内存区域。所以它们需要把对象拆分成操作系统能理解的简单形式，以便伪装成对象跨边界访问。而要完成这些需要AIDL机制。

        AIDL（Android接口描述语言）是一个IDL]]></description><category></category></item><item><title><![CDATA[WindowManagerService处理消息的时机]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767513</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767513</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:51:58 +0800</pubDate><description><![CDATA[目前对于用户的输入消息分析的文章大都是划分为两种类型，一种是key消息，另一种是motion消息。

        对于motion消息，Android原生系统中对其处理都是直接上报的。WindowManagerService没有对其做过多的处理。而对于key消息，则会首先回调WmS中的Key消息处理函数，在WindowManagerService中不处理该消息时才把消息发往客户窗口中。在一]]></description><category></category></item><item><title><![CDATA[Android 4.0按键事件以及电源管理流程分析]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767499</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767499</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:50:55 +0800</pubDate><description><![CDATA[Android是集成了linux内核以及frameworks层的东西而形成为os，其中主要包含了三种语言的编程，主要是c、c++以及java。因此他们之间的通信问题就显得尤为突出。

JAVA与c的通讯主要是通过JNI机制进行的。为了提高效率，在上层都使用java进行编程。因此在阅读源代码的过程中，就需要区分给用户使用的文件，系统内部使用的文件，以及与驱动打交道的文件。

Android获]]></description><category></category></item><item><title><![CDATA[库简述----曹太强学库]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767477</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767477</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:49:26 +0800</pubDate><description><![CDATA[库用于将相似的函数打包在一个单元中，然后这些单元就为其他开发人员所共享，并因此有了模块化编程这种说法。Linux支持两种类型的库，每一种库都有各自的优缺点。静态（static）库包含在编译时静态绑定到一个程序的函数。动态（shared）库则不同，它是在加载应用程序时被加载的，而且它与应用程序是在运行时绑定的。

使用动态（shared）库的方法有两种：运行时动态链接库，动态加载库并在程序控制之]]></description><category></category></item><item><title><![CDATA[NTFS-3G学习两周半--曹太强学移植系列]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767471</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767471</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:48:49 +0800</pubDate><description><![CDATA[理论的学习总是很必要的，但是实际的操作也是不可或缺的，这也许就是两次飞越吧。

在昨天还认为很正确的理论研究，在今天下午的实验中变得一无是处。之前第一篇中不屑的FUSE的运用，目前看来变得很有用处。

下面先简单介绍下整个文件系统的挂载过程。文件系统的挂载分为两个部分。首先是驱动的注册，其次是具体物理设备的mount。在2.4内核中的super_block中维护这一个文件系统的union，]]></description><category></category></item><item><title><![CDATA[文件系统扫盲中……]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767437</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767437</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:45:27 +0800</pubDate><description><![CDATA[上周通过对文件系统的学习，发现理论和实践结合的重要性，在这方面还有很大的欠缺，“学而不思则罔，思而不学则殆”。以此句与君共勉！

首先，在LINUX的文件系统中有个很重要的概念就是VFS（有两种翻译方式），正是这种虚拟技术使我们在文件操作中更加方便。通过虚拟文件系统，我们可以将各种不同方式的物理文件系统的差异屏蔽掉，从而使用一些“标准”的接口来完成文件系统的操作。

其次，文件的mount]]></description><category></category></item><item><title><![CDATA[曹太强学NTFS-3G移植-------------mount命令学习（1）]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767423</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767423</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:44:08 +0800</pubDate><description><![CDATA[最近由于工作的原因开始学习NTFS-3G的内容，NTFS-3G是为了解决非Windows用户读写NTFS格式的磁盘的问题，NTFS-3G是一个支持多种平台的NTFS读写的开源项目。

    但是，目前将NTFS的读写真正用到Android平台上的介绍文章鄙人是没有发现，因此，希望能够通过个人的学习过程，给大家一些好的提示。欢迎拍砖。

     目前，网上流传的NTFS-3G的移植基本上]]></description><category></category></item><item><title><![CDATA[Android4.0 多点触摸屏新手入门指南]]></title><link>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767395</link><guid>https://blog.youkuaiyun.com/caotaiqiang/article/details/9767395</guid><author>caotaiqiang</author><pubDate>Mon, 05 Aug 2013 14:42:40 +0800</pubDate><description><![CDATA[1  前言

        首先，说一段废话。优快云注册有一段时间了，但是一直没有在上面发表博客，之前发布在其他博客上的文章，由于密码忘记了，所以也无法找回了。好，开始进入正题。
本人也是初学者，并且入行不久。所以应该更适合初学的人学习。



2  通观全局

        我们将Android分为三个部分，kernel、framework、app三个部分。由于软件都是跑]]></description><category></category></item></channel></rss>