![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Android
文章平均质量分 71
kickxxx
这个作者很懒,什么都没留下…
展开
-
Android 系统中设备节点的创建
<br />查了很多资料,有很多人错误地认为是kernel创建的/dev/yourdevice<br />在最近的kernel中这种说法是不对的, 其实是kernel仅负责在/sys/创建一大堆下目录和文件,<br />而真正的设备节点是在用户空间创建的。<br />在android系统中,由init进程负责处理这种uevent事件,如果是"add" device事件, init会在/dev/下创建相应的节点<br />具体代码可查看 system/core/init/devices.c: handle_d原创 2011-03-04 16:30:00 · 5569 阅读 · 1 评论 -
Android.mk中 LOCAL_COPY_HEADERS_TO 和 LOCAL_COPY_HEADERS的作用
在使用Android编译的库,需要include这个库的头文件Android编译时会包含out/target/product/generic/obj/include/ 下的头文件,LOCAL_COPY_HEADERS_TO和LOCAL_COPY_HEADERS的作用就是把需要暴露给外部的头文件copy到这个路径下其中LOCAL_COPY_HEADERS_TO 指定out/target/原创 2012-04-11 15:59:46 · 8516 阅读 · 1 评论 -
制作android ramdisk.img镜像
解包1 查看文件格式: file ramdisk.img ramdisk.img: gzip compressed data, from Unix可知ramdisk.img是一个压缩包,当然ramdisk.img的压缩不是必需的2 解压ramdisk.img压缩包: gunzip -S .img ramdisk.img由于文件名不是.gz,所以要加-S,解压后生成了原创 2012-04-12 09:47:16 · 4369 阅读 · 2 评论 -
Android启动画面
Android有三种启动画面1. 在kernel framebuffer驱动中的logo, 具体参见kernel/drivers/video/fbmem.c,这是最早的静态启动画面2. init进程加载的启动画面,具体参考android/system/core/init/init.c 中load_565rle_image的实现3. bootanimation动画,一般来说init.rc原创 2012-05-09 10:46:53 · 4547 阅读 · 1 评论 -
Android init.rc执行顺序
1. 所有的action运行于service之前2. 下面为各个section的执行顺序,英文编号的section是系统内建的(写死在init.c中的命令)1) early-init a) wait_for_coldboot_done b) property_init c) keychord_int d) console_init e原创 2012-05-22 14:06:31 · 14536 阅读 · 4 评论 -
Android S5PV210 camera驱动测试程序
最近在调试S5PV210上的camera驱动,因为对Android的samsung camera hal 不太了解,自己写了个测试程序方便调试因为camera驱动都是遵守V4L2标准,所以测试程序是通用的,在MX51平台也能工作。#include #include #include #include #include #include #include #incl原创 2012-07-04 13:47:03 · 5552 阅读 · 17 评论 -
Android S5PV210 camera驱动(tw9912)小结
之前没接触过三星的开发板,更不了解S5PV210,TW9912这款AD芯片也是第一次接触,三星FAE又不给力(其实是没有),调试camera过程中,一会怀疑TW9912配置不对,一会怀疑三星FIMC驱动有问题,比较痛苦,今天终于调出了正确的图像,发贴和大家分享一下TW9912 配置TW9912这款AD芯片,TechWell FAE给了几组寄存器配置:PAL in 656P原创 2012-07-04 15:37:44 · 16848 阅读 · 9 评论 -
S5PV210 三个Camera Interface/CAMIF/FIMC的区别
S5PV210有三个CAMIF单元,分别为CAMIF0 CAMIF1和CAMIF2。对应着驱动中的fimc0, fimc1, fimc2。在三星datasheet和驱动代码中CAMIF和FIMC(Fully Interactive Mobile Camera)这两个术语基本上可以互换的,后面我们都用FIMC代替CAMIF。这两个术语的称呼有很强的模糊性,尤其刚刚接触三星平台,会觉得这三个接口设备都原创 2012-07-09 16:52:52 · 8221 阅读 · 1 评论 -
Android S5PV210 fimc驱动分析 - fimc_regs.c
fimc_regs.c是fimc框架操作camera 硬件的接口,fimc框架把所有硬件相关的操作都放在这个文件中 100 int fimc_hwset_camera_source(struct fimc_control *ctrl) 101 { 102 struct s3c_platform_camera *cam = ctrl->cam; 103 u32 cfg原创 2012-06-16 15:53:32 · 17835 阅读 · 7 评论 -
Android 启动性能优化 - kernel篇
题目有点大,其实kernel的启动性能调整和android基本没什么关系,我想应该适用所有使用linux的嵌入式设备时间测量说到性能调整,第一件该干的的事就是看下时间到底消耗在哪里。俗话说的好:知己知彼,百战百胜;过度优化,万恶之首因此手头上要有称心如意的时间测试工具,方法。其实我是不太喜欢工具的,工具这东西可遇不可求,而且不如写代码顺手。1. PRINTK_TIME在内核原创 2012-02-24 18:23:54 · 7441 阅读 · 7 评论 -
Android sendevent/getevent 用法
getevent/sendevent源码这两个命令的源码在system/core/toolbox/下,sendevent.c getevent.cgetevent使用getevent获得/dev/input/eventX设备汇报的事件,这个命令还会输出所有event设备的基本信息,如下:add device 1: /dev/input/event1 name:原创 2012-04-23 09:50:25 · 35300 阅读 · 0 评论 -
mx51的三个framebuffer,mxc_ipuv3_fb.c分析
mx51支持三个framebuffer:fb0, fb1, fb2/dev/graphics/fb0,/dev/graphics/fb1:一个作为系统的主framebuffer,另外一个作为TVOUT输出的framebuffer,缺省情况下,fb0做primary(也就是用来在primary LCD显示UI),fb1做secondary(也就是用来在TVOUT输出上显示数据)。根据原创 2011-11-26 17:36:02 · 8317 阅读 · 11 评论 -
Android Binder 驱动分析 - 数据结构
binder_procsstatic HLIST_HEAD(binder_procs);系统所有的binder_proc都在这个双向链表上。在binder_open中每一个新创建的binder_proc都通过binder_proc->proc_node链接到这个双向链表;在binder_deferred_release函数释放binder_proc前,从binder_procs原创 2013-06-03 08:35:51 · 3571 阅读 · 1 评论 -
Android binder简介
原文地址https://www.nds.rub.de/media/attachments/files/2011/10/main.pdf4 Binder本章介绍什么是Binder以及Binder的能力。本章是从抽象的角度介绍Binder,并没有涉及到实现细节,在下一章我们会讲解实现细节。4.1 出身Binder最初是Be Inc公司开发的OpenBinder,后来Pa翻译 2013-06-01 11:11:47 · 6531 阅读 · 0 评论 -
APK签名原理
网上已有多篇分析签名的类似文章,但是都有一个共同的问题,就是概念混乱,混乱的一塌糊涂。在了解APK签名原理之前,首先澄清几个概念:消息摘要 -Message Digest简称摘要,请看英文翻译,是摘要,不是签名,网上几乎所有android签名分析的文章都对这两个概念乱用摘要的链接http://en.wikipedia.org/wiki/Message_digest简原创 2014-01-14 20:25:46 · 32665 阅读 · 9 评论 -
Android emulator 扩展system/data分区尺寸
因为要向emulator内push动态库,所以需要扩大system分区的容量可以在启动emulator时指定 -partition-size 128,emulator启动后system 和data分区就变成128MB了原创 2012-04-11 11:04:38 · 4822 阅读 · 0 评论 -
MX51 V4L2 output 驱动
之前调试MXC V4L2驱动一直没有注意到output/mxc_v4l2_output.c这个文件,因为capture/*.c已经提供了still capture, stream capture, 以及overlay,所以没仔细的去看mxc_v4l2_output.c提供的功能,直到前几天负责维护overlay hal的同事提出打开了overlay hal /dev/video16这个设备节点,才原创 2011-07-28 09:42:23 · 6133 阅读 · 5 评论 -
freescale R10 ipu lib 分析 - ipu_capture.c
ipu_capture.c 47 int32_t 48 ipu_csi_init_interface(uint16_t width, uint16_t height, uint32_t pixel_fmt, 49 ipu_csi_signal_cfg_t cfg_param) 50 { 51 uint32_t data = 0; 52 uint3原创 2011-06-22 10:39:00 · 4130 阅读 · 0 评论 -
freescale R10 ipu lib 分析 - ipu_device.c
ipu_device.c这个文件创建了一个mxc_ipu字符设备节点,目的是为了ipu lib服务的,主要函数就是mxc_ipu_ioctl, app可以利用ipu lib实现如下功能:ResizeRotationColor space/format convertOverlay combination with the same size which supports原创 2011-06-22 18:26:00 · 4395 阅读 · 2 评论 -
freescale R10 ipu lib 分析 - ipu_ic.c
45 void _ipu_vdi_set_top_field_man(bool top_field_0) 46 { 47 uint32_t reg; 48 49 reg = __raw_readl(VDI_C); 50 if (top_field_0) 51 reg &= ~VDI_C_TOP_FIELD_MAN_1; 52原创 2011-06-27 14:09:00 · 3257 阅读 · 4 评论 -
freescale R10 ipu lib 分析 - ipu_common.c
ipu_common.c Common IPU API implementation,主要是为MXC V4L2和ipu device驱动提供IPU channel控制函数 110 static inline int _ipu_is_ic_chan(uint32_t dma_chan) 111 { 112 return ((dma_chan >= 11) &原创 2011-06-24 11:09:00 · 5710 阅读 · 19 评论 -
freescale R10 ipu lib 分析 - ipu_param_mem.h
ipu_param_mem.h 21 struct ipu_ch_param_word { 22 uint32_t data[5]; 23 uint32_t res[3]; 24 }; 26 struct ipu_ch_param { 27 struct ipu_ch_param_word word[2]; 28 };每个ipu原创 2011-06-24 16:35:00 · 3866 阅读 · 4 评论 -
如何在init.c 输出打印信息
ERROR() 可以直接在console输出原创 2011-10-21 18:33:27 · 3335 阅读 · 5 评论 -
Android MediaPlayer 分析- MediaPlayerService.cpp
frameworks/base/libmediaplayerservice/MediaPlayerService.cpp因为工作的平台是mx51,所以分析的是mx51 10.3的代码,本文主要分析视频播放部分的代码,对于recorder和audio部分忽略掉。Mediaplayer service是一个系统服务,Android 视频播放,录音录像,元数据获取等客户端应用与Mediapl原创 2011-11-18 16:44:25 · 12742 阅读 · 0 评论 -
Android MediaPlayer 分析 - service端文件结构
frameworks/base/media/libmediaplayerservice/ 目录是MediaPlayer 服务器端代码,实现了媒体播放,获取元数据,录像录音。MediaPlayerService主要实现在MediaPlayerService.cpp中,是服务器端媒体操作的主接口,MediaPlayerService根据客户端请求的操作类型不同,创建不同的client代理,跟Cli原创 2011-11-19 12:05:31 · 5223 阅读 · 5 评论 -
MediaScanner分析 - MediaScanner.cpp
MediaScanner.cpp分析文件路径 frameworks/base/media/libmedia/MediaScanner.cppstatus_t MediaScanner::processDirectory( const char *path, const char *extensions, MediaScannerClient &cli原创 2011-11-19 17:35:32 · 2469 阅读 · 0 评论 -
Android MediaPlayer 分析 - client库
Android Media文件的播放 录像 获取文件元数据,主要工作都放在MediaPlayer Service上,MediaPlayer client需要做的就是创建播放实例,设置媒体文件位置,发送播放 获取元数据和录像命令等。因此在了解MediaPlayer Service工作流程后,MediaPlayer client的代码就显得非常简单,客户端只是向上层提供了所有需要的接口原创 2011-11-19 17:36:15 · 1773 阅读 · 0 评论 -
Android 编译系统 - envsetup.sh
Android build系统可以从相同的源码编译出不同的产品,具有不同的packages和选项。为了实现这个功能, 需要一些环境变量来控制哪些需要编译,以及怎么编译。envsetup.sh就是其中一种方法,envsetup.sh会生成一些工具,使用这些工具可以很方便的对源码进行编译,envsetup.sh会include如下文件vendor/*/vendorsetup.sh ve原创 2011-11-01 16:39:48 · 8643 阅读 · 0 评论 -
mkimage 使用说明
mkimage是在制作镜像文件时候, 在原来的image文件前增加一个0x40字节长度的头,增加的头结构描述如下/* * Legacy format image header, * all data in network byte order (aka natural aka bigendian). */typedef struct image_header { ui原创 2011-11-03 16:56:34 · 7395 阅读 · 0 评论 -
Android wakelock的申请和释放
Android wakelock可以被内核空间和用户空间 申请和释放。申请的是非超时锁,需要相应的调用wake_unlock来释放,而超时锁则不需要手工释放(当然你也可以手工释放),超时后kernel系统会自动释放锁在内核空间可以直接调用wake_lock, wake_lock_timeout 申请锁Android kernel为用户空间提供了申请和释放wakelock的接口,实现在k原创 2011-11-08 16:05:03 · 13018 阅读 · 0 评论 -
如何让控制台信息输出到LCD上
就是让console信息同时输出到LCD:1. 编译内核,加入CONFIG_FRAMEBUFFER_CONSOLE=y2. 在uboot中加入console=tty0原创 2011-11-07 14:28:40 · 3126 阅读 · 1 评论 -
BLCR 基本环境搭建
最近在看android快速启动,想用BLCR把zynote进程的快照保存起来。首先想在ubuntu上把这个功能跑起来。BLCR下载 https://ftg.lbl.gov/projects/CheckpointRestart/checkpointdownloads/, 我下了最新的blcr包编译blcr内核模块和命令tar zxvf blcr-0.8.4.tar.gz原创 2012-04-01 16:45:07 · 11052 阅读 · 4 评论 -
Android kernel 下载 编译- 2012/04/06
Downloading kernel src参照 http://source.android.com/source/building-kernels.html因为公司是使用代理上网,所以需要设置代理服务器,设置方法如下:export http_proxy=http://user:passwd@server:port然后就可以通过HTTP方式下载了gi原创 2012-04-06 14:02:28 · 1787 阅读 · 0 评论