Android kernel
趟石过河
这个作者很懒,什么都没留下…
展开
-
Linux Kernel module isnmod 时的检查以及MODVERSIONS
作者:Sam(甄峰) sam_code@hotmail.com Modues是Linux Kernel中很灵活的一种机制。利用这种机制,可以在Kernel启动后添加新的功能。 Modules在insmod 到Kernel中时,需要判断它与Kenrel是否匹配。2.4 Kernel时代,内核符号的后缀(即符号校验字符串)与KernelVersion有关,linux/modvers转载 2012-07-04 17:24:11 · 1824 阅读 · 0 评论 -
poll机制分析
本文为转载,作者——韦山东,转载地址:http://www.100ask.net/showtopic-2399.aspx 所有的系统调用,基于都可以在它的名字前加上“sys_”前缀,这就是它在内核中对应的函数。比如系统调用open、read、write、poll,与之对应的内核函数为:sys_open、sys_read、sys_write、sys_poll。一、内核框架:转载 2012-07-13 14:54:04 · 365 阅读 · 0 评论 -
内核I2C子系统详解
1.1 I2C总线知识1.1.1 I2C总线物理拓扑结构 I2C总线在物理连接上非常简单,分别由SDA(串行数据线)和SCL(串行时钟线)及上拉电阻组成。通信原理是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号进行数据的传递。在总线空闲状态时,这两根线一般被上面所接的上拉电阻拉高,保持着高电平。1.1.2 I2C总线特征 I2C总线转载 2012-07-13 14:54:30 · 1851 阅读 · 1 评论 -
内核通知链机制的原理及实现(转载)
一、概念: 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。 通知链表是一个函数链表,链表上的每一个节点都注册了一个函数。当某个事情发生时,链表上所有节点对应的函数就会被执转载 2012-07-13 14:53:28 · 363 阅读 · 0 评论 -
linux 中断
linux 中断分类: Linux/os 2007-07-23 13:38 1025人阅读 评论(0)收藏举报 中断 目 录中断软中断 硬中断 定时器代码分析 from aka硬件中断 软中断 from lisologindex 内部中断 外部中断 后续处理 软中断代码线索 2. 4软中断机转载 2012-08-01 18:44:28 · 684 阅读 · 0 评论 -
Android RTC 自下而上分析
在android中,定时alarm功能是很常用的,现在来分析下怎么实现的,这里将采用自下而上的方式讲解。arm: cortex-a8 Board: FS_S5PC100 Linux: 2.6.29 Android: 2.11、 RTC控制器1.1 feature实时时钟(RTC)单元可以通过备用电池供电,因此,即转载 2012-09-11 11:47:22 · 614 阅读 · 0 评论 -
Linux设备驱动子系统第一弹 - I2C
1. Overview2. Data Structure3. Adapter4. I2C-core5. Slave Device 1. Overview 1.1 Definition I2C Inter-Integrated Circuit SMBUS System Management Bus, the I2C subset转载 2012-09-18 14:01:47 · 481 阅读 · 0 评论 -
Linux内存初始化
注:本文中提及的ICE为一个使用Android2.1(Linux2.6.29)的项目。 在进入复杂的内存初始化过程前,我们先看看初始化后的内存分配及映射图,以便有一个整体的印象。以此印象为轴,将各个小的过程、细节串起来达到最终对内存认识的融会贯通。图1-1描绘的是ICE平台划给Linux的464M内存初始化后的结果: 图1-1:ICE初始化后的内存1.1 获取内核参数转载 2012-09-18 16:56:37 · 603 阅读 · 0 评论 -
Linux 的虚拟文件系统(强烈推荐)
1 引言 Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统 调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的 操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的操作涉及到两个不同的转载 2012-09-18 16:29:28 · 1167 阅读 · 0 评论 -
Android 内核相关内容总结
Android操作系统是由谷歌推出的一款基于Linux平台开源操作系统。在这里我们会通过Android内核的相关内容的介绍,来具体讲解这一操作系统的基本概念,以方便大家今后的使用,并加深大家对此的因印象。 在kernel子目录下存放的就是Android的Linux Kernel了, 通过和标准的Linux 2.6.25 Kernel的对比,我们可以发现,其主要增加了以下的内容: 1.转载 2012-07-08 16:41:08 · 405 阅读 · 0 评论 -
内核访问外设I/O资源的方式
我们知道默认外设I/O资源是不在Linux内核空间中的(如sram或硬件接口寄存器等),若需要访问该外设I/O资源,必须先将其地址映射到内核空间中来,然后才能在内核空间中访问它。Linux内核访问外设I/O内存资源的方式有两种:动态映射(ioremap)和静态映射(map_desc)。一、动态映射(ioremap)方式动态映射方式是大家使用了比较多的,也比较简单。即直接通过内核提供的i转载 2012-07-10 14:25:06 · 332 阅读 · 0 评论 -
module_init
在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。1.在MODULE没有定义这种情况下,module_init定义如下:#define module_init(x) __initcall(x);因为#define __ini转载 2013-01-11 17:24:12 · 491 阅读 · 0 评论 -
Android休眠唤醒流程分析
Android休眠唤醒机制简介(一)1、背景介绍: 睡眠/唤醒是嵌入式Linux非常重要的组成部分,因为优秀的睡眠唤醒机制可以是嵌入式设备尽可能的进入休眠状态,来延长电池的续航时间(这在移动终端消费类电子设备中是非常重要和有意义的!!)。但标准的Linux睡眠唤醒机制有其自身的一些缺陷(所有模块必须同时睡下或者唤醒),在某些情况下,这会导致能耗的白白浪费。因此Android在标准L转载 2013-02-26 15:00:24 · 8370 阅读 · 0 评论 -
LINUX内核中的xx_initcall初始化标号
LINUX内核中有很多的初始化指示标志postcore_initcall(), arch_initcall(), subsys_initcall(), device_initcall(), etc. 这些起什么作用呢?查阅源代码(android goldfish-2.6.29)并搜索网上相关文章,对此做一总结。初始化标号先看这些宏的定义(定义在文件include/linux/ini转载 2013-07-04 17:47:57 · 451 阅读 · 0 评论 -
kernel power off流程分析
凡是linux内核上层关机时,底层均会调到kernel_power_off(),电脑可以使用按键ctr+alt+del键进入关机,下面我们看看代码流程: SYSCALL_DEFINE4() -> kernel_power_off()-> pm_power_off_prepare() -> machine_power_off()-> pm_power_off() 在这里我想说的转载 2013-07-04 16:57:31 · 1158 阅读 · 0 评论 -
高通平台android开发总结
1、高通平台android开发总结1.1 搭建高通平台环境开发环境在高通开发板上烧录文件系统建立高通平台开发环境高通平台,android和 modem 编译流程分析高通平台 7620 启动流程分析qcril 流程分析,设置sim卡锁python scons 语法学习Python 语言之 scons 工具流程分析: 1.2 搭建高通平台环境开发环境高通an转载 2014-03-12 16:41:51 · 2154 阅读 · 0 评论 -
基于power supply信息传递的uevent机制
参考了 http://blog.sina.com.cn/s/blog_6100a4f101015uwh.htmlLinux uevent机制Uevent是内核通知android有状态变化的一种方法,比如USB线插入、拔出,电池电量变化等等。其本质是内核发送(可以通过socket)一个字符串,应用层(android)接收并解释该字符串,获取相应信息。一、Kernel侧: ke转载 2014-05-15 17:22:55 · 1565 阅读 · 0 评论 -
Linux内核模块的加载 insmod
Linux内核模块形式上以.ko文件存在,概念上类似于Windows的动态链接库dll,内核模块可以在系统运行期间动态扩展系统功能而无须重新编译一个新的内核镜像并重启系统,这一特性为内核开发者提供了极大的便利。1. 内核模块的动态编译和静态编译首先得了解两者的区别,静态编译模块直接进内核镜像,动态编译模块生成.ko文件。本文主要讨论模块的动态加载。参考一个简单的实例 http:转载 2014-10-16 10:37:05 · 4165 阅读 · 0 评论 -
Linux内核的cpufreq(变频)机制
linux低功耗研究也有一段时间了,基本把低功耗的实现方式想清楚了(主要分成机制和策略),这段时间的工作主要在机制上。暂时想实现的主要的机制有:cpu级,设备驱动级,系统平台级。管理颗粒度不断递增,形成三驾马车齐驱的形势。cpu级:主要实现比较容易的在系统处于目标在于频繁发生、更高粒度的电源状态改变,主要的实现方式为idle,包括今天的主要想讲的动态主频。设备驱动级:主要实现对单个设备驱动转载 2012-07-13 14:54:07 · 981 阅读 · 0 评论 -
LCD驱动(FrameBuffer)实例开发讲解
一、开发环境主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2二、背景知识1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与转载 2012-07-13 14:53:18 · 459 阅读 · 0 评论 -
linux一些机制的总结(精)
1. Work 将任务添加到系统的工作队列中Struct work_struct cd_wq;INIT_WORK(&cd_wq,work_func);Schedule_work(&cd_wq);实际上工作队列就是一个进程,添加到工作队列中就是调度的时候运行 Struct delayed_work otg_event;#define DELAY_TIME转载 2012-07-10 14:23:20 · 514 阅读 · 0 评论 -
android 2.3 频率管理
1. 目的... 42. 需求和限制... 42.1. 需求3. linux内核Cpu频率机制介绍... 64. freq framework. 74.1. 架构... 74.2. 配置文件... 75. 答疑... 96. 附录... 9转载 2012-06-19 17:51:25 · 725 阅读 · 0 评论 -
Linux 内核/sys 文件系统介绍
sysfs 是 Linux 内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好,它的设计从 proc 中吸取了很多教训。本文就 sysfs 的挂载点 /sys 目录结构、其与转载 2012-06-19 17:52:37 · 1115 阅读 · 0 评论 -
Linux inode详解
作者: Sam (甄峰) sam_code@hotmail.com Sam最近在架设spnfs过程中发现。在client上创建文件,文件名以及目录关系都可以在MDS上表现出来。文件内容则存储在DS上。但DS上的文件名却都是由数字组成的。命名方式为:inode.xxxx.关于inode,Sam刚开始以为是kernel的node概念。后来查了一下,发现好像有误差。于是学习之。 在L转载 2012-06-21 15:45:26 · 781 阅读 · 0 评论 -
Linux 系统负载查看
作者: Sam (甄峰) sam_code@hotmail.com Sam最近在搭建一个服务器系统,需要查询各类系统负载。之前只会用top察看cpu,memory等基本信息。对于其它信息并不了解。所以系统学习之。 1. CPU 占用情况:1.1: 首先看Process运行时占用CPU的细节:正如Linux Kernel中所介绍的,Process的状态有3种:正在被CP转载 2012-06-21 15:45:28 · 775 阅读 · 0 评论 -
sched_yield()函数 高级进程管理
1、让出处理器 Linux提供一个系统调用运行进程主动让出执行权:sched_yield。进程运行的好好的,为什么需要这个函数呢?有一种情况是用户空间线程的锁定。如果一个线程试图取得另一个线程所持有的锁,则新的线程应该让出处理器知道该锁变为可用。用户空间锁没有内核的支持,这是一个最间单、最有效率的做法。但是现在Linux线程实现引入一个使用futexes的优化解决方案。 另一个情况是在转载 2012-06-21 15:44:08 · 804 阅读 · 0 评论 -
Linux Kernel中list解读
作者:Sam (甄峰) sam_code@hotmail.com Sam之前看2.4kernel时,常看到List.也仔细看了一下,但现在长期没有看kernel,没有写程序,已经忘记了很多。今天又看一看并记录下来。 LinuxKernel中,常常需要使用双向链表。在~/include/linux/list.h中,就定义了双向链表和常用的function. 链表头如下:s转载 2012-07-04 17:24:40 · 425 阅读 · 0 评论 -
Linux kernel 2.6下的modules编译与KBuild
作者: Sam (甄峰) sam_code@hotmail.comSam之前在Linux kernel 2.4下写过一些driver.但自从转到kernel2.6之后,再也没有写过driver.所以很多具体的东西并不清楚。今天看了看文档,觉得变化挺大的。记下来。在2.4内核中,只要自己写了driver,最多需要kernel头文件来配合编译。通常的CFLAGS为:=-D__K转载 2012-07-04 17:25:08 · 574 阅读 · 0 评论 -
Linux kernel的Makefile和Kconfig
作者:Sam(甄峰) sam_code@hotmail.comSam需要看看2.6 kernel中USBMouse的代码。顺便谈谈Kernel中Makefile和Kconfig文件的关系以及配合使用。背景知识:背景知识一:Kconfig介绍:在#make menuconfig 时,所显示的Menulist是由各层Kconfig组成的。最底层Kconfig转载 2012-06-21 15:45:38 · 582 阅读 · 0 评论 -
android sensors整个流程
本文以G-sensor为列,其它compass,light sensor以此类似。 1.使G-sensor正常工作需要做的事:G-sensor driver文件包括:driver/i2c/chips/lis331dl.cdriver/i2c/chips/sensorioctl.hinclude/linux/lis331dl.h并在/kernel/arch/a转载 2012-07-08 16:39:46 · 2166 阅读 · 0 评论 -
Android 的系统属性(SystemProperties)设置分析
Android 的系统属性包括两部分:文件保存的持久属性和每次开机导入的cache属性。前者主要保存在下面几个文件中:bionic/libc/include/sys/_system_properties.h1 #define PROP_SERVICE_NAME "property_service"2 #define PROP_PATH_RAMDISK_DEF转载 2012-07-08 16:41:00 · 457 阅读 · 0 评论 -
androd framebuffer 步骤
做触摸屏校准的时候顺便整理了键鼠触屏的流程做了简单的分析,今天看看框架内对framebuffer的控制流程。找到一篇文章。android中,与图形相关的上层java package包括:android.graphics,android.view,android.widgetandroid.openglandroid.graphics,android.view和a转载 2012-07-08 16:41:03 · 1482 阅读 · 1 评论 -
Android中的BatteryService及相关组件
BatteryService作为电池及充电相关的服务,它的实现非常简单:o 监听UEvent,读取sysfs里中的状态。实现了一个UEvent的观察者。uevent是Linux内核用来向用户空间主动上报事件的机制,对于JAVA程序来说,只实现UEventObserver的虚函数onUEvent,然后注册即可。 private UEventObserver mUEventObser转载 2012-07-08 16:41:06 · 461 阅读 · 0 评论 -
linux 用户线程
一.Linux下线程概述 进程是系统中程序执行和资源分配的最小单位。每个进程都拥有自己的数据段,代码段和堆栈段。这就造成了进程在进行切换等操作时需要有比较负责的上下文切换等动作。为了进一步减少处理机的空转时间支持多处理器和减少上下文开销,由此有线程的提出。 线程是进程内的一种基本调度单位,也可以称作轻量级进程。线程是在共享内存空间中并发的多道执行路径,它们共享一个进转载 2012-07-10 14:23:23 · 541 阅读 · 0 评论 -
softirq/tasklet/workqueue的区别
http://hi.baidu.com/unicorndragon/blog/item/4f9e48ec8545853862d09fdc.html当前的2.6版内核中,有三种可能的选择:softirq、tasklet和work queue。 tasklet基于softirq实现,所以两者很相近。work queue与它们完全不同,它靠内核线程实现。1、softirq转载 2012-07-10 14:24:54 · 534 阅读 · 0 评论 -
Linux Platform Device and Driver
Linux Platform Device and Driver,platform_add_devices()->platform_driver_register() 收藏来自: http://www.diybl.com/course/6_system/linux/Linuxjs/200871/129585.html从 Linux 2.6 起引入了一套新的驱动管理和注册机制 :Plat转载 2012-07-10 14:25:01 · 548 阅读 · 0 评论 -
Linux内核常用的一些宏的收集(精)
一、中断类: 1. 中断类型: 在request_irq(irq, handler, flags, devname, dev_id)中使用 #define SA_SHIRQ 共享中断(旧版本的,2.6.19之前的内核) #define IRQF_SHARED 共享中断(新版本的) #define SA_INTERR转载 2012-07-10 14:25:33 · 401 阅读 · 0 评论 -
设备驱动外传 - 虚拟总线和platform device
1. 总论2. 系统初始化 platform device3. 驱动程序使用 platform device 1. 总论Linux-2.6.11引入了设备模型的概念,将大部分设备驱动挂载到虚拟总线上。其目的在于:1) 提供友好的用户接口,用户可以在sys/bus/platform/下找到相应的驱动和设备。2) 更有利于电源管理。 2.转载 2014-10-16 11:01:28 · 916 阅读 · 0 评论