自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yangyang

Do what you want to do!

  • 博客(65)
  • 收藏
  • 关注

转载 volatile详解

一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的

2014-05-18 09:04:25 713

原创 软中断,tasklet和工作队列的区别与联系

软中断,tasklet和工作队列的区别与联系        为了让中断处理运行的快,同时要完成相应的全部工作。根据具体的内容将中断分为两个部分:上半部分(中断处理程序)和下半部分(推后处理程序)。上半部分需要立即执行,并且有严格的时间限制,这些工作是在所有中断被禁止的情况下完成的,剩余部分工作推迟到下半部分。下半部分的任务就是执行与中断处理密切相关但中断处理程序本身不执行的工作。在Linu

2012-10-09 09:43:21 3995

转载 信号量和自旋锁的差别 .

1)内核同步措施      为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。我们的重点不是介绍这些方法的详细用法,而是强调为什么使用这些方法和它们之间的差别。      Linux 使用的同步机制可以说从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随Linux从单处理器到对称多处理器的过度;伴随着从非

2012-09-26 10:05:28 1341

转载 如何编写linux下nand flash驱动

【简介】如何编写linux下nand flash驱动Version: V0.1Time:10/06/2008Author:green-waste@163.com【编写驱动之前要了解的知识】1.硬件方面:【Flash的种类】Flash主要分nand flash和nor flash除了网上最流行的这个解释之外:NAND和NOR的比较我再多说几句,nor的

2012-09-26 09:24:32 1221

转载 spin_lock详解

与UP和SMP无关的定义:typedef struct { volatile unsigned int lock; } spinlock_t; #define SPIN_LOCK_UNLOCKED  (spinlock_t){ 0 }#define local_irq_save(x) __asm__ __volatile__(\"pushfl ; popl %0 ; c

2012-09-25 16:35:15 5843

转载 Linux内核的同步机制

一、引言在现代操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要一些同步机制来同步各执行单元对共享数据的访问。尤其是在多处理器系统上,更需要一些同步机制来同步不同处理器上的执行单元对共享的数据的访问。在主流的Linux内核中包含了几乎所有现代的操作系统具有的同步机制,这些同步机制包括:原子操作、信号量(semaphore)、读写信号量(rw_semap

2012-09-25 16:21:05 669

原创 Linux2.6中断下半部分的三种实现机制---工作队列 .

Linux 2.6内核使用了工作队列来处理任务,他在使用上和 tasklet最大的不同是工作队列的函数可以使用休眠,而tasklet的函数是不允许使用休眠的。工作队列的使用又分两种情况,一种是利用系统共享的工作队列来增加自己的工作,这种情况处理函数不能消耗过多时间,这样会影响共享队列中其他任务的处理;别的一种是创建自己的工作队列并添加工作。(一)利用系统共享的工作队列添加工作:

2012-09-25 15:55:25 726

转载 一个IT老总给职场新人的一点建议

1.一定要有独立的人格、独立的思想。一个经过独立思考而坚持错误观点的人比一个不假思索而接受正确观点的人更值得肯定。不要成为灌输教育的牺牲品。2.在进行职业生涯规划的时候,不妨以此作为思考的出发点。根据不同的职业生涯规划来塑造各自的核心竞争力。只有知道自己以后要做什么,才能知道自己应该学什么。  3.专业无冷热,学校无高低。没有哪个用人单位会认为你代表了你的学校或者你的专业。千万

2012-09-25 15:38:12 928

转载 软件分层

软件的分层目前典型的应用软件的结构:三层结构表述层:提供与用户交互的界面。GUI(图形用户界面)和web页面是表述层的两个典型的例子。业务逻辑层:实现各种业务逻辑。数据库层:负责存放和管理应用的持久性业务数据。区分物理层和逻辑层软件的分层包含两种含义:一种是物理分层,即每一层都运行在单独的机器上,这意味着创建分布式的软件系统;一种是逻辑分层,指的是在单个软件模块中完成特定的

2012-09-18 08:50:52 874

转载 Android4.0 TouchScreen

1. TouchScreen功能在Android4.0下不工作       原来在Android2.3.5下能正常工作的TouchScreen功能,移植到Android 4.0就不能正常工作了。凭直觉,Android4.0肯定有鬼。真是不看不知道,一看吓一跳。在Android 4.0中,Event Input地位提高了,你看看,在Adroid2.3.5中,它在frameworks/base/l

2012-08-31 16:39:33 3183

转载 很有道理!!!

1,人生就是投资和收益的人生。如果你有钱,就投入金钱;如果你没有金钱,而有经验和能力,就投入经验和能力;如果你既没有金钱,也没有经验和能力,但是你有热情、勤奋和努力,那就投入热情、勤奋和努力。如果你既没有金钱,也没有经验和能力,连热情、勤奋和努力也没有,那就别想这些了。  2,比赚钱更重要的是找到你自己的赚钱动力;   3,比金钱重要的是时间,比时间重要的是时机,比时机重要的是你要抓住

2012-08-30 11:11:48 584

转载 Linux设备驱动之I2C架构分析

一:前言I2c是philips提出的外设总线.I2C只有两条线,一条串行数据线:SDA,一条是时钟线SCL.正因为这样,它方便了工程人员的布线.另外,I2C是一种多主机控制总线.它和USB总线不同,USB是基于master-slave机制,任何设备的通信必须由主机发起才可以.而 I2C 是基于multi master机制.一同总线上可允许多个master.关于I2C协议的知识,这里不再赘述.可

2012-08-28 16:03:42 909

转载 Android display架构分析

Android display架构分析(一)http://hi.baidu.com/leowenj/blog/item/429c2dd6ac1480c851da4b95.html高通7系列硬件架构分析如上图,高通7系列 Display的硬件部分主要由下面几个部分组成:A、MDP高通MSM7200A内部模块,主要负责显示数据的转换和部分图像处理功能理,如YUV转RGB,放大缩

2012-08-08 15:43:45 1279

转载 Android 中电源状态切换

1, Android中支持的电源状态:        PM_SUSPEND_ON -- 设备处于全电源状态,也就是正常工作状态;        PM_SUSPEND_MEM -- suspend to memory,设备进入睡眠状态,但所有的数据还保存在内存中,只有某些外部中断才可以唤醒设备。       PM_SUSPEND_STANDBY  ----- 在大部分的Android设备

2012-08-02 14:45:32 8546 2

原创 Android 进入休眠分析

在 Android 的上层是使用 goToSleep() 这个函数让系统进入休眠的。但是这个命令为什么会让 Android 进入 Suspend Mode。 以前在做其他系统的时候, 一般都要自己手工去控制 apm_bios 这个设备的,比如使用 ioctl() 调用 apm_bios。所有的系统其原理都是差不多的。只是 Android 加入了一个封装, 使程序员可以更简单的操作, 可以不

2012-08-02 14:43:19 3549

原创 关机充电降低功耗方法

在新项目中,关机充电时,由于AP没有休眠,功耗过大,导致关机充电时间过长。于是想到一下解决办法。具体措施如下:(1)    背光关闭后,进入EARLY_SUSPEND,并且停止刷屏。(2)    使CPU的频率进入动态管理模式,这样的话,在关闭背光后CPU的主频会降到最小频率122M。经过上述措施,关机充电的耗流能降低到。----------------------------

2012-08-01 11:19:55 1443

原创 Linux内核驱动程序初始化顺序的调整

这几天再调试两家TP,因为项目需要两家TP兼容,所以考虑到了两个TP驱动初始化的先后顺序的问题。TP的驱动在I2C初始化之前就运行起来了,而这时I2C提供的API还处于不可用状态。在网上查了一些资料总结一下。所有的__init函数在区段.initcall.init中保存了一份函数指针,在初始化时内核会通过这些函数指针调用这些__init函数指针,并在整个初始化完成后,释放整个init区段(

2012-08-01 10:21:13 2026

原创 Android4.0 TP多点变单点,单点变多点问题

由于某些IC的特性,当为多点时,默认靠近Y轴的点ID为ID0,这样就会造成当多点变单点时,单点失效,单点变多点时,会变成单点的划线动作。解决这个BUG的方法:当按在触摸屏上的point数与上次的point数不同,就不上报此次坐标。这样就可以解决问题。 //fix one touch two touch issueif ( preFingerNum!=touchData.nFinger

2012-08-01 09:52:45 1194

转载 给开发人员的时间管理建议

软件开发是非常令人兴奋的工作,经过多年的工作,你不仅可以得到相应的报酬(随着工作经验增长)还会有其他晋升的机会。大多数人只关心保持头浮出水面。但这并不是我们所要追求的目标,那仅仅是我们在学校或者孩童时代的梦想?为了赚更多的钱,大多数人还会找额外的工作并且不太关注编程以外的东西。没有时间休息、没有时间和家人朋友小聚、除了工作还是工作。因此导致压力越来越大,对生活的不满足感油然而生。其实我

2012-07-27 15:33:01 1381

原创 Android Recovery 的代码分析

1、调用main函数在gingerbread/bootable/recovery/recovery.c最下面有个main(),这是recovery应用的主入 口,当编译recovery的时候,会生成一个名为recovery的可执行文件,我这边是放在out/目录下recovery/文件系统的/sbin目 录下,调用recovery可执行文件时会传入参数,这些参数就是main函数的参数,如下

2012-07-27 14:12:39 716

原创 如何将图片转换成*.img

手机开机界面是在bootloader阶段完成的,这时需要将开机log图片转换成.img,存在flash的某个分区中。系统启动时会从该分区读取。转换步骤:1.图片必须是png的,如果不是用ps另存为png格式。 2.在linux下,任意路径。 convert ***.png -depth 8 rgb:***.raw 3. out/host/linux-x86/bin/

2012-07-18 15:45:50 9791

原创 主设备号和file_operations结构关系; ioctl和unlocked_ioctl, ioctl简单测试例子

open一个字符设备的过程是从VFS层open系统调用 ===> def_chr_fops-->open ===> cdev->fops->open===> device specific operation 如果是同一类设备,比如系统中有多个framebuffer,那么就把共有的操作放在cdev->fops->open ,这时向系统注册的仅仅是这一个驱动程序;将这类主设备

2012-07-18 14:43:14 2952

原创 linux多线程驱动中调用udelay()对系统的影响

以前没考虑过这个问题,而且之前可能运气比较好,虽然用了udelay但也没出什么奇怪的问题,今天在 CSDN上看到了liukun321咕唧咕唧的帖子,觉得很受用,再此做简要的记录和分析:      驱动建立线程的是内核线程 跟普通进程一样都是可以调度的,然而udelay是靠死循环来实现的延迟,当你的内核线程没有占用cpu时,很可能超过1ms都不会执行你的程序,100us是小于进程可能的最小时

2012-07-16 17:20:11 3107

转载 __main() 和 main()

__main() 和 main()(转载)因为我们通常在BOOTLOADER中都已做好了比较细致的初始化工作,包括代码的搬运,所以我们最好别再调用库函数__main(),因为__main()作为ADS集成好的库函数,会对系统进行初始化设置,可能会与我们的初始化发生冲突,故在我们做好初始化后最好别调用__main()。仿真时若调了__main()且没设置entry会报警告,__main()库函数

2012-07-16 16:09:25 14839

转载 浅析为何要内存对齐

在分析内存对其之前,先简要简要介绍一下ARM处理器是如何进行数据操作的:     ARM是32位处理器,armv4能高效的处理8,16,32位的数据,但是大多数arm处理器直接操作的是32位的数据。地址跳变基数为4字节即4.一次存取数据量为32位。(硬件角度),我们一次取到的32位数据不一定是一个完整的数据构,可能是两个数据结构,也可能是某个数据结构的一部分,(而编译器帮助我们将一条对

2012-07-16 16:07:57 1716

原创 android 按键映射***.kl文件中的WAKE和WAKE_DROPPED的定义

android系统中,获取到键盘的键值后,会搜索/system/usr/keylayout/*.kl这个文件key 115   VOLUME_UP         WAKE_DROPPEDkey 114   VOLUME_DOWN       WAKE_DROPPEDkey 102   HOME              WAKE如果驱动code与其中的键值相对应,andr

2012-07-12 15:45:36 12879 1

转载 TP多点触摸协议

http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt

2012-07-12 15:39:48 1717

原创 Android 4.0.3 Home键失效 有点意思~~

刚在调试TP驱动时发现,MENU,BACK可以用,就是HOME有问题。Kernel送上去是102,但上层打印的却是122. 后来我在/system/usr/keylayout中没找到加载的7x27a_kp_tp.kl,只有7x27a_kp_cx.kl。后来我把7x27a_kp_tp.kl直接 push到/system/usr/keylayout目录下,再重启一下Home键就可以用了

2012-07-12 15:35:05 8729 8

原创 多点触摸与单点触摸接口主要区别

上发单点触摸事件input_report_key(input,ABS_MT_TRACKING_ID,0);input_report_key(input, BTN_TOUCH, 1);input_report_abs(input, ABS_MT_POSITION_X, ts->tc.x1);input_report_abs(input, ABS_MT_POSITION_Y, ts->

2012-07-06 18:01:46 11428 1

原创 JAVA视屏学习网站

http://bbs.langsin.com/index.php?fromuid=29996

2012-07-06 14:53:27 736

原创 JAVA学习网站推荐

http://www.java-cn.com  java中文网http://java.sun.com     sun官方网站http://www.comejava.com     动网先锋http://www.sawin.cn   小龙亭http://www.java.com.cn    java讨论区http://www.cn-java.com   中文java技术网ht

2012-07-06 14:48:45 668

转载 java 中的抽象类和接口

我个人对他们做以下几点理解:1. 抽象类(abstract class)是用来继承的(extends),接口(interface )是用来实现的( implements)。  从某种意义上说,interface是一种特殊形式的abstract class。  2. 抽象类和接口的格式区分!(1)抽象类的格式   abstract class Demo {

2012-07-06 14:46:37 377

转载 两步学会Java Socket编程

(第一步)1.什么是socket   所谓socket通常也称作"  套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。   以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程

2012-07-06 14:44:31 431

原创 eclipse安装说明

1 解压缩eclipse-SDK-3.2-win32.zip2 在eclipse根目錄中新建2个文件links(必须用该名字),myplugins。  間附件圖片1中灰色文件3 解压NLpack1-eclipse-SDK-3.2-win32.zip(多國语言包),VE-runtime-1.2.zip(可视化界面包),  GEF-  runtime-3.2.zip,emf-sdo

2012-07-06 14:42:24 565

原创 Linux与Android 多点触摸协议

单点触摸信息是以ABS承载并按一定顺序发送,多点触摸信息则是以ABS_MT承载并按一定顺序发送,然后通过调用input_mt_sync()产生一个 SYN_MT_REPORT event来标记一个点的结束,告诉接收方接收当前手指的信息并准备接收其它手指的触控信息。为了使用功能强大的多点触控设备,就需要一种方案去上报用户层所需的详细的手指触摸数据。这个文档所描述的多点触控协议可以让内核驱动程序向

2012-07-06 11:17:47 834

转载 C/C++学习资料

C++大学基础教程http://download.chinaitlab.com/program/files/11283.htmlC语言核心编程http://download.chinaitlab.com/program/files/9251.htmlBorland c++4.0程序设计http://download.chinaitlab.com/progra

2012-07-05 14:39:27 1116

原创 LCM调试总结

1.PWM的频率    对于LCD的背光来说,一般做法是通过升压芯片来提供对电压的支持。而这些升压芯片都会有PWM输入PIN,通过PWM来调节背光的明暗度。 不过有时候我们会发现背光调节幅度陡然增大缩小,或是背光不足够亮(相对于作为GPIO PIN输出HIGH来说),但是通过万用表测量PWM输入,电压降的幅度都是处于正常情况下,这时候我们不妨调低PWM的输出频率。因为有很多升压芯片对PWM

2012-07-02 17:43:36 6218

转载 linux内核休眠与唤醒

在Linux中,休眠主要分三个主要的步骤:(1)冻结用户态进程和内核态任务;(2)调用注册的设备的suspend的回调函数;(3)按照注册顺序休眠核心设备和使CPU进入休眠态。      冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程的上下文。当这些进程被解冻的时候,他们是不知道自己被冻结过的,只是简单的继续执行。如何让Linux进入休眠呢?用户可以通过读写sys文

2012-07-02 16:59:09 901

转载 Linux USB驱动框架分析

Linux USB驱动框架分析(一)    初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了。好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动开发。但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货。当然,还会顺带提一下其他的驱动程序写法。       事实上,Linux的

2012-03-23 18:08:46 442

转载 进程和线程的区别

简单的说,你每启动一个程序,就启动了一个进程。在Windows 3.x下,进程是最小运行单位。在Windows 95/NT下,每个进程还可以启动几个线程,比如每下载一个文件可以单独开一个线程。在Windows 95/NT下,线程是最小单位。WINDOWS的多任务特性使得线程之间独立运行,但是它们彼此共享虚拟空间,也就是共用变量,线程有可能会同时操作一片内存。 线程与进程的区别

2012-03-19 16:53:02 374

空空如也

空空如也

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

TA关注的人

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