自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Allen.Yao的专栏

Android linux 学习

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

转载 字符串指针与字符数组的区别

字符串指针与字符数组的区别数组和指针都可以在它们的定义中用字符串常量进行初始化,尽管看上去一样,底层的实现机制却不相同。定义指针时,编译器并不为指针所指向的对象分配空间,它只是分配指针本身的空间。例如:下面的定义创建了一个字符串常量(为其分配了内存):       char *p=”abcdefg”;      //”abcdefg”存储在静态常量区,p指向该”ab

2014-07-03 15:59:18 711

转载 C++之string学习笔记(1)

C++之string学习笔记(1)====================string类介绍====================      在C++时代,由于诞生了类,出项了一种C++风格的字符串,也就是string型字符串。我们在调用string类来定义字符串的时候,我们必须在程序开头添加头文件:#include

2014-07-03 15:48:59 682

转载 linux下热插拔事件的产生是怎样通知到用户空间,kobject_uevent_env之uevent

目录(?)[+]1.kobject, ktype, kset原文地址:kobject代表sysfs中的目录。ktype代表kobject的类型,主要包含release函数和attr的读写函数。比如,所有的bus都有同一个bus_type;所有的class都有同一个class_type。kset包含了subsystem概念,kset本身也是一个ko

2014-07-03 09:52:38 899

转载 基于s3c6410 otg controller的gadget driver及usb枚举分析

目录(?)[+]一.简介     一个完整的USB系统由两部分构成,即usb主机(usb host)和usb设备(usb device)。usb主机通常是指我们的pc机、具有host controller的嵌入式设备;像u盘、usb鼠标、键盘属于usb设备,具有otg controller的usb设备,它即可工作在host模式又可以工作在device模式,模式之间通过HNP协议

2014-07-03 09:49:16 2202

转载 usb枚举过程分析之守护进程及其唤醒

目录(?)[+]        usb热插拔,即usb设备可以实现即插即用,像U盘一样,插到电脑里就可以用,不用时可以直接拔除,这个动作不会影响USB设备使用性能。        在linx 系统中,usb热插拔由两部分方面共同实现,即内核空间和用户空间,内核由一个守护进程实现,用户空间由udev 程序实现。在内核空间里,有一个专门用于监控usb hub的状态的守护进程,守护进程通

2014-07-03 09:44:17 1581

转载 usb枚举过程分析之hub_events

当守护程序第一次运行或usb port上状态发生变化,守护进程被唤醒都会运行hub_events函数,这个函数在usb系统中处理核心位置,usb的枚举过程就是由它完成,usb枚举过程流程图如图1所示;图1 usb枚举流程图         由于hub_events函数比较长这里分几个部分进行讲解:[html] view plaincopystatic v

2014-07-03 09:42:27 4096 1

转载 USB枚举过程(Enumeration)

USB架构中,hub负责检测设备的连接和断开,利用其中断IN端点(Interrupt INEndpoint)来向主机(Host)报告。在系统启动时,主机轮询它的根hub(RootHub)的状态看是否有设备(包括子hub和子hub上的设备)连接。USB总线拓扑结构见下图(最顶端为主机的RootHub): USB总线拓扑结构(USB Bus Topology)一旦获

2014-07-03 09:38:24 4476

转载 linux device driver之sdio驱动编程

先谈谈如何写linux驱动:- 在驱动模块初始化函数中调用register_chrdev(),将驱动向系统注册为一个字符设备,伪装成一个文件,上层的应用可以通过访问这个文件(字符设备),来操作驱动模块。- 驱动模块注册为字符设备后,还需要用户在命令行中敲mknod命令来创建一个对应的字符文件,上层应用就是用open, close, read, write该文件这样的方式来访问驱动模块。

2014-07-03 09:32:46 2384

转载 Android Wi-Fi工作原理

目录(?)[+]第一部分 Android概述在介绍Wi-Fi之前,先简要介绍一下Android系统,主要分析一下Android的按层实现的原理。Android层次结构是整个Android体系中所有应用实现的基础框架,而Android源代码结构则与Wi-Fi的实现细节有关。1.1基础知识Android是一款当前最为流行的手机操作系统,它本身的开放性加上Google公司

2014-07-03 09:29:04 1181

转载 WLAN驱动分析文档

目录(?)[+]目 录1引言 31.1目的 31.2项目背景 31.3参考资料 32预备知识 32.1WLAN技术 32.2802.11协议简述 32.2.1概述 32.2.2802.11工作方式 42.2.3802.11物理层 42.2.4802.11b的增

2014-07-03 09:24:14 1116

转载 SDIO架构初解2

谨以此文纪念过往的岁月以SDIO为例其会采用mmc_attach_sdio来实现驱动和设备的匹配,其本质还是根据sdio_bus的匹配规则来实现匹配。在mmc_attach_sdio中首先是mmc匹配一个bus,即采用何种bus来进行mmc bus来处理host。在这里需要理解一点就是在SDIO中,对于SD卡存储器mmc为实体设备,而对于非SD卡存储器,如SDIO接口的设备,则mmc则表征为b

2014-07-03 09:21:09 781

转载 Linux下检测网卡与网线的连接状态

在机顶盒的网络连接中,其中有一项就是检测网卡与网线是否连接,当没有连接网线时,通过浏览器打开错误页面提示网线未连接。那么如何检测网卡与网线是否连接。一、使用ioctl向socket发送SIOCETHTOOL命令字[cpp] view plaincopy"font-size:18px;">#include  #include  #include    #inclu

2014-07-03 00:57:28 4366

转载 解决类似 BUG: soft lockup - CPU#2 stuck for 67s! 问题的思路

编写内核程序,出现soft lockup错误是再常见不过了,类似BUG: soft lockup - CPU#2 stuck for 67s!。刚开始调试内核时,出现这样的错误,往往两眼一抹黑,不知道该如何下手了。但其实,这样的问题解决多了,会发现原因基本就两种情况,死锁和死循环。所以,在出现soft lockup错误时,不用慌张,只要分析相关代码是不是存在死循环,比如 for循环的退出条

2014-07-03 00:54:48 36608 1

转载 Linux 内存测试工具memtester

下载地址:http://pyropus.ca/software/memtester/  有源码安装包、deb包、rpm包等。源码已经编译好,只要make一下就好了。使用方法:Usage: memtester [-p physaddrbase] [B|K|M|G] [loops] 如:memtester 28G 3 #测试28G的内存3次。因为系统运行和本工具运行都需要内存,

2014-07-03 00:52:19 1743

转载 DAPM之一:概述

DAPM--Dynamic Audio Power Management,对应结构体是snd_soc_dapm_widget和snd_soc_dapm_route,对应的操作函数是snd_soc_dapm_new_controls()、snd_soc_dapm_add_routes()和snd_soc_dapm_new_widgets()。在我看来,DAPM是音频驱动初接触者的噩梦。从何处来,到何

2014-07-03 00:47:03 568

转载 数组名和指针的区别

近段时间在整理自己大学几年来学习C++的点点滴滴,写这篇文章源于看林锐博士的《高质量C++指南》时,看到文章直接把指针和数组名视为同一东西,原文为“数组名本身就是一个指针,是一个指针常量,即a等价于int * const a,因此你不能试图修改数组名的值”,摘自第三版127页第7.2.1小节。    自己初学C++时也被数组和指针搞得昏头转向过,通过多方求证和对比实验已把指针和数组弄得稍明

2014-07-01 18:41:28 493

转载 关于字符数组的初始化

字符数组可以在定义时进行初始化.有两种初始化方法.方法1:逐个字符赋给数组中各元素.这种方法最容易理解.例如:char c[5]={ 'H','a','p','p','y' };把5个字符分别赋给c[0]至c[4].以下是几点说明:(1) 如果大括号内提供的初值个数(即字符个数)大于数组长度,则编译时将出错.如果初值个数小于数组长度,则只将这些字符赋给前面的数组元素,其

2014-07-01 18:28:36 3258

转载 c语言中 printf的打印类型

转换说明及作为结果的打印输出%a 浮点数、十六进制数字和p-记数法(C99)%A 浮点数、十六进制数字和p-记法(C99)%c 一个字符 %d 有符号十进制整数 %e 浮点数、e-记数法%E 浮点数、E-记数法%f 浮点数、十进制记数法 %g 根据数值不同自动选择%f或%e.%G 根据数值不同自动选择%f或%e.%i 有符号十进制

2014-07-01 18:20:40 6113

转载 c语言字符数组的定义与初始化

1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。[cpp] view plaincopychar str[10]={ 'I',' ','a','m',' ',‘h’,'a','p','p','y'};  即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大

2014-07-01 18:03:01 6639

转载 C语言程序编译的内存分配:

C语言程序编译的内存分配:1.栈区(stack) --编译器自动分配释放,主要存放函数的参数值,局部变量值等;2.堆区(heap) --由程序员分配释放;3.全局区或静态区 --存放全局变量和静态变量;程序结束时由系统释放,分为全局初始化区和全局未初始化区;4.字符常量区 --常量字符串放与此,程序结束时由系统释放;5.程序代码区--存放函数体的二进制代码例: //main

2014-07-01 15:55:53 606

转载 常量字符串为什么位于静态存储区?

char *c="chenxi";书上说: "chenxi"这个字符串被当作常量而且被放置在此程序的内存静态区。那一般的int i=1;1也是常量,为什么1就不被放置在此程序的内存静态区了呢?请高手指点!所有的字符窜常量都被放在静态内存区因为字符串常量很少需要修改,放在静态内存区会提高效率例:char str1[] = "abc";char str2

2014-06-30 15:59:30 602

转载 LCD屏幕,IPS屏幕,TFT屏幕,SLCD屏幕和AMOLED手机屏幕介

【导读】:手机屏幕从发光上讲有着本质的区别,一种是靠外部光源的照亮,一种是自发光。这两种屏幕各有各自的优势,其中LCD阵营的HTC One X和OLED阵营的三星GALAXY SIII也是目前最具代表性的两种屏幕,受到用户的普遍好评。    目前主流的手机采用的屏幕,从大范围上讲都可以归类为LCD与OLED,两种屏幕从发光上讲有着本质的区别,一种是靠外部光源的照亮,一种是自发光。。

2014-06-30 10:50:18 5888

转载 C++中关于new和delete的使用

最近一直在啃 C++ Primer 中文版第4版,发现 C++中new和delete应用遍布全书,现对其使用作简单总结。在C++中,可以使用new和delete动态创建和释放数组或者单个对象,现在对它们的使用一一道来。1.创建动态数组        数组类型的变量有三个重要的限制:数组长度固定不变,在编译时必须知道它的长度,数组只在定义它的块语句中存在。对于动态分配的数组,虽然长度是固

2014-06-26 22:39:40 544

转载 用g++编译最简单的C++程序hello.C出现可以用-Wno-deprecated屏蔽的警告,想问个究竟

程序如下:     #include           main   ()     {             cout     }             警告如下:     in   file   included   from   /usr/include/c++/3.2.2/backward/iostream.h:31,          

2014-06-24 17:48:08 5588 1

转载 Linux vi编辑器的使用说明

摘要: 一、vi的工作模式  vi有两种工作模式:  编辑模式:用来输入和编辑文件的模式,屏幕上会显示用户的键入,按键不是被解释为命令执行,而是作为文本写到用户的文件中。  指令模式:用来编辑、存盘和退出文件的模 ...一、vi的工作模式  vi有两种工作模式:  编辑模式:用来输入和编辑文件的模式,屏幕上会显示用户的键入,按键不是被解释为命令执行,而是作为文本写到

2014-06-19 16:32:19 746

转载 名词解析:PGA-----可编程增益放大器

PGA是什么意思PGA是Pmgrammable Gain Amplifier的英文简称,中文意思是可编程增益放大器。PGA是一种通用性很强的放大器,其放大倍数可以根据需要用程序进行控制。采用这种放大器,可通过程序调节放大倍数,使A/D转换器满量程信号达到均一化,因而大大提高测量精度。可编程增益放大器(PGA)有两种:组合PGA和集成PGA。组合PGA一般由运算放大器、仪

2014-06-19 16:04:19 19849

转载 c/c++ 多态的概念

预备知识:c++赋值兼容原则:    一个公有派生类的对象在使用上可以被当做基类的对象,反之则禁止。    派生类的对象可以被赋值给基类对象。    派生类的对象可以初始化基类的引用(指针也一样)  多态的概念:  1:先期联编:能够在编译时就能够确定哪个重载的成员函数被调用的情况  2:后期联编(多态性):系统在运行时,能够根据其参数类型确定调用哪个重载的成员

2014-06-13 18:39:37 904

转载 u-boot链接分析

一个典型的嵌入式系统中,bootloader代码放在NOR Flash或NAND Flash里面,系统加电或复位后,首先运行这段代码。通常把bootloader代码放在NOR Flash里面,NAND Flash由于硬件原因不能随机访问,需要特殊的硬件支持机制。bootloader代码除了初始化以外就是搬运程序,即地址重定位(relocate)。我们为什么需要relocate?主要是经济方

2014-06-13 17:46:07 542

转载 关于u-boot.map 文件的作用

用make命令编译时自动生成的,里面包含所有的函数逻辑地址.printf("0x%x\n", function_name); /* 这个逻辑地址,可以在u-boot.map里找到对应的函数名,用于是debug查错,相当好,例如函数指针. */实际上,kernel开发,也常常用syste.map文件.LDFLAGS += -Bstatic -T $(LDSCRIPT) -Ttex

2014-06-13 17:43:18 1748

转载 c++类的实例化,有没有new的区别

A a;A * a = new a();以上两种方式皆可实现类的实例化,有new的区别在于:1.前者在堆栈中分配内存,后者为动态内存分配,在一般应用中是没有什么区别的,但动态内存分配会使对象的可控性增强。2.不加new在堆栈中分配内存3.大程序用new,小程序直接申请4.只是把对象分配在堆栈内存中5.new必须delete删除,不用new系统会自动回收内存

2014-06-13 17:08:10 7186 1

转载 设备与驱动的匹配

看了许久,今天终于是了解了驱动及设备的注册及彼此的绑定过程,详细内容请见下文,如有不对地方请指正,多谢了!一、 先看一下这个int __init devices_init(void)  {      devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL);      if (!devices

2014-06-11 01:44:21 830

转载 驱动与设备的匹配

xxu0123456789的专栏目录视图摘要视图订阅有奖征资源,博文分享有内涵        5月推荐博文汇总        大数据读书汇--获奖名单公布驱动与设备的匹配分类: Linux 驱动学习 2012-08-20 14:00 184人阅读 评论(0)收藏 举报nullea

2014-06-11 01:38:46 712

转载 shell中wc命令详解

shell中wc命令详解wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 该命令各选项含义如下: - c 统计字节数。 - l 统计行数。 - w 统计字

2014-06-09 13:48:52 3181

原创 关于linux/android的休眠唤醒比较好的博客

http://blog.csdn.net/lizhiguo0532/article/details/6453567

2014-05-26 00:22:31 585

转载 标准linu休眠和唤醒机制分析(四)

suspend第三、四、五阶段:platform、processor、corestatic int suspend_enter(suspend_state_t state){       int error;        if (suspend_ops->prepare) { // 平台特定的函数,mtkpm.c,有定义,对pmic和cpu dll的一些设置   

2014-05-26 00:20:34 654

转载 标准linu休眠和唤醒机制分析(三)

五、suspend和resume代码走读    下面对suspend分的几个阶段都是按照pm test的5中模式来划分的:freezer、devices、platform、processors、core。suspend第一阶段:freezerint enter_state(suspend_state_t state){       int error;       

2014-05-26 00:18:28 650

转载 标准linu休眠和唤醒机制分析(二)

三、pm_test属性文件读写int pm_test_level = TEST_NONE; static const char * const  pm_tests[__TEST_AFTER_LAST] = {       [TEST_NONE] = "none",       [TEST_CORE] = "core",       [TEST_CPUS] = "proces

2014-05-26 00:16:36 658

转载 标准linu休眠和唤醒机制分析(一)

说明:1. Based on linux2.6.32,  only for mem(SDR)2. 有兴趣请先参考阅读: 电源管理方案APM和ACPI比较.docLinux系统的休眠与唤醒简介.doc3. 本文先研究标准linux的休眠与唤醒,android对这部分的增改在另一篇文章中讨论4. 基于手上的一个项目来讨论,这里只讨论共性的地方 虽然linux支持三种省电模式

2014-05-26 00:14:58 729

转载 linux内核定时器使用及原理

下面只是原文的一部分,全文参考网址:http://wenku.baidu.com/view/cab7028fcc22bcd126ff0c58.html 内核定时器使用 内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于  和 kernel/timer.c 文件中。被调度的函数肯定是异步执行的,它类似于一种“软件中断”,而且是

2014-05-25 23:51:51 1967

转载 Linux命令exit - 退出当前shell

exit命令用于退出当前shell,在shell脚本中可以终止当前脚本执行。 常用参数格式:exit n退出。设…用途说明exit命令用于退出当前shell,在shell脚本中可以终止当前脚本执行。 常用参数格式:exit n退出。设置退出码为n。(Cause the shell to exit with a status of n.) 格式:exit退出。退出

2014-05-25 23:46:41 25511

空空如也

空空如也

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

TA关注的人

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