- 博客(30)
- 资源 (22)
- 收藏
- 关注
原创 C语言二分法
int fun16(int *t,int n,int b){ int lo =0; int hi =n; int mid =0; while(lo { mid =(hi + lo)/2; printf("->lo=%d mid=%d hi=%d\n",lo,mid,hi); if(b == t[mid]) return mid; else
2012-02-23 15:30:29
760
1
原创 c语言指针注意事项
这几天对C语言的指针温习了下,感觉理解又更深入了一步C语言的精髓是指针我想确实一点都不错,但是在使用的时候有很多要注意的地方,大概总结一下:1.指针指向常量区,是不能修改其值的比如:char *p ="abcfd";char *ptr ="abcfd";*(p+1) ='C'; //此时会报错,因为"abcfd"为常量区,其值是无法修改的 解决方法用字符数组来解决
2012-02-22 15:21:51
990
原创 详解android的screentimeout机制
前一次的博文只是对如何监听settings里的screentimeout做了解释,而具体是如何实现系统睡眠并为做详细说明,近来有对此做休整,所以重温下具体实现. 1.设置里为何只有保存数据,而并没有保存后的数值对系统的影响? ——>displaysettings.java @Override protected void onCreate(Bundle saved
2012-02-16 15:31:56
1671
转载 Java类型转换
一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问题等。下面笔者就开发中的一些体会介绍给大家。 我们知道,Java的数据类型分为三大类,即布尔型、字符型和数值型,而其中数值型又分为整型和浮点型;相对于数据类型,Java的变量类型为布尔型boolean;字符型cha
2012-02-08 11:13:29
343
原创 java里public/private/protected权限关系
用一个图标来表示,相信大家一看就明白 要注意的主要在protected在包外的时候,new出来的新对象是无法访问的。 本类包内其它类包外其它类派生对象派生对象public√√√√√protected√√√
2012-02-08 10:01:14
577
原创 android里设置screentimeout
最近在修改android的锁屏时间,发现在settings里只有读写数据库的接口,却没发现这些值究竟是怎么起作用的最后全局搜索,才发现会在phonewindow里用ContentObserver来对setting.db做监听测试了个小APK来验证,证实是这样的附件中为具体源码(附件后缀要修改rar),下面贴出来如下:ContentobserveActivity.java p
2012-01-16 14:22:21
1096
原创 android数据库数据监听
最近在修改android的锁屏时间,发现在settings里只有读写数据库的接口,却没发现这些值究竟是怎么起作用的最后全局搜索,才发现会在phonewindow里用ContentObserver来对setting.db做监听测试了个小APK来验证,证实是这样的附件中为具体源码,下面贴出来如下:ContentobserveActivity.java package com.a
2012-01-16 14:08:58
159
原创 平均值求sensor的ADC值算法
#define ADC_BUFFER_NUM 6 int adc_value_buf[ADC_BUFFER_NUM]; int adc_index_count; bool adc_buf_initialized; static int get_adcvalue(struct ics_proximity_data *ics){ int i = 0; int j = 0
2012-01-16 14:02:43
892
原创 状态机实现按键检测
最近发现GPIO的中断功能有点问题,查了两天确实也没查出来为什么,毕竟中断管理也不没那么容易,所有暂且用扫描的办法来解决,下面这个算法很经典,记下,备以后参考.--------------------------------------------file "key.h"
2011-09-29 09:38:44
2019
原创 linux 系统调用
现在,您或许正在查看设备驱动程序,并感到奇怪:“函数 foo_read() 是如何被调用的?”或者可能疑惑: “当我输入cat /proc/cpuinfo 时,cpuinfo() 函数是如何被调用的?”内核完成引导后,控制流就从相对直观的“接下来调用哪个函数?”改变为取决于系
2011-08-28 23:59:36
144
转载 标准linu休眠和唤醒机制分析
转载 coolraining 的关于linux的睡眠唤醒的博文,写的很好,部分内容我有做增加说明,希望可以给需要了解这部分的朋友带来方便.
2011-08-21 11:44:10
204
转载 linux 内核调试技术
对于任何编写内核代码的人来说,最吸引他们注意的问题之一就是如何完成调试。由于内核是一个不与某个进程相关的功能集,其代码不能很轻松地放在调试器中执行,而且也不能跟踪。本章介绍你可以用来监视内核代码和跟踪错误的技术。用打印信息调试最一般的调试技术就是监视,
2011-08-11 16:11:57
1336
转载 android文件系统移植
很好的东西,谢谢这位同学 转载 作者:汕头大学—黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析。 主要源代码目录介绍
2011-08-11 14:12:52
497
原创 linux kernel 中的 setup_irq和request_irq
讲解的很详细,转载下. Linux 内核提供了两个注册中断处理函数的接口:setup_irq和request_irq。这两个函数都定义在kernel/irq/manage.c里。/** Internal function to register an irqact
2011-08-11 14:07:35
1493
转载 linux kernel里的setup_irq和request_irq
讲解很详细, Linux 内核提供了两个注册中断处理函数的接口:setup_irq和request_irq。这两个函数都定义在kernel/irq/manage.c里。/** Internal function to register an irqaction -
2011-08-11 14:05:47
245
原创 编辑本段Ext4(The fourth extended file system)
查看了下android关于文件属性方面的操作时,发现其使用的是EXT4文件系统,关于EXT4文件系统的简介如下,希望大家也都对此有所了解. Ext4是一种针对ext3系统的扩展日志式文件系统,是专门为 Linux 开发的原始的扩展文件系统(ext 或 extfs)的第四
2011-08-11 11:22:55
470
转载 常见的Linux内核中内存分配函数
1.原理说明 Linux内核中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示。四级页表分别为: * 页全局目录(Page Global Directory)
2011-07-30 18:11:10
787
原创 Android 的属性系统
每个属性都有一个名称和值,他们都是字符串格式。属性被大量使用在Android系统中,用来记录系统设置或进程之间的信息交换。属性是在整个系统中全局可见的。每个进程可以get/set属性。在系统初始化时,Android将分配一个共享内存区来存储的属性。这些是由“init”守护进程
2011-07-30 09:38:39
342
原创 linux中的 IO端口映射和IO内存映射
下面是今天看到两篇关于linux中的 IO端口映射和IO内存映射的文章,时间关系,没来得及深入理解,有空好好看看 CPU地址空间CPU地址空间(一)地址的概念1)物理地址:CPU地址总线传来的地址,由硬件电路控制其具体含义。物理地址中很大一部分是留给内存条中的内存的,但也常被映射
2011-07-07 15:17:33
3809
3
原创 linux中 likely与unlikely
照抄别人的日志.. 看内核时总遇到if(likely( )){}或是if(unlikely( ))这样的语句,最初不解其意,现在有所了解,所以也想介绍一下。likely() 与 unlikely()是内核(我看的是2.6.22.6版本,2.6的版本应该都有)中定义的两个宏。位于/include/linux/compiler.h中,具体定义如下:#define likely(x) __bui
2011-06-11 09:54:00
1663
原创 va_start、va_end、va_arg , va_list的使用
<br />这些结构和函数,都是用在形参可变的函数中.<br /> <br />va_list : 就是指个数可变形参列表,是不固定的哦<br /> <br />va_start: 使指向va_list的指针指向va_list的第一个可选参数<br /> <br />va_end : 使指向va_list的指针为NULL<br /> <br />va_arg : 返回参数列表中的当前参数并使argp指向参数列表中的下一个参数<br /> <br />具体操作见以下两实例 <br /> <br
2011-06-02 17:06:00
384
原创 Android APK反编译
<br />最近需要看TS的测试程序,对方无法提供源码,只提供了APK,担心会出现问题,所以反编译是必要的.<br /> <br />一.反编译Apk得到Java源代码 <br />转载自:http://hi.baidu.com/%CB%BF%D4%B5%CC%EC%CF%C2/blog/item/2284e2debafc541e495403ec.html<br /> <br />工具下载:需用到dex2jar和JD-GUI这2个工具<br />dex2jar下载地址:http://laichao.goog
2011-06-01 11:57:00
363
原创 makefile:2: *** 遗漏分隔符 。 停止
<br />我们在编写完makefile,然后在终端中<br />$make<br />出现“makefile:2: *** 遗漏分隔符 。 停止。”问题,原因是在编写makefile文件时:<br />all:<br /> gcc -o helloworld helloworld.c<br />fresh:<br /> rm -rf Makefile<br />clean:<br /> rm -rf helloworld helloworld.o<br />install:<br
2011-05-31 16:30:00
3310
原创 android部分编译
<br />在android的顶层目录里,运行下面的命令:<br />source build/envsetup.sh<br /> <br />运行命令后,就添加了很多命令到sh解释器,具体命令如下:<br />-croot: Changes directory to the top ofthe tree.<br />-m: Makes from the top of the tree.<br />-mm: Builds all of the modules in thecurre
2011-05-31 16:15:00
554
原创 诙谐幽默的 bus/driver/device关系
<br />这里让我们聚焦Linux的设备模型! 顾名思义,设备模型是关于设备的模型,对咱们写驱动的和不写驱动的人来说,设备的概念就是总线和与其相连的各种设备了。电脑城的IT工作者都会知道设备是通过总线连到计算机上的,而且还需要对应的驱动才能用,可是总线是如何发现设备的?设备又是如何和驱动对应起来的?它们经过怎样的艰辛才找到命里注定的那个它?它们的关系如何?白头偕老型的还是朝三暮四型的?这些问题就不是他们关心的了,而是咱们需要关心的。我们惊喜地发现,这些疑问的中心思想中心词汇就是总线、设备和驱动,没错,它们
2011-05-31 11:39:00
439
原创 I2C设备与驱动的关联
<br />在Linux操作系统中,驱动程序的加载分为两种:内核启动时自动加载和用户手动加载;硬件设备也可以采用两种方式添加到系统中:在系统启动前及系统运行时的热插拨。下面,我们以arm体系结构下的at91处理器中的I2C控制器为例,介绍一下硬件设备及相关的驱动程序是如何绑定及松绑的。<br />1. 平台驱动注册过程<br />1.1 at91_i2c_init()函数<br />在文件drivers/i2c/busses/i2c-at91.c中,定义了结构体struct platform_dr
2011-05-30 17:31:00
335
原创 container_of 用法解析
<br />在学习Linux驱动的过程中,遇到一个宏叫做container_of。<br />该宏定义在include/linux/kernel.h中,首先来贴出它的代码:<br /><br />/** <br />* container_of - cast a member of a structure out to the containing structure <br />* @ptr: the pointer to the member. <br />* @type: t
2011-05-30 16:52:00
1229
原创 linux 工作队列 补充
<br />走入Linux的殿堂已经有一年有余了,在这里我想将Linux的各种实现机制分析一遍,一方面对自己来说也是温故而知新,另一方面,促进大家的交流,最好能够给大家一些抛砖引玉的启迪。我是硬件出身,搞硬件已经好多年了,从是专门软件开发也接近两年了,在这一段时间内我越发认为软硬件协同设计是未来发展的主流,软硬件的界限越来越模糊,软硬件的设计思想是相通的,实现方法是各异的,实现的结果上当然也存在较大差别,因此,很有必要做好软硬件的协同设计。本着这样的想法,我想将我所认识的Linux分析一遍,特别是一些我认为
2011-05-30 16:41:00
1234
转载 linux 工作队列
INIT_DELAYED_WORK()是一个宏,我们给它传递了两个参数.&hub->leds和led_work.对设备驱动熟悉的人不会觉得INIT_DELAYED_WORK()很陌生,其实鸦片战争那会儿就有这个宏了,只不过从2.6.20的内核开始这个宏做了改变,原来这个宏是三个参数,后来改成了两个参数,所以经常在网上看见一些同志抱怨说最近某个模块编译失败了,说什么make的时候遇见这么一个错误:error: macro "INIT_DELAYED_WORK" passed 3 arguments, but
2011-05-30 16:30:00
5111
原创 __define_initcall(level,fn)
在linux的驱动里经常会出现__define_initcall(level,fn)的用法,特别是在驱动,的init函数中,譬如I2C_ADAPTER的驱动有这样的函数subsys_initcall(imapx200_i2c_adap_init);关于它的具体用法,就参考下面的资料宏定义__define_initcall(level,fn)对于内核的初始化很重要,他指示编译器在编译的时候,将一系列初始化函数的起始地址值按照一定的顺序放在一个section中。在内核初始化段,do_initcalls() 将按
2011-05-30 15:40:00
1148
在11,12,13,21,22,23,31,32,33任取五个数的和值为某一个值的所有组合
2022-09-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人