自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

转载 Jni中C++和Java的参数传递

如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章:这 些资料的例子中,大多数只是输入一些简单的参数,获取没有参数。而在实际的使用过程中,往往需要对参数进行处理转换。才可以被C/C++程序识别。比如我 们在C++中有一个结构(Struct)DiskInfo ,需要传递一个类

2012-12-29 20:18:26 400

转载 android service 学习(下)

通常每个应用程序都在它自己的进程内运行,但有时需要在进程间传递对象,你可以通过应用程序UI的方式写个运行在一个不同的进程中的service。在android平台中,一个进程通常不能访问其他进程中的内存区域。所以,他们需要把对象拆分成操作系统能理解的简单形式,以便伪装成对象跨越边界访问。编写这种伪装代码相当的枯燥乏味,好在android为我们提供了AIDL工具可以来做这件事。 AIDL(an

2012-07-16 15:13:13 281

转载 android service学习(上)

android service 学习(上) Service是android 系统中的一种组件,它跟Activity的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service的启动有两种方式:context.startService()和context.bindService()。 使用context.startService() 启动Se

2012-07-16 14:11:10 304

转载 【转】文件系统中的对象总结及对目录项对象的重点理解 .

文件系统中主要对象:●超级块(superblock)对象: 存放系统中已安装文件系统的有关信息。对于基于磁盘的文件系统(具有I/O操作),这类对象通常对应于存放在磁盘上的文件系统控制块(FCB),也就是说,每个文件系统都有一个超级块对象。●索引节点(inode)对象: 存放关于具体文件的一般信息。对于基于磁盘的文件系统,这类对象通常对应于存放在磁盘上的文件控制块(FCB),也就

2012-05-16 19:57:10 334

转载 【转】linux虚拟文件系统

虚拟文件系统(VFS)在我看来, "虚拟"二字主要有两层含义:1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口;2, 目录结构本身并不是绝对的, 每个进程可能会看到不一样的目录结构. 目录结构是由"地址空间(namespace)"来描述的, 不同的进程可能拥有不同的namespace, 不同的namespace可能有着不

2012-05-08 12:52:32 272

转载 【转】ADROID 2.1 架构解析 8 触摸屏

8 触摸屏8.1 分类输入事件 文件:frameworks/base/libs/ui/EventHub.cppint EventHub::open_device(const char *deviceName){       ...       uint8_t key_bitmask[(KEY_MAX+1)/8];    memset(key_bitmask, 0, si

2012-05-05 10:33:06 267

转载 【转】内核调度-时间片算法

内核在微观上,把CPU的运行时间分成许多分,然后安排给各个进程轮流运行,造成宏观上所有的进程仿佛同时在执行。双核CPU,实际上最多只能有两个进程在同时运行,大家在top、vmstat命令里看到的正在运行的进程,并不是真的在占有着CPU哈。所以,一些设计良好的高性能进程,比如nginx,都是实际上有几颗CPU,就配几个工作进程,道理就在这。比如你的服务器有8颗CPU,那么nginx work

2012-04-26 16:02:01 313

转载 c++异常处理

第一节、使用异常一、语法规则和结构图示try {        try-fields        throw exception-object;}catch (exception-[object | pointer | reference] e) {        catch-fields}catch (...) {        catch-fiel

2012-04-24 15:44:54 294

转载 点操作符和箭头操作符

首先介绍一下C++中的结构。对于一个结构来说:struct MyStruct{       int member_a; };如果有个变量MyStruct s,那么使用其中的成员元素时可以用s.member_a = 1;如果采用指针方法访问,比如MyStruct * ps,那么同样的访问就必须使用如下形式:(*ps).member_

2012-04-06 20:18:59 323

原创 设备模型

2012-03-13 21:56:31 345

翻译 input.h

#ifndef _INPUT_H#define _INPUT_H/* * Copyright (c) 1999-2002 Vojtech Pavlik * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Gen

2012-03-12 20:52:16 2929

原创 Android应该构成和工作原理



2012-03-12 19:53:37 368

原创 android 模拟器音乐导入

1 在windows下打开cmd,任意选择目录,输入mksdcard 512M sdcard.img,则在该目录下生成sdcard.img镜像2 导入音乐 adb push xxx\xxx.mp3 /sdcard3 扫描Dev Tools ->Media scanner 即可

2012-02-27 16:23:40 650

转载 如何编写Linux驱动

http://www.360doc.com/content/10/1003/18/1317564_58184176.shtml

2012-02-15 16:01:06 250

原创 硬件通讯 IO

1 外设与CPU通讯:通过对设备寄存器的读写控制,内存区和IO区没有概念上的差别,都是通过在地址总线和控制总线上发出电信号再存取到数据总线。2 独立编址和统一编址:独立编址:IO端口地址和存储器地址独立,分开设置,互不影响。采用这种方式,对IO端口的操作使用专门的输入输出指令;统一编址:即从存储空间画出一部分地址给IO端口,CPU访问端口和访问存储器的指令形式上完全相同,只能从地址

2012-01-11 16:47:30 406

转载 【转】IO端口和IO内存

在驱动程序编写过程中,很少会注意到IO Port和IO Mem的区别。虽然使用一些不符合规范的代码可以达到最终目的,这是极其不推荐使用的。结合下图,我们彻底讲述IO端口和IO内存以及内存之间的关系。主存16M字节的SDRAM,外设是个视频采集卡,上面有16M字节的SDRAM作为缓冲区。1.      CPU是i386架构的情况在i386系列的处理中,内存和外

2012-01-09 14:58:49 515

转载 【转】地址空间、内核空间、IO地址空间

有这么一系列的问题,是否在困扰着你:用户程序编译连接形成的地址空间在什么范围内?内核编译后地址空间在什么范围内?要对外设进行访问,I/O的地址空间又是什么样的?先 回答第一个问题。Linux最常见的可执行文件格式为elf(Executable and LinkableFormat)。在elf格式的可执行代码中,ld总是从0x8000000开始安排程序的“代码段”,对每个程序都是这样。至于程

2012-01-05 20:31:43 1790

转载 【转】Linux内核内存分配函数

1.原理说明  Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示。四级页表分别为:  * 页全局目录(Page Global Directory)  * 页上级目录(Page Upper Directory)  * 页中间目录(Page Middl

2012-01-05 15:45:39 366

转载 【转】Linux地址映射(1)--线性映射与非线性映射

一,线性映射与非线性映射1.       内存管理物理内存管理:Linux内存最小管理单位为页(page),通常一页为4K。初始化时,linux会为每个物理内存也建立一个page的管理结构,操作物理内存时实际上就是操作page页。某些设备会映射在物理内存地址外,这些地址会在使用时建立page结构。 进程内存管理:Linux进程通过vma进行管理,每个进程都有一个task

2012-01-05 11:09:51 365

转载 【转】Linux系统中的计时机制及相关时间函数

http://javadino.blog.sohu.com/74292567.html1. 时间相关硬件 计算机系统中的时间主要由三种时钟硬件提供的:实时时钟(Real Time Clock,RTC),可编程间隔定时器(Programmable Interval Timer,PIT),时间戳计数器(Time Stamp Counter,TSC)。这些时钟硬件都是基于固定频率的晶振来提供

2011-12-30 14:20:03 348

转载 【转】同步/异步与阻塞/非阻塞的区别

http://www.cppblog.com/converse/archive/2009/05/13/82879.html我喜欢用自己的语言通过联系现实生活中的一些现象解释一些概念,当我能做到这一点时,说明我已经理解了这个概念.今天要解释的概念是:同步/异步与阻塞/非阻塞的区别.这两组概念常常让人迷惑,因为它们都是涉及到IO处理,同时又有着一些相类似的地方.首先来解释同步和

2011-12-26 22:25:13 247

转载 【转】ioctl的实现

在驱动程序中实现的ioctl函数体内,实际上是有一个switch{case}结构,每一个case对应一个命令码,做出一些相应的操作。怎么实现这些操作,这是每一个程序员自己的事情,因为设备都是特定的,这里也没法说。关键在于怎么样组织命令码,因为在ioctl中命令码是唯一联系用户程序命令和驱动程序支持的途径。命令码的组织是有一些讲究的,因为我们一定要做到命令和设备是一一对应的,这样才不会将正确的命

2011-12-23 15:45:00 302

转载 信号量与自旋锁

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

2011-12-22 20:41:39 236

转载 轻量级、中量级和重量级线程

在计算机编程里,线程(thread)是一例代码序列,它们被当作一个单元,典型的单一用户、事务或消息来操作。线程有时候用量级来描述,这是指对于给定的线程有多少任务信息需要被系统保存下来以便访问。     比如,Unix进程的环境包括硬件注册、核心堆栈、用户级堆栈等等。需要切换到这些环境的时候,再几千微秒中,这被认为是很长的时间,所以Unix进程是个重量级线程(heavyweight thre

2011-12-22 19:31:44 490

转载 kernel module编程(八):读取proc文件之seq_file

在上次我们使用了read_proc的方式通过/proc文件读取kernel module的信息。作者给的例子他自己说是ugly。而我们在读取大量数据时发现,受到用户buffer大小的限制(page的大小),可能需要读取多次,不仅需要记录上次读取的位置,而且由于每次读取我们申请了信号量,读取完释放,那么如果多次读取的间隔中,如果信号量被写所获取就好出现混乱。 linux kernel提供se

2011-12-19 21:04:05 284

原创 linux dd常用命令参数

dd 的主要选项:指定数字的地方若以下列字符结尾乘以相应的数字:b=512, c=1, k=1024, w=2, xm=number mif=file输入文件名,缺省为标准输入。of=file输出文件名,缺省为标准输出。ibs=bytes一次读入 bytes 个字节(即一个块大小为 bytes 个字节)。obs=bytes

2011-12-19 10:20:13 407

转载 Linux设备文件简介

http://www.ej38.com/showinfo/linux-112563.htmlLinux设备文件简介概述设备管理是linux中比较基础的东西,但是由于Linux智能程度的越来越高,Udev的使用越来越广泛,使得越来越多的Linux新用户对 /dev 目录下的东西变得不再熟悉。有时候遇见问题就会变得抓狂。Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序

2011-12-17 18:47:57 262

原创 scull设备

scull在ldd3这本书中是这么介绍的:从一个真实设备驱动提取的代码片段, scull 是一个字符驱动, 操作一块内存区域好像它是一个设备.scull 的优势在于它不依赖硬件. scull 只是操作一些从内核分配的内存.这个设备除了演示内核和字符驱动的接口和允许用户运行一些测试之外, 不做任何有用的事情.scull的作用是当用户申请内存空间时,只有用户写时才需要申请内存,这就存在零散的内

2011-12-17 11:23:21 422

转载 linux设备节点

Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为"虚拟设备")。每个设备在 /dev 目录下都有一个对应的文件(节点)。可以通过 cat

2011-12-17 11:16:11 178

原创 《Linux C编程一站式学习》查漏补缺

1 编译的过程 高级C->汇编语言

2011-12-12 22:22:16 68

翻译 内核2.6.39/Documentation/kbuild/kconfig-language.txt

介绍------------这个配置数据库是以树形结构组织的配置选项的集合: - 代码成熟级别选项| - 提示开发和/或不完整的代码/驱动器- 常规设置| - 网络支持| - 系统V IPC| - BSD的进程记帐| - sysctl的支持- 支持可装载模块| - 启用支持可装载模块| - 所有模块符号上设置版本信息| -

2011-12-09 20:43:14 487

翻译 内核2.6.39/Documentation/kbuild/kconfig.txt

这个文件包含了一些使用 "make *config"的帮助信息使用 "make help"列表所有可能的配置目标 xconfig ('qconf')和menuconfig ('mconf') 程序也内嵌了帮助文本, 确保核对它for导航,搜索以及其它通用帮助=====================================================

2011-12-09 20:23:04 481

翻译 内核2.6.39/Documentation/kbuild/kbuild.txt

输出文件modules.order--------------------------------------------------这个文件记录了模块在Makefile文件中出现的顺序。这个文件由modprobe使用以确定地解决匹配多个模块的别名问题。modules.builtin----------------------------------------

2011-12-09 19:18:30 481

转载 【转】如何在2.6内核中编译内核模块

在源码树中编译模块官方内核模块的源代码都是按模块(驱动)类型组织的, 我们到内核源码树的drivers目录可以看到char, usb, block之类的子目录. 那么我们在内核源码树中添加文件时, 最好也遵循这些分类. 分类的规则自己灵活把握.下面以前面的"hello, world"这个简单的模块为例, 来看看如何在内核源码树中编译内核模块.1, 不新建子目录(1)

2011-12-08 21:39:23 258

转载 Git和Repo扫盲——如何取得Android源代码(转)

两篇Git的使用技巧性文章:活灵活现用Git--基础篇:  http://phoenixtoday.blogbus.com/logs/33458940.html活灵活现用Git--技巧篇:  http://phoenixtoday.blogbus.com/logs/35149540.htmlGit 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的

2011-11-02 19:17:41 236

原创 近期作业2011.10.21—2011.11.~

SD卡分区打补丁镜像制作bootimg解压

2011-11-02 09:35:26 230

原创 补丁

vim -d 1.txt 2.txt打开编辑器查看两个文本的不同 git diff a.txt b.txt >patch.txt 将文本的不同输出到patch.txtpatch 1.txt

2011-10-22 12:19:14 234

原创 磁盘分区问题

mkfs.vfat 3.0.9 (31 Jan 2010)mkfs.vfat: unable to open /dev/sdb1umount: /dev/sdb2: not mountedmke2fs 1.41.14 (22-Dec-2010)/dev/sdb2 is apparently in use by the system; will not make a filesyst

2011-10-22 10:18:59 174

原创 linux下对优盘分区

可视化工具cfdiskb  切换当前分区启动标志d  删除分区g  更改柱面磁头每磁头扇区数等信息h  打印当前屏幕m  当前磁盘使用最大化(会导致在dos下的不兼容)n 新建分区p  分区表打印到屏幕或文件,有几种不同格式的分区    r - Raw data (exactly what would be written to disk)

2011-10-22 10:15:55 615

原创 交叉编译工具链的安装(arm-2008q3为例)

1 从PC上拷贝arm-2008q3的压缩文件到ubuntu的/usr/local,解压缩2 在/root下.bashrc文件中添加环境变量;编辑编辑.bash_profile也行。 export PATH=$PATH:/usr/local/arm-2008q3/bin;3 使设置生效# source /root/.bashrc4 检查是否生效 # arm-none-linux-g

2011-10-21 19:58:47 1063

空空如也

空空如也

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

TA关注的人

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