![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android/Linux
hellolwl
这个作者很懒,什么都没留下…
展开
-
Linux内核bridge浅析
原文地址:http://blog.chinaunix.net/uid-20662820-id-3413865.htmlLinux网桥模型: Linux内核通过一个虚拟的网桥设备来实现桥接的,这个设备可以绑定若干个以太网接口设备,从而将它们桥接起来。如下图所示: 网桥设备br0绑定了eth0和eth1。对于网络协议栈的上层来说,只看得到br0,因为桥接是在数据转载 2013-10-15 10:47:52 · 978 阅读 · 0 评论 -
adb devices获得的设备标识
在命令行执行adb devices,你会得到连接上的设备,结果里面有每个设备的标识(serial number)。在adb的其他命令中,你可以用adb –s 来指定用某一个设备来执行命令,但是每个设备的serial number都不一样,adb是如何得到的呢?查看adb的源码后,转载 2011-07-28 13:25:37 · 8194 阅读 · 3 评论 -
Linux 2.6.11 MTD驱动情景分析
最近几天为了熟悉linux的驱动开发,我选择了其MTD驱动做了一些研究。我能找到的文章中我觉得有些部分不够细致,所以我还是自己写了一部分分析,希望对别人也能有所帮助,也做为自己的一个备忘,。蓝色文字的部分是从网络上摘录的。一个嵌入式系统经常会使用NOR flash 或NA转载 2011-08-07 17:06:29 · 794 阅读 · 0 评论 -
head.s 分析
linux/arch/arm/boot/compressed/head.S这是ARM-Linux运行的第一个文件,这些代码是一个比较独立的代码包裹器。其作用就是解压Linux内核,并将PC指针跳到内核(vmlinux)的第一条指令。Bootloader中传入到Linux中转载 2011-08-13 22:22:06 · 705 阅读 · 0 评论 -
zImage内核镜像解压过程详解
本文以linux-2.6.14内核在S3C2410平台上运行为例,讲解内核的解压过程。内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zImage是转载 2011-08-13 22:24:36 · 476 阅读 · 0 评论 -
Linux-Android启动之Init进程前传
原文地址:http://blog.csdn.net/guopeixin/article/details/5694749对Linux-Android系统的启动做了一些分析,下面的一篇文章侧重讲述Linux启动过程中函数Start_kernel()被调用之前的一些分析,同转载 2011-08-13 22:34:00 · 709 阅读 · 0 评论 -
Linux 2.6.34 内核启动详细分析
内核编译完成后会生成zImage内核镜像文件。关于bootloader加载zImage到内核,并且跳转到zImage开始地址运行zImage的过程,相信大家都很容易理解。但对于zImage是如何解压的过程,就不是那么好理解了。本文将结合部分关键代码,讲解zImage的转载 2011-08-13 22:38:09 · 949 阅读 · 0 评论 -
Linux内核中的等待队列--init_waitqueue_head等
Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。在Linux2.4.21中,等待队列在源代码树include/linux/wait.h中,这是一个通过list_head连接的典型双循环链表,如下图所示。在这个链表中,有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue转载 2011-11-25 17:05:57 · 9412 阅读 · 0 评论 -
Linux内核网络源码分析——发送数据
原文地址: http://www.penna.cn/blog/?p=218UDP发送:| sys_write fs/read_write.c| sock_writev net/socket.c | sock_sendmsg net/转载 2011-12-24 11:00:15 · 1050 阅读 · 0 评论 -
file_operations流程跟踪
file_operations流程跟踪术语<br />描述符:其实就是结构体在linux可以把设备看作文件并提供了和文件一样的统一的访问接口,相信大家已经有了一<br />点的了解,其底层对设备的不同操作主要是由file_operations描述符来控制,其封装了各<br />种设备的操作方法,如:open/read/write/ioctl等等。linux中每个文件或目录都对一个名为inode的结构体,其中有一个字段i_fop就是存储文件<br />的操作方法file_operations实例对象。以下我们转载 2011-05-06 23:51:00 · 1804 阅读 · 0 评论 -
从用户态的open到内核驱动实现流程
<br />原文地址:http://www.embedu.org/Column/Column249.htm<br /> <br />作者:李强,华清远见嵌入式学院讲师。<br />问题来源:<br />在讲授Linux初级驱动的时候,我发现困惑很多同学的是不真正理解从应用层到我们自己所写的驱动层的调用过程,所以写此文章来大概描述。<br />首先我们知道,在我们目前的Linux系统中,我们大概共约300左右个系统调用,其中syscall_table.S列出了所有的系统调用表。<br />在本文件中记录了所有转载 2011-05-07 00:30:00 · 853 阅读 · 0 评论 -
Linux kernel printk的分析
这是网上找到的别人的文章,写的不错,对printk的原理以及与之相关的console driver描述的还是很清楚的,转贴过来收藏记得在编译linux内核make menuconfig的时候设定输出信息到console,要修改CONFIG_CMDLINE的内容,但是自始至终也没搞懂为何这样设置就可以把打印信息从串口输出呢? 带着这个疑问,我查看了linux的pr转载 2011-06-04 09:27:00 · 1364 阅读 · 0 评论 -
Android移植之WIFI
1.前言<br /> 硬件平台:marvel 310<br /> 软件平台:maemo4<br /> 内核:2.6.28(经过marvel的移植)<br />2.移植思想<br />1, WIFI模块本身和cpu之间的接口;<br /> 我们的模块和cpu之间的接口是sdio的,也就是说必须要先保证SDIO本身是工作的;<br />2, WIFI模块本身的上电时序;<br /> 模块都有它自己的规律,所以必须要根据spec了解它本身的上电过程,严格遵守转载 2011-04-21 09:05:00 · 855 阅读 · 0 评论 -
gpio分析
原文地址:http://blog.csdn.net/ffilman/archive/2009/05/24/4212307.aspx 针对该gpio.c的硬件手册是SPRUE25.pdf,可到TI的网站(www.ti.com)上下载,或直接在谷歌里搜索。以下是两个文件gpio.c和gpio.h的浅析。gpio.c/* * TI DaVinc转载 2011-06-20 09:08:00 · 762 阅读 · 0 评论 -
Linux MMC/SD/SDIO体系结构
有关MMC/SD/SDIO相关的知识这里就不多讲了,请参考相关资料。这里主要涉及Linux下MMC相关内容。内核版本(2.6.36)首先说一下Linux相关MMC的代码分布,主要有两个目录,一个头文件目录和一个源代码目录。分别位置如下:include/linux/mmcdrivers/mmcstruct mmc_bus_ops mmc_ops /*MMC卡总线操作函数,主要是在电源管理方面*/struct mmc_bus_ops mmc_sd_op /*SD卡总线操作函数,主要是在电源管理方面*/struc转载 2011-04-25 22:43:00 · 1153 阅读 · 0 评论 -
Linux 的 Virtual Memory Areas(VMA):基本概念介紹
由 user process 角度來說明的話,VMA 是 user process 裡一段 virtual address space 區塊;virtual address space 是連續的記憶體空間,當然 VMA 也會是連續的空間。VMA 對 Linux 的主要好處是,可以記憶體的使用更有效率,並且更容易管理 user pr转载 2011-06-19 20:40:00 · 1120 阅读 · 0 评论 -
Linux设备模型之tty驱动架构分析
<br />原文地址:http://blogold.chinaunix.net/u1/51562/showart_1092220.html<br /> 一:前言Tty这个名称源于电传打字节的简称。在linux表示各种终端。终端通常都跟硬件相对应。比如对应于输入设备键盘鼠标。输出设备显示器的控制终端和串口终端.也有对应于不存在设备的pty驱动。在如此众多的终端模型之中,linux是怎么将它们统一建模的呢?这就是我们今天要讨论的问题.二:tty驱动概貌Tty架构如下所示:如上图所示,用户空间主要是通过设备文转载 2011-05-04 09:55:00 · 796 阅读 · 0 评论 -
linux设备模型之uart驱动架构分析
<br />原文地址:http://ericxiao.cublog.cn<br /> 一:前言接着前面的终端控制台分析,接下来分析serial的驱动.在linux中,serial也对应着终端,通常被称为串口终端.在shell上,我们看到的/dev/ttyS*就是串口终端所对应的设备节点.在分析具体的serial驱动之前.有必要先分析uart驱动架构.uart是Universal Asynchronous Receiver and Transmitter的缩写.翻译成中文即为”通用异步收发器”.它是串口设备驱转载 2011-05-03 17:08:00 · 1406 阅读 · 0 评论 -
linux蓝牙驱动代码阅读笔记
<br />昨天看了一下介绍蓝牙协议文档,今天索性对照看了看kernel里的代码(bluez),这里记点笔记,还是继承了老毛病,只关注整体流程而忽略细节,先了解个大概,等真正需要时再仔细分析。<br /><br />net/hci_core.c<br /><br />HCI在主机端的驱动主要是为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如像UART、USB和PC Card等等。hci_core.c相当于一个框架,转载 2011-05-06 23:53:00 · 880 阅读 · 0 评论 -
android的tone音源代码DTMF双音频何快速计算正弦波
android的tone音正弦波快速产生算法源代码DTMF双音频和如何快速计算正弦波假如我们需要产生取样频率为8KHz的440Hz的正弦波,那么a1=2*cos(2*pi*440/8000)=1.8817615,而y[1]=sin(2*pi*440/8000)=0.33873792。来拆开解读一下:[luther.gliethttp-20110419]{{{1. 其中2*p转载 2012-01-30 12:31:35 · 3028 阅读 · 1 评论 -
Linux ARP协议源码解析
arp_tbl是一个类型为struct neigh_table的全局变量,它是一个ARP的缓存表,也称为邻居表。协议栈通过ARP协议获取到的网络上邻居主机的IP地址与MAC地址的对应关系都会保存在这个表中,以备下次与邻居通讯时使用,同时,ARP模块自身也会提供一套相应的机制来更新和维护这个邻居表。下面逐个分析arp_tbl中的重要成员数据与函数。 entry_size,key_le转载 2012-02-08 21:25:01 · 3339 阅读 · 0 评论 -
SD卡分析一
本文先介绍了一下MMC 的基本框架结构,然后采用自底向上的方法来分析整个MMC 层是如何共同作用的。阅读时请结合参考资料1和2.参考资料:1.SD Memory Card Specifications / Part 1. Physical Layer Specification; Version 1.0 2.LDD3 CHAPTER-16 BLOCK DEVICE3. http:转载 2013-04-17 22:11:40 · 704 阅读 · 0 评论 -
SD卡分析二
4、CORE层分析:CORE层完成了不同协议和规范的实现,并为HOST层的驱动提供了接口函数,在HOST层我们曾经调用的两个函数:mmc_alloc_host(sizeof(struct s3cmci_host), &pdev->dev);mmc_add_host(mmc );我 们就从这两个函数入手,来分析CORE层与HOST层是如何交互的。先看mmc_alloc_host函转载 2013-04-17 22:12:41 · 786 阅读 · 0 评论 -
SD卡分析三
4: CARD层分析:因为这些记 忆卡都是块设备,当然需要提供块设备的驱动程序,这部分就是实现了将你的SD卡如何实现为块设备的。先看block.C中的probe函数MMC 块设备用如下结构表示:struct mmc_blk_data { spinlock_t lock; struct gendisk *disk; struct mmc_queu转载 2013-04-17 22:13:26 · 866 阅读 · 0 评论 -
浅析wlan驱动和sd卡硬件绑定的简单流程
struct mmc_card *mmc_alloc_card(struct mmc_host *host){ struct mmc_card *card; card = kzalloc(sizeof(struct mmc_card), GFP_KERNEL); if (!card) return ERR_PTR(-ENOMEM);转载 2013-04-17 22:24:09 · 753 阅读 · 0 评论 -
wifi详解(二)
1 Wifi模块解析和启动流程1.1 框架分析WIFI整体框架如图所示:首先,用户程序使用WifiManager类来管理Wifi模块,它能够获得Wifi模块的状态,配置和控制Wifi模块,而所有这些操作都要依赖 Wifiservice类来实现。 WifiService和WifiMonitor类是Wifi框架的核心,如图所示。下面先来看转载 2013-06-17 19:51:44 · 891 阅读 · 0 评论 -
wifi详解(三)
1 WLAN驱动结构介绍1.1 SDIO驱动在drivers/mmc下面是mmc卡,SD卡和SDIO卡驱动部分,其中包括host驱动,card驱动和core部分,由于网络接口卡挂接在SDIO总线上,所以在此之前我们先看一下SDIO的驱动结构。其驱动在drivers/mmc目录下的结构为: |-- mmc| |-- card转载 2013-06-17 19:53:23 · 2155 阅读 · 0 评论 -
sdio架构初解
原文地址:http://blog.csdn.net/zoe6553/article/details/6588306一.前言SD卡的大名是耳熟能详,但是SDIO总线确是不为人解,不过说起他的近亲SPI就知道了。我们这里主要是理解SDIO总线,并不去理解SPI总线。也许大家会畏惧其庞大的代码,其实我们并不需要详细理解其具体的实现,我们需要理解其架构。二.主机(host)转载 2013-07-02 08:08:49 · 1012 阅读 · 0 评论 -
基于linux-2.6.38.8内核的wifi驱动分析
原文地址:http://blog.csdn.net/wh_19910525/article/details/7392518//参考给一些前辈们的文章1、sdio接口层解析SDIO总线 SDIO总线和USB总线类似,SDIO也有两端,其中一端是HOST端,另一端是device端。所有的通信都是由HOST端发送命令开始的,Device端只要能解析命令,就可以相互转载 2013-04-15 21:02:38 · 656 阅读 · 0 评论 -
wpa_supplicant 笔记
原文地址:http://hi.baidu.com/leran0222/item/a4b33b77923ecd44ef1e53fc来自于wpa_supplicant-devel文档2、代码结构核心功能、通用辅助功能、加密功能、TLS库、配置、控制接口、WPA提供者、EAP点、EAPOL提供、窗口端口和测试程序。wpa_supplicant的实现被分成几个独立的模块。核心代码功能包转载 2013-04-16 13:23:50 · 1620 阅读 · 0 评论 -
Linux tasklet 分析笔记
原文地址:http://blog.csdn.net/chengqianyun2002/article/details/1607005Chapter 1:驱动程序在初始化时,通过函数task_init建立一个tasklet,然后调用函数tasklet_schedule将这个tasklet放在 tasklet_vec链表的头部,并唤醒后台线程ksoftirqd。当后台线程ksoftir转载 2013-04-09 23:22:09 · 541 阅读 · 0 评论 -
为Android应用程序读取/dev下设备而提权(一)
倘若应用程序需要对/dev/xxx进行读写操作,就需要提升其权限。提权方法不唯一,需要根据具体需求情况而选择。归根结底,终究都落到chmod 777 /dev/xxx 上,不同的是,chmod操作被执行在何时何地,在此做个分析总结。 内核启动后会执行/system/init,传说中的系统1号进程,init程序起初的任务是初始化,包括各种mkdir来构建文件系统,得到硬件信息建立设转载 2012-02-23 14:18:01 · 808 阅读 · 0 评论 -
Linux设备驱动之I2C架构分析
一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员 的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而 I2C 是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知识,这里不转载 2012-06-28 15:27:14 · 576 阅读 · 0 评论 -
iwpriv 解析
原文地址:http://blog.csdn.net/wanggongzhen1983/article/details/5330211iwpriv是处理下面的wlan_private_args的所有扩展命令,iwpriv的实现上,是这样的,=>main=>set_private=>iw_get_priv_info获取wireless网卡所能处理的所有wlan_priv转载 2013-04-02 10:53:58 · 2094 阅读 · 0 评论 -
跟一下wpa_supplicant(2) wifi enable
原文地址:http://blog.chinaunix.net/uid-20514606-id-3259410.html在wifi setting 中 check enanble 开始继续1. 收到MESSAGE_ENABLE_WIFIsetWifiEnabledBlocking(wifiService.java) => mWifiStateTracker.loadDrive转载 2013-03-25 20:36:32 · 1154 阅读 · 0 评论 -
跟一下wpa_supplicant(3-2) connect AP
原文地址:http://blog.chinaunix.net/uid-20514606-id-3260320.html接前面(3-1)继续: 5. 接分支4.authenticate response 来了和前面一样:wpa_driver_nl80211_event_receive到=> process_event 收到 NL80211_CMD_AUTHEN转载 2013-03-25 20:42:34 · 1508 阅读 · 0 评论 -
跟一下wpa_supplicant(1) 初始化
原文地址: http://blog.chinaunix.net/uid-20514606-id-3259402.html一切从 main.c 开始: (=>表示第1级, 那么==>表示下一级,类推)os_program_init => 参数解析& 获取=> wpa_supplicant_init(¶ms) ==> eap_register_methods /* 注册转载 2013-03-25 20:27:05 · 1293 阅读 · 0 评论 -
wpa_supplicant软件架构分析
原文地址:http://blog.csdn.net/fxfzz/article/details/61764141. 启动命令wpa supplicant 在启动时,启动命令可以带有很多参数,目前我们的启动命令如下:wpa_supplicant /system/bin/wpa_supplicant -Dwext -ieth0 -c/data/wifi/wpa_supplicant转载 2013-03-25 20:45:15 · 750 阅读 · 0 评论 -
跟一下wpa_supplicant(3-1) connect AP
原文地址:http://blog.chinaunix.net/uid-20514606-id-3260316.htmlWPA-PSK连接从packages\apps\Settings\src\com\android\settings\wifi\WifiSettings.java 和 WifiDialog.java 开始1.如果你点中某个AP=> onClick执行 (Wi转载 2013-03-25 20:39:44 · 1218 阅读 · 0 评论 -
Android GPS架构分析(一)
<br />原文地址:http://hi.baidu.com/%CB%EF%CC%EF%BB%AA/blog/item/0f154420043cb826c995593e.html<br /> <br /> 介绍完了主体代码结构以及重要的数据结构后,下面来看看gps的定位服务(LocationManager)的启动过程。我总是喜欢追本溯源地从源头去认识事物。因为“人之初,性本善”,从事物的本性去认识事物。<br />LocationManager 这项服务是在SystemServer.java 中启动的,也就转载 2011-04-06 21:54:00 · 2152 阅读 · 0 评论