自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(221)
  • 资源 (3)
  • 收藏
  • 关注

原创 mx51 IPU 透明处理

Freescale MX51平台的透明处理根据bpp(bits_per_pixel)不同,处理方式有所不同。透明处理涉及到两个图层的合并,这个合并操作是MX51 IPU的DP(Display process)模块来进行的。下图为mx51 datasheet中的DP 微观架构图上图的中Combining Unit就是用来实现两个图层的合并,DP有两个input FIFOs

2011-11-24 15:47:00 5413 2

原创 Android MediaPlayer 分析 - client库

Android Media文件的播放 录像 获取文件元数据,主要工作都放在MediaPlayer Service上,MediaPlayer client需要做的就是创建播放实例,设置媒体文件位置,发送播放 获取元数据和录像命令等。因此在了解MediaPlayer Service工作流程后,MediaPlayer client的代码就显得非常简单,客户端只是向上层提供了所有需要的接口

2011-11-19 17:36:15 1777

原创 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 2488

原创 Android MediaPlayer 分析 - service端文件结构

frameworks/base/media/libmediaplayerservice/ 目录是MediaPlayer 服务器端代码,实现了媒体播放,获取元数据,录像录音。MediaPlayerService主要实现在MediaPlayerService.cpp中,是服务器端媒体操作的主接口,MediaPlayerService根据客户端请求的操作类型不同,创建不同的client代理,跟Cli

2011-11-19 12:05:31 5238 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 12763

原创 RTC何时更新系统时间

RTC - real time clock维护着系统的hardware时间,当linux启动时需要用RTC hardware时钟设置system 时间。这个过程是在drivers/rtc/hctosys.c驱动中实现的,这个驱动实际只有一个init函数,并且把自己的init 函数声明为late_initcall,这样可以保证RTC驱动已经正常运转。init函数从RTC设备读取当前硬

2011-11-09 18:37:15 7116

原创 Android wakelock的申请和释放

Android wakelock可以被内核空间和用户空间 申请和释放。申请的是非超时锁,需要相应的调用wake_unlock来释放,而超时锁则不需要手工释放(当然你也可以手工释放),超时后kernel系统会自动释放锁在内核空间可以直接调用wake_lock, wake_lock_timeout 申请锁Android kernel为用户空间提供了申请和释放wakelock的接口,实现在k

2011-11-08 16:05:03 13029

原创 如何让控制台信息输出到LCD上

就是让console信息同时输出到LCD:1. 编译内核,加入CONFIG_FRAMEBUFFER_CONSOLE=y2. 在uboot中加入console=tty0

2011-11-07 14:28:40 3151 1

原创 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 7409

原创 Android 源代码目录结构1 - bionic

Bionic是Android的C library。libc是GNU/Linux以及其他类Unix系统的基础函数库,最常用的就是GNU的libc,也叫glibc。Android之所以采用bionic而不是glibc,有几个原因:版权问题,因为glibc是LGPL库的体积和速度,bionic要比glibc小很多。提供了一些Android特定的函数,getprop LOGI等Bionic L

2011-11-02 11:19:20 6091

原创 Android 源代码目录结构2- build

|-- build|   |-- buildspec.mk.default|   |-- CleanSpec.mk|   |-- core  (android build system 的核心文件)|   |-- envsetup.sh  (用来设置一个方便的编译环境来处理源码,参照http://blog.csdn.net/kickxxx/article/details/69251

2011-11-02 09:47:20 2326

原创 Android 编译系统 - envsetup.sh

Android build系统可以从相同的源码编译出不同的产品,具有不同的packages和选项。为了实现这个功能, 需要一些环境变量来控制哪些需要编译,以及怎么编译。envsetup.sh就是其中一种方法,envsetup.sh会生成一些工具,使用这些工具可以很方便的对源码进行编译,envsetup.sh会include如下文件vendor/*/vendorsetup.sh ve

2011-11-01 16:39:48 8673

原创 如何在init.c 输出打印信息

ERROR() 可以直接在console输出

2011-10-21 18:33:27 3362 5

原创 交叉编译libz libpng

因为有个arm测试工具依赖libpng,所以需要交叉编译libpng,而libpng又依赖zlib1. 首先编译zlib./configure --prefix=/work/prebuilt/linux-x86/toolchain/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/修改Makefile,把所有的x86编译相关命令修改

2011-10-20 10:21:37 7607 1

原创 mx51 TVOUT cvbs双屏支持

配置mx51支持cvbs输出UI和VIDEO1. 编译tvout模块2. 修改uboot的kernel启动参数,uboot中配置为tvout输出PAL制式cvbs信号set bootargs_base 'setenv bootargs console=ttymxc0,115200 di0_primary video=mxcdi1fb:YUV444,TV-PAL tve'

2011-10-11 14:02:02 5053 8

原创 mxc_dataflash.c分析

这个文件是AT DataFlash chips的驱动,通过FSL SPI接口进行数据操作。   917 static int __devinit dataflash_probe(struct spi_device *spi)   918 {   919

2011-09-26 11:10:34 2452

原创 mx51 TVOUT分析

1397 static int __init enable_tve_setup(char *options)1398 {1399     g_enable_tve = true;1400 1401     return 1;1402 }1403 __set

2011-09-21 10:37:42 74040 1

原创 mx51 IPU CSI0 CCIR Code Register配置

每个IPU csi有三个寄存器:CSI0_CCIR_CODE_1, CSI0_CCIR_CODE_2, CSI0_CCIR_CODE_3CSI0_CCIR_CODE_3比较简单,记录的是BT656时序信号ff 00 00 xy中的ff 00 00, 而xy 模式则记录

2011-09-09 14:30:46 2962

翻译 UBI介绍

翻译 - 来源MTD网站 http://www.linux-mtd.infradead.org/doc/ubi.htmlTable of contentsBig red noteOverviewSource codeMailing listUser-space t

2011-08-22 10:21:27 25452 4

原创 Frame buffer分析 - fbcvt.c modedb.c

参照Documentation/fb/modedb.txtCVT: Coordinated Video TimingsFrom the VESA(TM) Website:     "The purpose of CVT is to provide a method

2011-08-16 18:34:39 2944

原创 Frame buffer分析 - fb_sys_fops.c fbsysfs.c

fb_sys_fops.c这个文件实现了两个函数fb_sys_read和fb_sys_write,同fbmem.c中fb_read和fb_write的区别就在与对screen_base的访问方式不同,fb_sys_read和fb_sys_write完全是对内存的直接访问,

2011-08-16 09:56:40 2764

原创 Frame buffer分析 - fbcmap.c

91 int fb_alloc_cmap(struct fb_cmap *cmap, int len, int transp) 92 { 93     int size = len*sizeof(u16); 94  95     if (cmap->len !=

2011-08-15 18:03:15 3225

原创 Frame buffer分析 - fbmem.c

45 struct fb_info *registered_fb[FB_MAX] __read_mostly;这个是全局的变量,通过这个全局变量,在系统内可以随时获取需要的fb_info,具体的获取方法是通过比对 registered_fb[i]->fix.id来确定需要的fb_info, 示例代码如下    for (i = 0; i         char *idstr

2011-08-12 11:21:50 7096

转载 s-video CVBS接口 区别

复合视频信号接口(CVBS)其传输的是复合视频信号,可用一根或一组普通的音视频线传输,其中黄色的为视频信号,白色的为左声道音频信号,红色的为右声道音频信号S端子由于复合视频信号(CVBS)是将亮度和色度信号采用频谱间置方法复合在一起,会导致亮,色的串扰以及清晰

2011-08-11 11:07:05 8321 1

原创 隔行模拟摄像头缺点

现在项目使用的是模拟摄像头输出为CVBS信号,通过video AD转换芯片转换为BT656信号,输出的BT656信号再接到MX51 CSI接口。MX51通过对top bottom两场交错生成一帧图像,对于静态图像,效果还可以,但是对于运动图像则会出现锯齿,尤其按一定比例缩放时,运动部分还可能会出现很粗的线条。出现锯齿的原因:由于上下两场拍摄的时间点是不同的,导致合并后运动部分无法重

2011-08-08 17:15:48 4926 57

原创 bayer, yuv, RGB转换方法

因为我的STVxxx USB camera输出格式是bayer格式,手头上只有YUVTOOLS这个查看工具,没法验证STVxxx在开发板上是否正常工作。网上找了很久也没找到格式转换工具,最后放弃了,觉得还是写个转换工具比较快。抄写了部分libv4lconvert的代码, 我只验证了V4L2_PIX_FMT_SGBRG8到V4L2_PIX_FMT_YUV420的转换。baye

2011-07-29 09:54:50 22734 2

原创 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 6153 5

原创 VIDIOC_S_CROP 理解

VIDIOC_S_CROP ioctl会传入一个v4l2_crop给驱动程序 crop.c.left, crop.c.top. crop.c.width, crop.c.height定义了一个长方形区域,这个区域是capture或者overlay模式下的取景范围,举个例子,图片的

2011-07-27 10:23:50 10496 4

原创 ioremap返回的地址

ioremap和vmalloc一样,都会返回vmalloc区的虚拟地址,但是ioremap并不会分配任何物理内存,ioremap也需要建立新的页表来访问物理页面。ioremap获取的虚拟地址空间需要使用iounmap来释放。ioremap主要用来映射设备的物理内存到内核的虚拟地址空间,这样,内核就可以通过这些虚拟地址空间访问设备内存。使用ioremap需要注意几点:1. 尽

2011-07-20 17:00:54 7348 2

翻译 UBIFS介绍 - MTD网站

原文地址 http://www.linux-mtd.infradead.org/doc/ubifs.htmlBig red note在了解UBIFS之前一定要注意UBIFS和任何传统的文件系统是不一样的:UBIFS不是运行在block device之上的(比如hard disk, MMC/SD卡,USB flash驱动等等)。UBIFS是运行于raw flash之上。请在开始U

2011-07-04 18:27:35 22778 3

原创 UBIFS 术语

B+ tree: base head: budgeting: 空闲空间评估 bud: 一个日志使用的eraseblock cnode: commit: 更新index到flash上的过程 commit start node: common header: 所有节点类型的公共头部(除了LPT area) data head: Journ

2011-06-30 17:36:00 2386

翻译 UBIFS设计简介 - A Brief Introduce to the Design of UBIFS

项目闲暇,想了解下UBIFS,就先从UBIFS的设计文档翻译开始吧,以后有机会有时间能分析下UBIFS源码 flash memory文件系统需要异地更新(out-of-place updates). 这是因为flash存储在写之前必须擦除, 并且每次擦除后只能写一次。如果擦除块很小并且擦除速度很快,那么擦除块可以看作是磁盘扇区,然而事实并非如此。读取整个擦除快,擦除它然后回写更新的数据

2011-06-28 19:18:00 4839

原创 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 3278 4

原创 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 3883 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 5730 19

原创 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 4412 2

原创 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 4166

原创 调试freescale CSI sa7113 camera的心得

最近在freescale mx51平台上调试saf7113芯片,写下一些调试的心得1. 一个好的工具 YUVtools.exe这个工具可以用来查看拍摄出来的YUV图片效果, 来发现到底什么地方出了问题,很方便,选项非常多,在调试中碰到的很多问题,比如失帧图片模糊,格式不对等等都可以通过这个工具对图片进行分析2. 概念的了解: BT656, MX51 IPU, SAF7113 V4L

2011-06-21 18:29:00 9778 41

原创 framebuffer 一些基本知识

Horizontal回扫和Vertical回扫是CRT引入的概念,电子束从左向右画水平线,回到下一行行首继续下一行扫描,直到屏幕最下一行,然后回到屏幕上方继续下一帧扫描。水平回扫:电子束从上一行尾移动到下一行起始点需要的时间帧回扫:电子束从屏幕下方移动到屏幕上方所需的时间 CRT的刷新屏率是怎么计算的:假定显卡的dotclock是28.37516MHZ1. 那么每个点的扫描

2011-04-29 14:48:00 2565 1

翻译 v4l2_field理解

video的帧可区分为隔行和逐行: 逐行顺序的传输一帧所有的行,而隔行则把一帧划分成两个fields,分别保存帧的奇数行和偶数行,被称作奇场和偶场.  阴极射线电视机需要交替的显示两场来组成一个完整的帧,交替的时延需要我们交替的传输奇场和偶场。这个奇怪技术的引入是因为:在刷新率接近电影时,图片会消退的过快。使用奇偶场可以避免使用双倍的buffer以及额外的带宽需求。 首先要明确camera

2011-04-27 18:35:00 18090 4

Google GFS 文件系统(英)

Google GFS开发者写的论文,描述了GFS设计理论

2012-11-09

A COMPACT GUIDE TO LEX & YACC

This document explains how to construct a compiler using lex and yacc.

2010-10-29

空空如也

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

TA关注的人

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