自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux Pinctrl

在求量的心态下,我同时兼职了pinctrl的工作,从开始的头疼到后来的游刃有余,直到今日...Pinctrl是对SoC的所有IO pin的管理,包括IO的复用(MUX)、IO的配置(Config)以及IO的通用功能(GPIO)。SoC的ballmap可以看到,除了电源、地、特定功能脚之外,还有很多的IO pin,他们分散在各个电源域,并且在芯片设计阶段已经被规划好了各种复用场景,而pinctrl驱动做的就是让各个模块驱动很简洁地完成复用配置,完成IO配置(如驱动强度、上下拉、斯密特触发器、边沿速率)

2022-01-29 13:59:34 1580

原创 Linux内存分配、内存管理的一点分享

五年前从待机及功耗中,被迫接触ION(Android的内存分配接口)一直不觉得有资格写分享文档。今天是公司春节假期第一天,我搬回到这十年前位置,公司四周依旧如初那样空无一人,回荡的是键盘的声音。...先大概写能记得的,年后来完善...1. ION最早期的ION我不及的很清楚,开始的时候更多是在适配接口,看到的是内核这部几个heap name,heap id,连框架我都没想明白。真正认识ION的时候,是内核4.19版本(Android 9?)的时候,ION做大幅度修改,我才从这个删除过程看到I

2022-01-29 13:18:19 3703 1

原创 十年,重新来到CSDN

新开始!

2019-07-15 20:43:15 403 1

原创 函数解读:ioremap / ioremap_nocache / ioremap_wc / ioremap_wt

arch/arm/include/asm/io.h#define ioremap(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))#define ioremap_nocache(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))...

2018-06-08 09:47:35 10600

原创 ion_mmap

ion_mmap: buffer->heap->ops->map_user(buffer->heap, buffer, vma);-> struct ion_heap_ops ion_cma_ops: .map_user = ion_cma_mmap,-> ion_cma_mmap: dma_mmap_coherent(dev, vma, info->cp...

2018-02-23 11:15:30 836

原创 CMA debug

学习CMA,Linux kernel有个很好用的CMA DEBUG,本文介绍它的使用方法1. 代码位置CMA DEBUG文件位置在mm/cma_debug.c;Linux kernel默认是关闭,需要打开CONFIG_CMA_DEBUG=y CONFIG_CMA_DEBUGFS=y2. 代码解读很常见的是以late_initcall(cma_debugfs_init

2017-11-28 09:43:12 2280

原创 Linux reserved memory分析

Linux需要预留内存,满足设备对连续物理内存,已经有一套reserved-memory

2017-11-17 15:39:10 10597

原创 Linux 3.14 待机流程分析

内核不断在升级,从内核3.0开始分析待机流程,最近在3.14检查待机方面问题,发现流程有一些改进这篇文章就是着重在改进部分的分析

2015-06-12 15:35:23 5031

原创 内核打印规范

d,lx,ld,,lu,这几个都是输出32位的 hd,hx,hu,这几个都是输出16位数据的, hhd,hhx,hhu,这几个都是输出8位的, lld,ll,llu,llx,这几个都是输出64位的,

2014-12-11 09:22:38 1780

原创 RSA SHA1

RSARSA的算法涉及三个参数,n、e1、e2。其中,n是两个大质数p、q的积,n的二进制表示时所占用的位数,就是所谓的密钥长度。e1和e2是一对相关的值,e1可以任意取,但要求e1与(p-1)*(q-1)互质;再选择e2,要求(e2*e1)mod((p-1)*(q-1))=1。(n,e1),(n,e2)就是密钥对。其中(n,e1)为公钥,(n,e2)为私钥。

2014-04-03 13:49:02 4567

转载 TCG Software Stack 简介

TCG Software Stack 简介http://blog.sina.com.cn/s/blog_48b828860100k3el.html自己总结了一下TSS的相关资料,简介一共分为五大部分:1. TPM Internals2. TPM Device Driver(TDD)3. TCG Device Driver Library(TDDL)4. TCG

2014-04-03 08:35:29 5263 1

原创 Ubuntu 12 下构建模拟TPM环境

Ubuntu 12 下构建模拟TPM环境1.安装CMake下载网址:http://www.cmake.org/我下载的版本是cmake-2.8.8.tar.gz解压:#tar -zxf cmake-2.8.8.tar.gz安装:(1)#cd cmake-2.8.8     (2)#./bootstrap     (3)#make      (4)#mak

2014-04-01 11:06:28 8094 1

转载 视频解码和硬解码

首先视频都是有经过编码的,为什么要编码呢?因为视频信号数字化后带宽很高,通常在20M/S以上,计算机很难对之进行保存和处理。为了减小带宽即减小视频数据量,需要对视频进行压缩,压缩过程即叫做编码。那么在播放的过程中需要把数字信号转化为模拟信号,这个过程就叫做视频解码。视频编码分为三个步骤:动态补偿,正余弦变换和熵(Entropy Encoding)。相应的视频解码就是视频编码的反过程。  

2013-11-12 11:45:16 4598

原创 常用命令

查看分区内存使用情况df循环拷贝目录下所有文件for i in `ls /mnt/sdcard/music/`do                                                                           busybox dd if=/mnt/sdcard/music/$i of=/mnt/sdcard2/mus

2013-10-07 10:52:07 2266

转载 Linux内核同步原语之原子操作

避免对同一数据的并发访问(通常由中断、对称多处理器、内核抢占等引起)称为同步。 ——题记    内核源码:linux-2.6.38.8.tar.bz2    目标平台:ARM体系结构     原子操作确保对同一数据的“读取-修改-写入”操作在它的执行期间不会被打断,要么全部执行完成,要么根本不会执行。例如在ARM上对全局变量的++运算至少要经历以下三步: [cp

2013-03-10 11:51:47 2631

原创 android待机详细结合代码分析(二)

摘要:此篇在上篇博文基础上,增加对待机后,怎么增加唤醒源的分析android待机过程 与 irq的开关过程对于android开发者而言,可能会有疑问为什么我们的手机或者平板,音量按键,屏幕不会亮,而电源按键,屏幕会亮?又或者如何才能让音量按键也有点亮屏的效果(当然纯粹是以开发者角度,与实用性无关)irq在android待机过程中的总体管理是:1. 全部irq被disab

2012-09-11 15:08:42 5080

原创 android待机详细结合代码分析(一)

摘要:android系统的待机,是在linux原生待机enter_state的基础上,添加wakelock-wakeunlock机制,对象场景是增加对屏灭但系统仍后台运行得支持。linux原生待机我们是linux开发者,用code沟通最直接吧。在linux-2.6.32以后,/sys/power节点下,创建state节点,在文件系统调用上,write此节点,将会调用st

2012-09-11 14:26:15 7735

转载 barrier 和 smp_mb

优化屏障和内存屏障 优化屏障         编译器编译源代码时,会将源代码进行优化,将源代码的指令进行重排序,以适合于CPU的并行执行。然而,内核同步必须避免指令重新排序,优化屏障(Optimization barrier)避免编译器的重排序优化操作,保证编译程序时在优化屏障之前的指令不会在优化屏障之后执行。        Linux用宏barrier实现优化屏障,gcc编译器的

2012-07-30 10:12:27 24999 5

原创 内核:一个中断如何对应多个句柄

input子系统input子系统代码位置:kernel/drivers/input/input.c这个文件完成input系统最原始的初始化,subsys_initcall开始子系统的初始化,并封装EXPORT_SYMBOL给其他驱动调用的接口在input_init中,三件事: err = class_register(&input_class); if (

2012-06-21 09:01:52 3221

原创 CPU策略学习:interactive策略的优点和缺点

CPU策略学习:interactive策略的优点和缺点我相信,研究CPU策略的人,经常会听别人说,或者自己说:每种策略都有好有不足,性能和功耗不能兼顾,性能好的功耗就大,为省功耗就会牺牲性能。真是这样吗?即使是真的,为什么这么说呢??下面我们从interactive策略,学习过程中,发现该策略的优点和不足之处,想想改进的方法,然后来琢磨这些老生常谈主要特

2012-06-20 22:04:58 13279 1

原创 CPU策略学习:cpu策略相关节点、cpu负载查看方法、cpu信息查看

这里总结自己开发的经验,熟悉内核设备节点,对内核相关驱动的学习和开发都很有帮助1 cpu信息查看android应用设置界面,关于菜单下可以查看手机或者平板android设备的信息,这些信息都是内核预留出来的接口作为内核开发人员,可以直接在串口调试查看到这些信息#cd  /sys/devices/system/cpu/在这个目录下有CPU的所有信息,如果是双核设备,会有c

2012-06-20 21:35:20 5458

原创 CPU 策略学习:interactive分析,结合代码

CPU动态调频策略,目前常见的有performance powersave ondemand consertive interactive以下是基于interactive代码详细分析下的一些见解从网上搜索的,比较详细的是:http://bbs.gfan.com/android-976301-2-1.htmlAdvantages:+ significantly m

2012-06-20 21:05:52 15672

转载 缓存同步操作--sys_sync系统调用

sys_sync系统调用被用户空间函数调用,用来将缓存中的数据写入块设备,sys_sync系统调用将buffer、inode和super在缓存中的数据写入设备。sys_sync函数在fs/buffer.c中,现分析如下:asmlinkage long sys_sync(void) { do_sync(1); return 0; }  函数do_sync各种数据,开始

2012-04-09 11:34:23 9171

原创 Android待机的suspend_sys_sync_queue分析

Android待机的suspend_sys_sync_queue分析Android的4.0在待机机制上和之前版本大同小异,也可以说是机制相对完善并没多大的问题反馈出来。不过有个细节的地方,改动幅度较大,来看看在linux待机机制中,开始待机的时候会调用sys_sync函数,sys_sync系统调用被用户空间函数调用,用来将缓存中的数据写入块设备,sys_sync系统调用

2012-04-09 11:28:19 7466 2

原创 android待机应用和若干常见问题解决

Android和kernel间,通过设备节点建立关联待机API由kernel建立提供,待机请求由android通过节点向kernel发送。# ls sys/android_power/staterequest_stateacquire_full_wake_lockacquire_partial_wake_lockrelease_wake_lock# 这些节点中,stat

2012-03-25 15:44:49 4934

原创 Event auto wakelock 介绍

Evdev auto wakelock 介绍介绍kernel-2.6.25 关于event 加锁的机制,从中窥探linux的锁机制。kernel版本比较旧,对比2.6.32发现kernel在锁机制方面基本没变,但是在机制的实现上有很大的变化。1.evdev模块初始化module_init(evdev_init);2.evdev初始化static int __

2012-03-25 15:16:43 2646

翻译 ACPI - 高级配置与电源接口

ACPI表示高级配置和电源管理接口(Advanced Configuration and Power Management Interface)。     对于Windows2000,ACPI定义了Windows 2000、BIOS和系统硬件之间的新型工作接口。这些新接口包括允许Windows 2000控制电源管理和设备配置的机制。       高级配置与电源接口(Advanced C

2012-03-08 15:41:22 3497

原创 手持设备续航能力

常见到平板电脑、电子书、手机这些手持设备,关于续航的参数大同小异,以iphone为例理论通话时间480分钟理论待机时间250小时其它使用时间音乐播放时间:24小时视频播放时间:7小时网络使用时间:6小时HTC touch HD电池容量1350mAh

2011-11-28 12:12:17 1738

原创 ubuntu 10.04 32bit JDK 1.5 安装

1 sudo add-apt-repository "deb http://mirrors.163.com/ubuntu/ hardy main multiverse"sudo apt-get updatesudo apt-get install sun-java5-jdksudo update-alternatives --config java

2011-11-19 10:06:38 1220

翻译 中断上下文 和 module_init

为什么在中断上下文中不能休眠?1.中断处理的时候,不应该发生进程切换,因为在中断context中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断(这点对于softirq,tasklet也一样,因此这些bottom half也不能休眠),如果在中断context中休眠,则没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断context中,没

2011-11-15 23:54:43 1153

原创 kernel 3.0.8 audio dataflow

kernel 2.6.32 for (;;) { if (signal_pending(current)) { err = -ERESTARTSYS; break; } set_current_state(TASK_INTERRUPTIBLE); snd_pcm_stream_unlock_irq(substream); tout = schedu

2011-11-10 00:47:22 1862

原创 android待机流程(图)

用viso根据代码画了下android待机的流程

2011-11-08 17:55:58 3203 3

原创 音频底层驱动

驱动组成部分ASoCsplits an embedded audio system into 3 components :-   * Codec driver: The codec driver is platformindependent and contains audio    controls, audio interface capabilities,codec DAPM

2011-11-08 17:52:59 2612

原创 音频数据流程

在系统启动时MediaSever加载了两个服务:AudioPolicyService和AudioFlinger。 1.3.1 AudioPolicyServiceAudioPolicyService主要完成以下任务JAVA应用层通过JNI,经由IAudioPolicyService接口,访问AudioPolicyService提供的服务输入输出设备的连接状态系统的音频策略(

2011-11-08 17:47:36 2914 1

原创 音频框架结构

1.2.1 Android audiosubsystem Framework1.2.2 OSS FrameworkTypical OSS Read/Write Flow音频数据流原理相通,可以总结为三步骤:while循环,持续写schedule等待DMA中断产生copy_frome_user拷贝数据到DMA缓存区1.2.3

2011-11-08 17:45:47 2027

原创 DMA简介

DMA概述 好久没来写文档了,研究了一点和音频相关的东西~这里先介绍DMAl        DMA (Direct Memory Access)l        DMA方式不用CPU干预,完成M与I/O之间数据传输l        DMAC:用来实现DMA传输期间DMA控制器,在DMA传输期间占用总线 l        DMAC在系统中的作用: 主动态在

2011-11-08 17:37:17 2401 1

原创 音频播放不能深度睡眠のAudioOutLock

android流程中,在AudioHardware::AudioStreamOutALSA::write的时候,会acquire_wake_lock (PARTIAL_WAKE_LOCK, "AudioOutLock"),这个锁如果没有释放,在睡眠前的检测环节中,将导致不能进入深

2011-09-16 00:41:48 3001 1

转载 工作队列分析 queue_work

一、用法 struct cpu_workqueue_struct { spinlock_t lock; long remove_sequence; /* Least-recently added (next to run) */ long insert_s

2011-09-15 15:35:55 12326

原创 android device 注册、添加、管理

注册:函数调用设备挂到电源管理的函数调用关系是(依次往下调用)audio_card_init (函数类型包含__init 初始化调用)platform_device_adddevice_adddevice_pm_addlist_add_tail(最直接的链

2011-09-15 00:11:00 3217

转载 kernel barrier 定义说明

#ifndef barrier# define barrier() __memory_barrier()#endif  这里表示如果没有定义barrier函数,则定义barrier()函数为__memory_barrier()。但在内核

2011-09-09 10:00:27 2026

介绍L2 cache

关于二级缓存的介绍 L2cache存储方式有set way等概念,具体有实例图的

2011-08-26

空空如也

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

TA关注的人

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