自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (2)
  • 收藏
  • 关注

转载 linux用户态和内核态通信之netlink机制

这是一篇学习笔记,主要是对《Linux 系统内核空间与用户空间通信的实现与分析》中的源码imp2的分析。其中的源码,可以到以下URL下载: http://www-128.ibm.com/developerworks/cn/linux/l-netlink/imp2.tar.gz [size=3]参考文档[/size] 《Linux 系统内核空间与用户空间通信的实现与分析》 陈鑫 

2014-06-30 14:40:07 759

转载 Linux Netlink通信机制详解

前面有一篇文章其实已经介绍过Netlink方面的知识,还有一个内核和用户空间之间的一个交互例子,这篇文章主要是更细节和基础的知识介绍!Netlink 是一种特殊的 socket,它是 Linux 所特有的,由于传送的消息是暂存在socket接收缓存中,并不被接收者立即处理,所以netlink是一种异步通信机制。 系统调用和ioctl 则是同步通信机制。用户空间进程可以通过标准socket 

2014-06-30 14:38:43 650

转载 linux的netlink机制

netlink作为一种用户空间和内核空间通信的机制已经有一定年头了,它不光为了内核和用户通信,还可以作为IPC机制进行进程间通信。其实netlink定义了一个框架,人们可以基于这个框架用它来做可以做的任何事情,linux中不乏这些类似的好的框架。它们的共同点就是内核并不管它们能做什么,然而它们真的很强大,往往可以做到的事情很多,这就是内核不问策略只管实现机制,所有策略让用户实现,netlink框架

2014-06-30 14:29:21 556

转载 linux驱动学习之ioctl接口

这里先用例子介绍一下ioctrl接口的使用, 应用层的ioctl函数传入的cmd和arg参数会直接传入驱动层的ioctl接口,ioctl接口的命令有一定规范详细查看ioctl-number.txt文件,这里命令的定义不在规范内,先看下面测试的例子,驱动只实现ioctrl接口并使用ioctl修改和读取内核中的一个整型参数为例,使用两个不同方式读取(值传递和地址传递)。   应用程序测试代

2014-06-30 14:03:03 909

转载 linux netlink机制介绍与实例

开发和维护内核是一件很繁杂的工作,因此,只有那些最重要或者与系统性能息息相关的代码才将其安排在内核中。其它程序,比如GUI,管理以及控制部分的代码,一般都会作为用户态程序。在linux系统中,把系统的某个特性分割成在内核中和在用户空间中分别实现一部分的做法是很常见的(比如linux系统的防火墙就分成了内核态的Netfilter和用户态的iptables)。然而,内核程序与用户态的程序又是怎样行通讯

2014-06-30 13:57:27 909

转载 socket编程原理

1、问题的引入  1) 普通的I/O操作过程:UNIX系统的I/O命令集,是从Maltics和早期系统中的命令演变出来的,其模式为打开一读/写一关闭(open-write-read-close)。在一个用户进程进行I/O操作时,它首先调用“打开”获得对指定文件或设备的使用权,并返回称为文件描述符的整型数,以描述用户在打开的文件或设备上进行I/O操作的进程。然后这个用户进程多次调用“读/

2014-06-30 11:36:23 567

转载 android中wifi原理及流程分析(很经典)

在网上找的一篇好文章,分析的很详细,自己再加了些东西,图片有点大,不能完全显示,点击图像拖动鼠标直接查看图像。wifi相关的文件位置:WIFI Settings应用程序位于       packages/apps/Settings/src/com/android/settings/wifi/JAVA部分:        frameworks/base/s

2014-06-26 19:24:49 861

转载 Softap热点原理分析

Android4.1.2设置中开关:packages/apps/Settings/src/com/android/settings/TetherSettings.java|----private void startTethering()|     |----mWifiApEnabler.setSoftapEnabled(true);

2014-06-26 19:19:02 868

转载 802.11(wifi)的MAC层功能

MAC层是802.11的主要功能部分。上层应用通过调用MAC层提供的接口原语调用MAC层的功能。     MAC一共向上提供了2大类接口原语,共30种。数据(1)和管理(29)。数据部分就是提供普通数据包的收发接口,管理部分是主要功能部分,例如发起 认证、连接、信道扫描等其它所有管理功能,如下表所示:(并非所有的原语都是可调用的,一部分是indication形式的向上通知。有request

2014-06-26 19:16:07 827

转载 wifi详解(二)

目录[-]1        Wifi模块解析和启动流程1.1      框架分析1.2      Wifi启动流程1        Wifi模块解析和启动流程1.1      框架分析WIFI整体框架如图所示:首先,用户程序使用WifiManager类来管理Wifi模块,它能够获得Wifi模块的状态,配置和控制Wifi模块,而所有这些操作

2014-06-26 19:10:22 633

转载 wifi详解(三)

1        WLAN驱动结构介绍1.1      SDIO驱动1.2      Boardcom无线通讯芯片1.2.1       概述1.2.2       源码1.3      详细接口及代码分析1.3.1      WIFI驱动流程分析1.3.2       WIFI设备注册流程1.3.2.1        加载SDIO host驱动模块1.3.2.

2014-06-26 19:07:56 672

转载 wifi详解(一)

目录[-]1        WLAN技术2        802.11协议简述2.1.1       概述3        802.11四种主要物理组件3.1      工作站(Station)3.2      接入点(Access Point)3.3      无线媒介(Wireless Medium)3.4      分布式系统(Distribution

2014-06-26 19:02:09 853

转载 wifi详解(四)

IOCTL的调用逻辑之所以要分析这个,是因为上层wpa_supplicant和WIFI驱动打交道的方式,多半是通过ioctl的方式进行的,所以看看它的调用逻辑(这里只列出其主要的调用逻辑):       上面便是用户ioctl调用的流程图,它最终分为两条线即有两种支持,选择那一条或两条都选(个人感觉最好选第2条线,因为它最后也是会调用到相应的函数的,而且还有其它更多的命

2014-06-26 18:46:45 814

转载 android——wifi系统架构

1. 系统架构        Android WiFi系统引入了wpa_supplicant,它的整个WiFi系统以wpa_supplicant为核心来定义上层用户接口和下层驱动接口。整个WiFi系统架构如下图所示:   一切尽在上图中,下面将对每部分进行详细分析。1.1 WifiService        由SystemServer启动的时候生成的C

2014-06-26 17:01:22 771

转载 Android平台开发-WIFI 驱动移植 -- 详细-不错

一、WIFI的基本架构(代码路径)    1、WIFI Settings应用程序:       packages/apps/Settings/src/com/android/settings/wifi/    2、JAVA部分(framework):         frameworks/base/services/java/com/android/server

2014-06-26 16:53:17 932

转载 Wireless Tools for Linux

PresentationThe Linux Wireless Extension and the Wireless Tools are an OpenSource project sponsored by Hewlett Packard (through mycontribution) since 1996, and build with the contribution of man

2014-06-26 15:57:40 1286

转载 5wpa_supplicant程序 --详解

目前可以使用wireless-tools 或wpa_supplicant工具来配置无线网络。请记住重要的一点是,对无线网络的配置是全局性的,而非针对具体的接口。    wpa_supplicant是一个较好的选择,但缺点是它不支持所有的驱动。请浏览wpa_supplicant网站获得它所支持的驱动列表。另外,wpa_supplicant目前只能连接到那些你已经配置好ESSID的无线网络

2014-06-26 15:30:52 896

转载 android 平台USB wifi驱动移植及使用 SDIOwifi

但是命令发到wpa_supplicant后的流程网上提到的资料就非常少了,不过由于wpa_supplicant是一个标准的开源项目,已经被移植到很多平台上,它中间的过程我暂时还没有去细看。比较关心的是wpa_supplicant在 接收 到上层的命令后 是怎么将命令发给DRIVER的,DRIVER在接收到命令后的解析的动作 以及之后 调用驱动功能函数 的流程以及驱动对寄存器控制的细节。

2014-06-26 15:23:48 1034

转载 ioctl()函数详解分类

我这里说的ioctl函数是指驱动程序里的,因为我不知道还有没有别的场合用到了它,所以就规定了我们讨论的范围。写这篇文章是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下: in

2014-06-26 15:09:15 585

转载 系统启动后的 wifi 加载过程

============================ Wifi 启动代码流程 ====================1、系统启动 首先加载init.rc,这个文件 会加载所有service,init是linux启动的 第一个 用户空间 的应用(属于linux进程,不属于Android应用)。2、init.rc里有以下这句话:Service wpa_supp

2014-06-26 14:35:59 785

转载 Porting WiFi drivers to Android

写的非常好。原文在:http://blog.linuxconsulting.ro/2010/04/porting-wifi-drivers-to-android.html。咱就缺这。Update(19/05/2011): Verify validity against Gingerbread.Update (11/08/2010): Updated patch to fix

2014-06-25 14:26:19 806

转载 iptables的相关概念和数据包的流程

iptables 相关概念 匹配(match):符合指定的条件,比如指定的 IP 地址和端口。 丢弃(drop):当一个包到达时,简单地丢弃,不做其它任何处理。 接受(accept):和丢弃相反,接受这个包,让这个包通过。 拒绝(reject):和丢弃相似,但它还会向发送这个包的源主机发送错误消息。这个错误消息可以指定,也可以自动产生。 目标(target):指定的动作,说

2014-06-24 12:27:03 690

转载 Android 4.1 Netd详细分析(六)DnsProxyListener

在前面的几篇中我们从 main 函数入手,主要分析了 CommandListener + Netlinkmanager 两部分共同组成的可实现与 Kernel 层、Framework 层通信,并完成一套完整的功能系统。并且在文中提及到另外两个部分,DnsProxyListener 和 MDnsSdListener。顾名思义两者都是与 DNS 相关。以下是 main函数中提及到两者的部分。 

2014-06-23 18:39:37 1845

转载 Android 4.1 Netd详细分析(五)代码分析3

上一篇我们按照函数的调用流程,完成了由NetlinkManager,NetlinkHandler,NetlinkListener,SocketListener组成的,从kernel到framework的单项消息通路。主要是通过内部的socket实现的通信。通过设置socket监听过滤属性,来接收kernel发出的event,(其中kernel发出的event部分不用了解,可以理解为是自发的)。并通

2014-06-23 18:38:37 895

转载 Android 4.1 Netd详细分析(四)代码分析2

我们按照main函数代码的执行顺序,首先实例化NetlinkManager。接下来代码如下。[cpp] view plaincopy   if (!(nm = NetlinkManager::Instance())) {//实例化对象nm         ALOGE("Unable to create NetlinkManager");         exit(1);

2014-06-23 18:29:20 926

转载 Android 4.1 Netd详细分析(三)代码分析1

接下来开始从代码分析,按照从下至上的顺序来分析,从native层向framework层过渡,Android的各个层之间严格按照软件工程原理的低耦合要求.[cpp] view plaincopy#include   #include   #include   #include   #include   #include   #include   #include 

2014-06-23 18:20:14 954

转载 Android 4.1 Netd详细分析(二)源文件/模块/基础类统领

这篇粗略介绍-Netd文件夹下面的源文件/模块的基本功能,和主要类的组织关系。一、文件构成Netd文件下的源文件模块~组织以及基本实现功能:======================================================================Android.mk                                        

2014-06-23 18:07:31 913

转载 Android 4.1 Netd详细分析(一)概述与应用实例

一.概述      所谓 Netd 就是Network Daemon 的缩写,表示Network守护进程,类似的命名还有很多,例如 Vold(Volumn Deamon),Rild(Radio Interface Layer Deamon)      Netd负责跟一些涉及网络的配置,操作,管理,查询等相关的功能实现,比如,例如带宽控制(Bandwidth),流量统计,带宽控制,网络地址转

2014-06-23 17:58:14 1679

转载 android 修改 system 目录下的文件

超级终端输入命令:su busybox mount可以看到 /system 挂接的分区 如 : /dev/block/mtdblock6然后重新挂接并设置为可写:busybox mount -o rw,remount -t yaffs2 /dev/block/mtdblock6  /system每次命令都要输 busybox 确实很麻烦,如何直接用 busybox 提供的命

2014-06-23 11:49:43 804

转载 Linux wext和nl80211接口简介

linux无线驱动接口简介    在分析wpa_supplicant软件linux版本下无线驱动事件和无线驱动配置代码之前,先简单介绍下linux无线驱动接口的实现技术和发展情况。    Linux无线驱动接口有两种标准接口,wext(Wireless Extensions无线扩展接口)和nl80211接口。    在linux-2.6.18版本之前,linux内核代码中并没有提供

2014-06-20 17:22:01 699

原创 Android中查找service 进程对应的源码

在init.rc中,通过init进程启动了Zygote服务:service zygote/system/bin/app_process -Xzygote /system/bin --zygote --start-system-server    socket zygote stream 666……通过上面init.rc的代码可知,Zygote服务对应程序为/system/b

2014-06-18 15:50:50 656

转载 android4.0.3 修改启动动画和开机声音

1. Linux 系统启动,出现Linux小企鹅画面(reboot)(Android 1.5及以上版本已经取消加载图片);2. Android平台启动初始化,出现"A N D R I O D"文字字样画面;3. Android平台图形系统启动,出现含闪动的ANDROID字样的动画图片(start)。现在我们说的是第三种方式(基于模拟器):android开机动画叫源码位于framew

2014-06-18 13:00:50 550

转载 roid的logcat详细用法

Android日志系统提供了记录和查看系统调试信息的功能。日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命令来查看和使用.使用logcat命令你可以用 logcat 命令来查看系统日志缓冲区的内容:[adb] logcat [] ... [] ...请查看Listingoflogcat CommandOptions ,它对logc

2014-06-17 19:16:59 631

转载 Android系统在超级终端下必会的命令大全

Android系统在超级终端下必会的命令大全(一)busyboxBusyBox 是标准 Linux 工具的一个单个可执行实现。BusyBox 包含了一些简单的工具,例如 cat 和echo,还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet。有些人将 BusyBox 称为Linux 工具里的瑞士军刀.简单的说BusyBox就好像是个大工具箱,它集成压缩

2014-06-17 19:15:41 2051

转载 Linux内核源码分析--内核启动命令行的传递过程(Linux-3.0 ARMv7)

Linux内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递一个cmdline给内核,没有具体的分析这个过程。最近在分析内核启动过程的时候,重新看了一下内核启动参数的传递过程,彻底解决一下在这方面的疑惑。   一、bo

2014-06-17 14:55:19 637

转载 Linux内核源码分析--zImage出生实录(Linux-3.0 ARMv7)

原文地址:Linux内核源码分析--zImage出生实录(Linux-3.0 ARMv7) 作者:tekkamanninja    此文为两年前为好友刘庆敏的书《嵌入式Linux开发详解--基于AT91RM9200和Linux 2.6》中帮忙写的章节的重新整理。如有雷同,纯属必然。经作者同意,将我写的部分重新整理后放入blog中。~~~~~~~~~~~~~~

2014-06-16 16:55:34 734

转载 rk3188--2.linux-3.0.36中内核参数的读取与传递

一.内核参数的获取1.1 kernel获取uboot传递的参数地址a. 在arch/arm/kernel/head.S中,内核解压后就会跳到这个文件中ldr r13, =__mmap_switched       @ address to jump to afterb. 在arch/arm/kernel/head-common.S中__INIT__mmap_swit

2014-06-16 14:28:53 2113

转载 arm-linux启动过程

1. kernel运行的史前时期和内存布局 在arm平台下,zImage.bin压缩镜像是由bootloader加载到物理内存,然后跳到zImage.bin里一段程序,它专门于将被压缩的kernel解压缩到KERNEL_RAM_PADDR开始的一段内存中,接着跳进真正的kernel去执行。该kernel的执行起点是stext函数,定义于arch/arm/kernel/head.S。

2014-06-16 00:22:10 850

转载 修改Android镜像文件 ramdisk.img、system.img、userdata.img获取root权限

首先,介绍一下这三个文件。        ramdisk.img 是你make android源代码后,生成的/out/target/product/generic/root目录下经过打包压缩而成的。        system.img 是你make android源代码后,生成的/out/target/product/generic/system目录下经过打包压缩而成的。      

2014-06-13 11:18:06 2254

转载 使用 /sys 文件系统访问 Linux 内核

sysfs 虚拟文件系统提供了一种比 proc 更为理想的访问内核数据的途径sysfs 是 Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好,它的设计

2014-06-12 15:54:20 612

Linux嵌入式系统环境搭建、内核配置、最小系统启动与设备文件分析

Linux嵌入式系统环境搭建、内核配置、最小系统启动与设备文件分析

2013-06-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除