- 博客(86)
- 资源 (5)
- 收藏
- 关注
原创 Git学习笔记
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 推荐学习网址http://git-scm.com/dochttp://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-understand-git/ 1、commit树不是线性的,不是一条直线,而是tree,是树状的,可以有很多分
2014-11-08 11:36:33
5237
原创 一个打印调试信息的例子
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz #include #define HAOYU_DEBUG_TYPE #ifdef HAOYU_DEBUG_TYPE#define HAOYU_DEBUG(...) \ do { \ printf("\n[HAOYU_DEBUG] ------------------ i
2014-10-22 08:53:22
3523
原创 Linux FrameBuffer分析之编写基于FrameBuffer接口的应用程序
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz测试环境:Ubuntu 12.04终端模式 在网上找到一个很不错的介绍FrameBuffer相关知识的帖子,原帖网址如下:http://bbs.chinaunix.net/thread-1932291-1-1.html,现把其中测试FrameBuffer的应用程序代码转帖过来,方便分析学习:#in
2014-07-23 16:12:08
7744
1
原创 Android架构分析之Android智能指针(二)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutzAndroid版本:4.4.2 在上一篇文章中,我们分析了Android智能指针中的强指针sp,本文我们来分析弱指针wp。为什么需要弱指针wp呢?我们来考虑下面一种场景:有两个类CParent和CChild,CParent类中有一个智能指针指向CChild对象,CChild类中有一个智能指针指向CPa
2014-06-13 16:29:00
4432
原创 Android架构分析之Android智能指针(一)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutzAndroid版本:4.4.2 在C++语言中,指针操作是最容易问题的地方,常见的指针操作错误有以下几种:1、 定义一个指针,但没有对其进行初始化。这种情况下,指针会指向一个随机地址,此时使用该指针,将出现不可预知的错误。一般定义一个指针时,应该同时对该指针进行初始化。2、
2014-05-28 13:27:45
3939
原创 Android架构分析之Android消息处理机制(三)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutzAndroid版本:4.4.2 本文我们来分析AndroidUI线程即主线程是怎样实现对消息的处理的。UI线程的实现类定义在frameworks/base/core/java/android/app/ActivityThread.java文件中。我们来看Android对ActivityThread
2014-05-20 17:28:20
3373
原创 Android架构分析之Android消息处理机制(二)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutzAndroid版本:4.4.2 在上一篇文章中我们看了一个使用Handler处理Message消息的例子,本文我们来分析一下其背后隐藏的Android消息处理机制。我们可能比较熟悉Windows操作系统的消息处理模型:while(GetMessage(&msg,NULL, 0, 0)){
2014-05-19 17:05:23
3338
原创 Android架构分析之Android消息处理机制(一)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 在这个系列文章中我们将来分析Android消息处理机制。
2014-05-14 16:23:50
3942
1
原创 ftrace用法
ftrace官方文档在kernel/Documentation/trace/ftrace.txt文件中。 使用ftrace接口之前,如果系统没有自动挂载debugfs文件系统,则要先手动挂载。# mount -t debugfs nodev /sys/kernel/debug ftracer的目录为/sys/kernel/debug/tracing,下面介绍这个目录下的常用文件
2014-04-16 10:22:52
15195
原创 LDD3源码分析之块设备驱动程序
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz编译环境:Ubuntu 10.10内核版本:2.6.32-38-generic-paeLDD3源码路径:examples/sbull 一、块设备驱动基本操作我们从init函数开始分析,sbull的init函数内容如下:403static int __init sbull_init(vo
2014-01-27 17:38:04
4914
1
原创 Linux设备驱动程序架构分析之SD Spec摘要
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文是对SDSpecifications Part 1 Physical Layer Simplified Specification Version 4.10的摘要记录,具体信息可参考该文档。 3、SD Memory Card System Concept3.1 读-写属性按照读/写属
2013-12-27 12:09:15
12262
3
原创 Linux设备驱动程序架构分析之MMC/SD(二)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 一、s3cmci_ops分析在上一篇文章中我们分析了Mini2440 MMC/SD驱动的probe函数s3cmci_probe。在该函数中初始化了struct mmc_host指针变量mmc,其中,设置mmc->ops为s3cmci_ops,s3cmci_ops定义在dri
2013-12-24 14:09:44
15873
1
原创 Linux设备驱动程序架构分析之MMC/SD(一)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 MMCMMC全称MultiMedia Card,由西门子公司和SanDisk公司1997年推出的多媒体记忆卡标准。MMC卡尺寸为32mm x24mm x 1.4mm,它将存贮单元和控制器一同做到了卡上,智能的控制器使得MMC保证兼容性和灵活性。MMC卡具有MMC和SPI
2013-12-19 13:31:53
31654
1
原创 Linux设备驱动程序架构分析之一个I2C驱动实例
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 编写一个I2C设备驱动程序的工作可分为两部分,一是定义和注册I2C设备,即i2c_client;二是定义和注册I2C设备驱动,即i2c_driver。下面我们就以mini2440的I2C设备at24c08 EEPROM为例,介绍如何完成这两个工作。 一、定义和注册I2C
2013-12-12 14:50:26
15690
5
原创 Linux设备驱动程序架构分析之I2C架构(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 I2C体系架构的硬件实体包括两部分:硬件I2C Adapter:硬件I2C Adapter表示一个硬件I2C适配器,也就是I2C控制器。一般是SOC中的一个接口,也可以用GPIO模拟。硬件I2C Adapter主要用来在I2C接口上产生I2C时钟信号和数据信号。硬件I2C
2013-12-09 15:48:48
15182
3
原创 Linux设备驱动程序架构分析之I2C Spec摘要
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 1、I2C总线介绍I2C(Inter-Integrated Circuit,内置集成电路)总线是由PHILIPS公司提出的一种串行总线,用于连接处理器及其外围设备,它具有如下特点:l 只有两条总线线路:一条串行数据线(SDA),一条串行时钟线(SCL)。l 每个连接到总线的器件都可以使用
2013-12-09 15:30:54
5244
原创 Linux设备驱动程序架构分析之platform(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 一、platform bus的注册platform bus注册是通过platform_bus_init函数完成的,该函数定义在drivers/base/platform.c文件中,其内容如下: 904int __init platform_bus_init(void)
2013-11-12 16:09:08
9669
原创 Linux设备模型分析之device_driver(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 一、device_driver定义 181/** 182 * struct device_driver - The basic device driver structure 183 * @name: Name of the device driver. 184
2013-11-11 17:46:54
8746
原创 Linux设备模型分析之device(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 一、device定义device结构体定义在include/linux/device.h文件中: 598/** 599 * struct device - The basic device structure 600 * @parent: The device's
2013-11-06 15:51:49
11134
2
原创 Linux设备模型分析之bus(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 一、bus定义Linux设备驱动模型中的bus,即可以是物理总线(如PCI、I2C总线)的抽象,也可以是出于设备驱动模型架构需要而定义的虚拟的“platform”总线。一个符合Linux设备驱动模型的device或device_driver必须挂靠在一个bus上,无论这个b
2013-11-01 15:48:56
7109
原创 Linux设备模型分析之kset(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 一、kset结构定义kset结构体定义在include/linux/kobject.h文件中,其内容如下:142/**143 * struct kset - a set of kobjects of a specific type, belonging to a sp
2013-10-29 09:44:00
5464
原创 Linux设备模型分析之kobject(基于3.10.1内核)
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz内核版本:3.10.1 一、kobject结构定义kobject是Linux设备模型的最底层数据结构,它代表一个内核对象。kobject结构体定义在include/linux/kobject.h文件中: 60struct kobject { 61 const char
2013-10-24 10:17:29
5534
1
原创 Android应用开发学习笔记之BroadcastReceiver
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 一、BroadcastReceiver机制概述 Broadcast Receiver是Android的一种“广播发布/消息接收”机制,或者说的更准确一些,是一种“监听”机制。作为广播发布者的应用程序,可以在不知道谁(如果有的话)将接收这个广播消息的情况下发出一个广播消息(广播的消息实际上就是一个
2013-08-29 08:12:28
1817
原创 Android应用开发学习笔记之Service
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android Service分为两种,一是StartedService,另一种是Bound Service。下面来看Android官方文档对这两种Service的定义:A service canessentially take two forms:StartedA service is "
2013-08-28 11:20:59
1485
原创 Android应用开发学习笔记之AsyncTask
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 在上一篇文章中我们学习了多线程和Handler消息处理机制,如果有计算量比较大的任务,可以创建一个新线程执行计算工作,但是子线程无法更新UI界面,所以通过Handler消息处理机制与UI线程通信,更新UI界面。有一个问题需要注意,创建的子线程太多时,会影响系统性能。针对这个问题,Android为我们
2013-08-23 15:46:39
1365
原创 Android应用开发学习笔记之多线程与Handler消息处理机制
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 和JAVA一样,Android下我们可以通过创建一个Thread对象实现多线程。Thread类有多个构造函数,一般通过构造函数Thread(Runnable runnable)实现多线程,代码如下:Thread thread = new Thread(new Runnable() {
2013-08-23 15:39:58
1542
原创 Android应用开发学习笔记之ContentProvider
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz ContentProvider用于为其它应用程序提供共享数据,它为不同应用程序间共享数据提供了统一的操作接口。 一、ContentProvider的Uri每个ContentProvider都有对应的Uri,例如,一个自定义的ContentProvider Uri格式如下:content:
2013-08-22 17:00:26
2054
2
原创 Android应用开发学习笔记之播放视频
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 在Android中,我们可以通过使用VideoView类或者MediaPlayer类来播放视频。 一、使用VideoView类播放视频要使用VideoView类播放视频,首先要在布局文件中添加VideoView组件,然后在Activity中获取该组件,并使用VideoView.setVide
2013-08-22 16:32:04
8906
3
原创 Android应用开发学习笔记之播放音频
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android支持常用音视频格式文件的播放,本文我们来学习怎样开发Android应用程序对音视频进行操作。Android提供了MediaPlayer和SoundPool两个类能够用来播放音频,MediaPlayer类通常用来播放较大的文件,比如一首MP3歌曲,这种文件通常保存在SD卡上,而不是保存在
2013-08-22 16:27:23
7579
2
原创 Android应用开发学习笔记之绘图
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 一、绘图常用类介绍 在Android中绘图时,常用到的几个类是Paint、Canvas、Bitmap和BitmaptFactory。其中,Paint类代表画笔,Canvas类代表画布。有了Paint和Canvas类就可以进行绘图操作了。 1、 Paint类Android官方文档中对
2013-08-22 16:21:51
7163
原创 Android应用开发学习笔记之事件处理
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android提供的事件处理机制分为两类:一是基于监听的事件处理;二是基于回调的事件处理。对于基于监听的事件处理,主要的做法是为Android界面组件绑定特定的事件监听器。对于基于回调的事件处理,主要是重写Android组件特定的回调函数或重写Activity的回调函数。基于监听的事件处理,在前面的
2013-08-16 15:05:50
1531
原创 Android应用开发学习笔记之菜单
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android中的菜单分为选项菜单(OptionMenu)和上下文菜单(Context Menu)。通常使用菜单资源文件创建菜单。菜单资源文件通常放置在res\menu目录下,这个目录默认情况下是不存在的,需要我们自己创建该目录。菜单资源的根元素通常是标记,在该标记中可以包含两种子元素:1、标记,用
2013-08-16 15:03:29
1865
原创 Android应用开发学习笔记之Intent
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Intent是什么呢?来看Android官网上的定义:An intent is an abstractdescription of an operation to be performed. It can be used with startActivity tolaunch an Activi
2013-08-16 14:53:19
1728
原创 Android应用开发学习笔记之Fragment
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Fragment翻译成中文就是“碎片”、“片断”的意思,Fragment通常用来作为一个Activity用户界面的一部分。例如,可以用Fragment1在左边显示一个列表,用Fragment2在右边显示选中列表项的详细内容。两个Fragment属于同一个Activity,并且每个Fragment有它自己
2013-08-13 15:14:24
1709
原创 Android应用开发学习笔记之startActivityForResult
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 如果我们有这样的需求:使用Activity1启动Activity2,Activity2处理完数据后,将处理结果返回给Activity1,这时,可以使用startActivityForResult()函数。下面我们通过一个例子来看这个函数的用法,该例子运行效果如下:我们先来看主布局文
2013-08-08 16:35:20
2897
原创 Android应用开发学习笔记之使用Bundle交换数据
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 在上一篇文章中我们学会了怎样从一个Activity中启动另外一个Activity执行,但是有时我们需要在两个Activity之间传递一些数据,这种需要可以通过Bundle来实现。下面我们就通过一个例子看怎样通过Bundle在两个Activity之间传递数据。该程序运行效果如下:首先看主布局
2013-08-08 16:30:25
3326
原创 Android应用开发学习笔记之启动另外一个Activity
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 一个Activity可以启动另外一个Activity,以实现比较复杂的功能,我们来看一个例子,其运行效果如下图所示:主布局文件main.xml如下所示:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/a
2013-08-06 16:43:18
2062
1
原创 Android应用开发学习笔记之AlertDialog对话框
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文中我们通过一个例子来看AlertDialog对话框的实现,其运行效果如下:主布局文件main.xml内容如下:<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi
2013-08-06 16:35:31
1863
原创 Android应用开发学习笔记之状态栏通知
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 状态栏通知涉及到两个类,一是Notification,它代表一个通知;另一个是NotificationManager,它是用于发送Notification的系统服务。使用状态栏通知一般有4个步骤:1、 通过getSystemService()方法获取NotificationManag
2013-08-06 16:31:41
3741
原创 Android应用开发学习笔记之Toast消息提示框
作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz 本文我们来看Toast消息提示框的用法。使用Toast消息提示框一般有三个步骤:1、 创建一个Toast对象。可以使用两种方法创建Toast对象,一种是使用Toast构造函数,另一种方法是使用Toast.makeText()方法创建。使用构造函数创建代码如下:Toast toas
2013-08-06 16:20:12
2554
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人