博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2013年5月9日

摘要: volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如:volatile int i=10;int j = i;...int k = i;volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把 阅读全文

posted @ 2013-05-09 13:51 寒风凌意 阅读(404) 评论(0) 推荐(0) 编辑

2013年5月7日

摘要: 转自:http://www.cnblogs.com/zhuyp1015/archive/2012/05/22/2514008.htmlbird1015的博客在编写Linux内核驱动程序的时候,如果不动态生成设备号的话,需要自己手动分配设备号,有可能你分配的设备号会与已有设备号相同而产生冲突。因此推荐自动分配设备号。使用下面的函数:int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)该函数需要传递给它指定的第一个次设备号baseminor(一般为0)和要分配的设备数... 阅读全文

posted @ 2013-05-07 15:01 寒风凌意 阅读(404) 评论(0) 推荐(0) 编辑

2013年4月17日

摘要: 转载自http://www.360doc.com/content/12/0919/13/10388890_237015006.shtmlAndroid蓝牙系统分为四个层次,内核层、BlueZ库、BlueTooth的适配库、BlueTooth的JNI部分、Java框架层、应用层。下面先来分析Android的蓝牙协议栈。 Android的蓝牙协议栈采用BlueZ来实现,BlueZ分为两部分:内核代码和用户态程序及工具集。 内核代码主要由BlueZ核心协议和驱动程序组成;蓝牙协议实现在内核源代码net/bluetooth中,驱动程序位于内核源代码目录driver/bluetooth中。用... 阅读全文

posted @ 2013-04-17 12:11 寒风凌意 阅读(368) 评论(0) 推荐(0) 编辑

2013年3月19日

摘要: 最新做我们的项目是,要用到把底层中的字节数组传到上层,但是上层申请的数组空间在底层不能直接使用,要经过JNI层获取一个上层的地址才行。例如:JNIEXPORT jint uploadbytes(JNIEnv *env, jobject obj, jbyteArray arr){ jbyte *data = env->GetByteArrayElements(arr, 0); //然后这个地址才能在C语言中使用 load((char *)data); env->ReleaseByteArrayElements(arr, data, 0);} 阅读全文

posted @ 2013-03-19 16:54 寒风凌意 阅读(181) 评论(0) 推荐(0) 编辑

2013年3月8日

摘要: 首先.c文件中要加入#include "utils/Log.h"头文件 然后andorid.mk中需要加入 LOCAL_SHARED_LIBRARIES += \ libcutils \ libutils LOCAL_LDLIBS += _llog 最后就可以写自定义宏了: #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, "signedname", __VA_ARGS__) 其实就是用到了__android_log_print这个函数,对应的还有 ANDROID_LOG_VERBOSE A 阅读全文

posted @ 2013-03-08 18:52 寒风凌意 阅读(180) 评论(0) 推荐(0) 编辑

2013年3月6日

摘要: 1、adb pull /system/build.prop . 先把这个文件down下来。2、在最后面加一行qemu.hw.mainkeys=0,0代表显示,1代表隐藏。3、再adb push build.prop /system 目录下。4、重启完成。注意,在第三步的时候,可能会不成功,因为一般/system这个目录挂载的都是只读的,不让修改。我们可以adb shell进去,mount -o remount,rw /system这个目录,将其重新挂载即可。 阅读全文

posted @ 2013-03-06 12:58 寒风凌意 阅读(292) 评论(0) 推荐(0) 编辑

2013年2月4日

摘要: *定位到指定行n:输入"nG"或输入"ngg"或输入":n"这里,n就是指定的行的行号.注意,有时候G=gg*跳到屏幕顶部:输入“H”这里,停在第一个非空字符上。加一个数字N,是指距窗口顶部的行数(如'NH'正数第N行)*跳到屏幕底部:输入“L”这里,停在第一个非空字符上。加一个数字,是指距窗口底部的行数(如'NL'倒数第N行)*跳到屏幕中间:输入“M”这里,停在第一个非空字符上*跳到文件首:输入"gg"*跳到文件尾:输入“G”*光标移至句尾:输入")"*光标移至 阅读全文

posted @ 2013-02-04 14:03 寒风凌意 阅读(802) 评论(0) 推荐(0) 编辑

2012年12月28日

摘要: 转自:http://www.cnblogs.com/qingblog/archive/2012/06/27/2566021.htmlGoogle参考了Windows的消息处理机制,在Android系统中实现了一套类似的消息处理机制。学习Android的消息处理机制,有几个概念(类)必须了解:1. Message消息,理解为线程间通讯的数据单元。例如后台线程在处理数据完毕后需要更新UI,则可发送一条包含更新信息的Message给UI线程。2. Message Queue消息队列,用来存放通过Handler发布的消息,按照先进先出执行。3. HandlerHandler是Message的主要处理者 阅读全文

posted @ 2012-12-28 11:45 寒风凌意 阅读(128) 评论(0) 推荐(0) 编辑

摘要: 转自:http://blog.csdn.net/xiazdong/article/details/7768807一、广播发送者&广播接收者介绍1.广播接收者广播接收者简单地说就是接收广播意图的Java类,此Java类继承BroadcastReceiver类,重写:public void onReceive(Context context,Intent intent),其中intent可以获得传递的数据;广播意图就是通过Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)发送的意图 阅读全文

posted @ 2012-12-28 11:42 寒风凌意 阅读(149) 评论(0) 推荐(0) 编辑

摘要: 转自:http://www.cnblogs.com/lfsblack/archive/2012/09/14/2685783.htmlIIC设备是一种通过IIC总线连接的设备,由于其简单性,被广泛引用于电子系统中。在现代电子系统中,有很多的IIC设备需要进行相互之间通信IIC总线是由PHILIPS公司开发的两线式串行总线,用于连接微处理器和外部IIC设备。IIC设备产生于20世纪80年代,最初专用与音频和视频设备,现在在各种电子设备中都广泛应用IIC总线有两条总线线路,一条是串行数据线(SDA),一条是串行时钟线(SCL)。SDA负责数据传输,SCL负责数据传输的时钟同步。IIC设备通过这两条总 阅读全文

posted @ 2012-12-28 11:40 寒风凌意 阅读(728) 评论(0) 推荐(0) 编辑