摘要: 从函数 AudioFlinger::PlaybackThread::Track::start 开始分析。frameworks\base\services\AudioFlinger.cppstatus_t AudioFlinger::PlaybackThread::Track::start(){ ... 阅读全文
posted @ 2014-07-06 15:14 zhgt 阅读(8453) 评论(1) 推荐(0) 编辑
摘要: 平台:展讯7730模块:cameraIC: OV5648问题:AF无功能现象:客户新打样OV5648的camera, 发现AF无功能,更换IC之前AF功能正常,更换为OV5648之后AF无功能。分析过程:前提:在模组的pin定义中,有两个和AF有关,一个是AF 的电压, 一个就是AF PWN(GP... 阅读全文
posted @ 2014-06-22 12:34 zhgt 阅读(2969) 评论(0) 推荐(0) 编辑
摘要: 平台:展讯SC7730现象:开机显示LOGO时会闪一下观察现象似乎像是LCD没刷完屏背光就亮了。问题首先定位于uboot开机显示LOGO段代码。normal_emc_mode.cvoid vlx_nand_boot(char * kernel_pname, char * cmdline, int b... 阅读全文
posted @ 2014-05-24 22:46 zhgt 阅读(2232) 评论(0) 推荐(0) 编辑
摘要: 平台:展讯SC7730Camera IC:前GC0329后GC0328近日,在解决项目BUG的过程中,测试部门有报:下载完版本第一次开机后,第一次和第二次进Camera会出现打开失败的BUG,第三次就可以正常打开了。解决思路:1、首先是硬件主板电路存在问题,给Camera上电电压不对,但经过示波器测... 阅读全文
posted @ 2014-05-23 22:39 zhgt 阅读(3823) 评论(0) 推荐(2) 编辑
摘要: 原文地址:LDD3中网络驱动源码注释作者:rubylc_unix1. #include 2. #include 3. #include 4. #include 5. 6. #include 7. #include /* printk() */ 8. #include /* kmalloc() */ 9. #include /* error codes */ 10. #include /* size_t */ 11. #include /* mark_bh */ 12. 13. #include 14. #include /* s... 阅读全文
posted @ 2013-09-16 16:23 zhgt 阅读(746) 评论(0) 推荐(0) 编辑
摘要: I2C总线的通信过程(见图4-8)主要包含三个主要阶段:起始阶段、数据传输阶段和终止阶段。1. 起始阶段在I2C总线不工作的情况下,SDA(数据线)和SCL(时钟线)上的信号均为高电平。如果此时主机需要发起新的通信请求,那么需要首先通过SDA和SCL发出起始标志。当SCL为高电平时,SDA电平从高变低,这一变化表示完成了通信的起始条件。在起始条件和数据通信之间,通常会有延时要求,具体的指标会在设备厂商的规格说明书中给出。2. 数据传输阶段I2C总线的数据通信是以字节(8位)作为基本单位在SDA上进行串行传输的。一个字节的传输需要9个时钟周期。其中,字节中每一位的传输都需要一个时钟周期,当新的S 阅读全文
posted @ 2013-09-07 15:49 zhgt 阅读(30246) 评论(0) 推荐(0) 编辑
摘要: 在电子电路中,常可以看到VCC、VDD和VSS三种不同的符号,它们有什么区别呢?一、解释VCC:C=circuit 表示电路的意思, 即接入电路的电压;VDD:D=device 表示器件的意思, 即器件内部的工作电压;VSS:S=series 表示公共连接的意思,通常指电路公共接地端电压。二、说明1、对于数字电路来说,VCC是电路的供电电压,VDD是芯片的工作电压(通常Vcc>Vdd),VSS是接地点。2、有些IC既有VDD引脚又有VCC引脚,说明这种器件自身带有电压转换功能。3、在场效应管(或COMS器件)中,VDD为漏极,VSS为源极,VDD和VSS指的是元件引脚,而不表示供 阅读全文
posted @ 2013-09-03 09:48 zhgt 阅读(2260) 评论(0) 推荐(0) 编辑
摘要: 本文转自:http://blog.csdn.net/hilyoo/article/details/4464448给定一个结构体中某个变量地址,可否得到结构体变量的地址?答案是可以,但是对不同的场合有不同的结果;这与微处理器平台、编译器的处理不可分割。首先,对于处理器,大尾端、小尾端的因素必须考虑;其次:一、ANSIC标准中并没有规定,相邻声明的变量在内存中一定要相邻。为了程序的高效性,内存对齐问题由编译器自行灵活处理,这样导致相邻的变量之间可能会有一些填充字节。对于基本数据类型(int char),他们占用的内存空间在一个确定硬件系统下有个确定的值,所以,接下来我们只是考虑结构体成员内存分配情 阅读全文
posted @ 2013-08-01 11:33 zhgt 阅读(4336) 评论(0) 推荐(1) 编辑
摘要: 开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点。内核中定义了struct class结构体,顾名思义,一个struct class结构体类型变量对应一个类,内核同时提供了class_create(…)函数,可以用它来创建一个类,这个类存放于sysfs下面,一旦创建好了这个类,再调用device_create(…)函数来在/dev目录下创建相应的设备节点。这样,加载模块的时候,用户空间中的ude 阅读全文
posted @ 2013-07-30 10:50 zhgt 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 本文主要是保存,原文链接:http://www.cnblogs.com/wwang/category/269350.html随着计算机的周边外设越来越丰富,设备管理已经成为现代操作系统的一项重要任务,这对于Linux来说也是同样的情况。每次Linux内核新版本的发布,都会伴随着一批设备驱动进入内核。在Linux内核里,驱动程序的代码量占有了相当大的比重。下图是我在网络上搜索到的一幅Linux内核代码量的统计图,对应的内核版本是2.6.29。我们可以很明显的看到,在Linux内核中驱动程序的比例已经非常高了。Linux 2.6内核最初为了应付电源管理的需要,提出了一个设备模型来管理所有的设备。在 阅读全文
posted @ 2013-07-27 14:34 zhgt 阅读(486) 评论(0) 推荐(0) 编辑