- 博客(46)
- 资源 (24)
- 收藏
- 关注
转载 在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序
参照在Ubuntu上为Android系统编写Linux内核驱动程序一文所示,准备好示例内核驱动序。完成这个内核驱动程序后,便可以在Android系统中得到三个文件,分别是/dev/hello、/sys/class/hello/hello/val和/proc/hello。在本文中,我们将通过设备文件/dev/hello来连接硬件抽象层模块和Linux内核驱动程序模块。 二. 进入到在h
2013-07-26 14:03:14 670
转载 常用driver模板
给应用程序写read,write驱动头文件#include #include #include #include #include #include #include #include "hello.h"/*主设备和从设备号变量*/static int hello_major = 0;static int hello_minor = 0;/*设备类别和设备变
2013-07-26 13:51:02 962
转载 Linux USB-Wifi Driver
1. USB设备枚举过程 设备在插入USB 接口到设备成功找到它自己的驱动这一过程为:当把USB 设备插到USB 接口上后,USB 中央控制器会检测到有设备插入USB 接口了,Linux 内核会给设备分配一个数据结构来代表这个设备,Linux 会分配一个struct usb_device 数据结构来代表该设备,该数据结构记录设备的一些属性及数据。并把该数据结构挂载到一个全局的USB 设
2013-07-26 13:28:07 4842 1
转载 Android WiFi 应用程序例子
首先需要强调一点的是wifi只能在真机上测试! 在Android里,所有的wifi操作都在android.net.wifi包里,而常用的类也就只用几个,对于一般的开发人员来说,常用的操作也是有限的,不需要刻意的去记,用的时候现查就ok了,下面是《Android应用开发揭秘》里面关于wifi的范例,个人感觉还挺齐全,跟大家分享一下!package com.yarin.andro
2013-07-26 13:15:52 819
转载 WiFi信号强度--SIGNAL_POLL
WiFi Command流程 3. wpa_supplicant启动流程4. WifiService启动流程5. SIGNAL_POLL调用流程eloop_run->..wpa_supplicant_ctrl_iface_receive-> //接收并处理来自framework的commandwpa_supplicant_ctrl_iface_process->
2013-07-26 10:39:56 2657
转载 Android4.x 如何处理Power按键
1. 简介 Android4.x在Framework的PhoneWindowManager对Power(KeyEvent.KEYCODE_POWER)和Home(KeyEvent.KEYCODE_HOME)键做了处理,不会把这些键传送上层应用程序。如需要把这些键发送给Activity和Service,需要在PhoneWindowManager处理这些键时“发送一个广播出去,然后在
2013-07-26 10:30:49 838
转载 Android4.0 G-Sensor工作流程
1. 简介 在了解Sensor工作流程以前,一直以为其事件是通过Event Hub来进行输送的,可是研究完Android4.0代码之后,才发现自己错了。 其主要框架如下图所示: 2.功能模块2.1 SensorManager.java与下层接口功能:1) 在SensorManager函数中 (1) 调用native sensors_module_
2013-07-26 09:57:59 1440
原创 iperf交叉编译
下载iperf-2.0.5.tar.gz# tar xvf iperf-2.0.5.tar.gz # cd iperf-2.0.5# export PATH=/opt/buildroot-gcc342/bin:$PATH/*如果是arm,则arm-linux。要保持跟gcc一致。*例如arm平台一般是arm-linux-gcc,则设置host=arm-linux。如
2013-07-25 17:59:17 7772
转载 linux 时钟详解
在 Linux 操作系统中,很多活动都和时间有关,例如:进程调度和网络处理等等。所以说,了解 Linux 操作系统中的时钟处理机制有助于更好地了解 Linux 操作系统的运作方式。本文分析了 Linux 2.6.25 内核的时钟处理机制,首先介绍了在计算机系统中的一些硬件计时器,然后重点介绍了 Linux 操作系统中的硬件时钟和软件时钟的处理过程以及软件时钟的应用。最后对全文进行了总结。◆1、
2013-07-24 15:38:23 2099
转载 中断处理中tasklet与工作队列的使用
#include #include #include #include //define a devidstatic int mydev=1119;static int irq;static char* devname=NULL;//define arguments for this modulemodule_param(irq,int,0644);module_par
2013-07-24 11:33:13 758
转载 platform_get_resource解析
platform_get_resource函数源码如下:struct resource *platform_get_resource(struct platform_device *dev, unsigned int type, unsigned int num){ int i; for (i = 0; i num_r
2013-07-24 10:48:15 7753
原创 platform_device和platform_driver
platform_device和platform_driver(一)首先介绍一下注册一个驱动的步骤:1、定义一个platform_driver结构2、初始化这个结构,指定其probe、remove等函数,并初始化其中的driver变量3、实现其probe、remove等函数看platform_driver结构,定义于include/linux/platform_device
2013-07-24 10:44:38 812
原创 linux driver wait queue
在Linux驱动程序中,可以使用等待队列(wait queue)来实现阻塞进程的唤醒。wait queue很早就作为一种基本的功能单位出现在Linux内核里了,它以队列位基础数据结构,与进程调度机制紧密结合,能够用于实现内核中异步事件通知机制。等待队列可以用来同步对系统资源的访问。(信号量在内核中也依赖等待队列来实现). Linux-2.6提供如下关于等待队列的操作: (1)
2013-07-23 17:22:25 773
转载 linux drver Makefile模板
################################################################## file name: Makefile# A simple Makefile for driver# by Late Lee at www.latelee.org# based on LDD3 and other guys works# copyleft
2013-07-23 16:42:26 1146
转载 快速选择SELECT算法的实现
本节,咱们将依据下图所示的步骤,采取中位数的中位数选取枢纽元的方法来实现此SELECT算法, 不过,在实现之前,有个细节我还是必须要提醒你,即上文中2.2节开头处所述,“数组元素索引是从“0...i”开始计数的,所以第k小的元素应该是返回a[i]=a[k-1].即k-1=i。换句话就是说,第k小元素,实际上应该在数组中对应下标为k-1”这句话,我想,你应该明白了:返回数组中第k小的元素,
2013-07-23 11:27:14 6021
原创 如何给10^7个数据量的磁盘文件排序
//purpose: 生成随机的不重复的测试数据 //1000w数据量,要保证生成不重复的数据量,一般的程序没有做到。但,本程序做到了。 #include #include #include #include #include #include #include #include #include #define BITSPERWORD 32#defin
2013-07-23 10:17:55 783
原创 高效产生不重复的随机数
//purpose: 生成随机的不重复的测试数据 //1000w数据量,要保证生成不重复的数据量,一般的程序没有做到。但,本程序做到了。 #include #include #include #include #include #include #define size 10000000 int num[size] = {0}; void swap(i
2013-07-22 16:37:37 1119
转载 位操作
/* base.h:基本操作的位运算实现 */#ifndef BASE_H#define BASE_H#define word int#define uword unsigned int/* 将最右侧的1位改成0位 */#define right1to0(x) ((x)&((x)-1))/* 向右传播最右侧的1位 */#define right1torig(x) ((x)
2013-07-22 13:17:39 908
转载 boom filter
boomfilter.h#ifndef __BLOOM_H__#define __BLOOM_H__#include typedef unsigned int (*hashfunc_t)(const char *);typedef struct { size_t asize; unsigned char *a; size_t nfuncs; hash
2013-07-22 11:01:44 1012
转载 bit-map海量数据处理
海量数据排序问题:文件包含1千万条电话号码记录(10**7次方),每条记录都是7位整数,没有重复的整数。要求对文件进行排序,注意大约只有1MB的内存空间可用,有充足的磁盘存储空间可用。请设计一个高效的算法。 (1)运用多趟算法:如果每个号码都使用32位整数来表示,则在1MB存储空间里大约可以存250000个号码。因此,可以使用遍历输入文件40趟的程序来完成排序。在第一趟中,将0至249999
2013-07-22 10:54:57 744
转载 排序
1、直接插入排序:把后面未排序部分的首个数插入到前面已排序部分的正确位置上去,直到全部排好顺序。直接插入排序是稳定的,算法时间复杂度O(n^2)。[cpp] view plaincopy/* 直接插入排序 */ void insert_sort(int v[],int n){ register int i,j,temp; for(i=1; i/*
2013-07-22 10:50:22 584
转载 数据结构之队列
queue.h #ifndef __QUEUE_H__ #define __QUEUE_H__ typedef struct Queue_node { void *data; struct Queue_node* next; }Queue_node; typedef struct Queue {
2013-07-19 17:37:15 656
转载 查找有序序列中 重复/不存在 的数算法
/* * 查找有序序列中 重复/不存在 的数算法演示 * 版权所有:http://www.cppblog.com/converse/ */#include #include #include #define FUNC_IN() printf("\nin %s\n\n", __FUNCTION__)#define FUNC_OUT() printf("\nout %s\n
2013-07-19 14:25:33 1172
原创 二分查找算法
int search(int array[], int n, int v){ int left, right, middle; left = 0, right = n - 1; while (left <= right) { middle = (left + right) / 2; if (array[middle] > v)
2013-07-19 14:17:42 588
原创 fls - find last (most-significant) bit set
static int fls(int x) { int r = 32; if (!x) return 0; if (!(x & 0xffff0000u)) { x <<= 16; r -= 16; } if (!(x & 0xff000000u)) {
2013-07-19 14:15:11 1017
原创 android OTA修改
def WriteFullOTAPackage(input_zip, output_zip): # TODO: how to determine this? We don't know what version it will # be installed on top of. For now, we expect the API just won't # change very
2013-07-18 17:01:26 5030
转载 android OTA
Android原生系统中就已经支持OTA升级。所谓OTA升级就是通过空中接口获取升级包,然后更新系统固件。一般地,升级包无论如何获取,哪怕是直接TCard本地升级,也被称为OTA升级。 OTA升级首要是生成OTA升级包,升级包又分为升级全包和升级差分包(或要增量包)。升级全包是编译当前系统得到的软件包,这个包很大,有上百兆,但是不依赖与当前手机里的软件版本;升级差分包是对手机两个软件版
2013-07-18 16:43:09 6624
转载 Android中调用系统所装的软件打开文件
在应用中如何调用系统所装的软件打开一个文件,这是我们经常碰到的问题,下面是我所用到的一种方法,和大家一起分享一下!这个是打开文件的一个方法: /** * 打开文件 * @param file */ private void openFile(File file){ Intent intent
2013-07-18 16:24:12 801
转载 Android的init过程详解
目前Linux有很多通讯机制可以在用户空间和内核空间之间交互,例如设备驱动文件(位于/dev目录中)、内存文件(/proc、/sys目录等)。了解Linux的同学都应该知道Linux的重要特征之一就是一切都是以文件的形式存在的,例如,一个设备通常与一个或多个设备文件对应。这些与内核空间交互的文件都在用户空间,所以在Linux内核装载完,需要首先建立这些文件所在的目录。而完成这些工作的程序就是本文要
2013-07-17 18:00:27 889
转载 linux sys节点属性
从底层把值传给上层有很多种方法,sysfs就是很简单的一个:提到sysfs,就不得不提函数宏 DEVICE_ATTRDEVICE_ATTR的原型:#define DEVICE_ATTR(_name,_mode,_show,_store)\struct device_atttribute dev_attr_##_name = __ATTR(_name,_mode,_show,_sto
2013-07-17 13:46:19 5261
转载 driver MODULE参数
1. MODULE_DEVICE_TABLE (usb, skel_table);该宏生成一个名为__mod_pci_device_table的局部变量,该变量指向第二个参数。内核构建时,depmod程序会在所有模块中搜索符号__mod_pci_device_table,把数据(设备列表)从模块中抽出,添加到映射文件/lib/modules/KERNEL_VERSION/modules.pci
2013-07-17 13:14:19 980
转载 platform设备驱动全透析
1.platform总线、设备与驱动 在Linux 3.x 的设备驱动模型中,关心总线、设备和驱动这3个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、I2 C、SPI等
2013-07-17 11:04:10 651
转载 网卡驱动编写方法
在此仅仅讨论网络设备驱动的一般写法,有关硬件部分的相关代码由于硬件规格不同,予以省略。有什么地方错误,或补充,欢迎大家提出。 1, 驱动模块的加载和卸载 如果网络设备(包括wireless)是PCI规范的,则先是向内核注册该PCI设备(pci_register_driver),然后由pci_driver数据结构中的probe函数指针所指向的侦测函数来初始化该PCI设备,并且同时注册
2013-07-17 10:01:19 6916
转载 Qt5.0.2 + MinGW编译出来的程序发布
鉴于自己在windos下发布Qt5.02程序时遇到的问题,花了几天的实际终于解决了。为方便后来者发布Qt程序遇到相同的问题,避免走不必要的弯路,浪费时间。现将在windows下发布Qt5.0.2程序遇到的问题,及相应的解决方案详细描述如下: Qt5.0.2 + MinGW编译出来的程序发布的时候,大致需要以下dll文件: 在Qt的安装目录下可以找到这些dll, 目录为:C:\Qt\Q
2013-07-16 15:43:59 9008 2
原创 pthread_cond_broadcast相关
pthread_cond_timedwait()函数阻塞住调用该函数的线程,等待由cond指定的条件被触发(pthread_cond_broadcast() or pthread_cond_signal())。当pthread_cond_timedwait()被调用时,调用线程必须已经锁住了mutex。函数pthread_cond_timedwait()会对mutex进行【解锁和执行对条件
2013-07-15 14:28:13 25919 4
转载 Linux 计时器 函数
程序注册三个定时器,分别对实际时间、进程使用CPU时间、用户使用CPU时间进行即时,计时时间为10秒。同时设定一个用户信号,当该信号在用户指定的空计次循环后到来。在用户信号到来后,打印各个计时器走过的时间值,并计算出内核所用的时间。到实际时间计时器到达10秒后产生定时器信号时,程序打印各计时器走过的时间,并退出程序。因为需要获得定时器的时间,因此,我们需要使用setitimer和getitim
2013-07-15 14:10:55 721
转载 linux driver Makefile模板
################################################################## file name: Makefile# A simple Makefile for driver# by Late Lee at www.latelee.org# based on LDD3 and other guys works# copy
2013-07-12 14:53:55 1081
原创 linux daemon例子
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本身并不
2013-07-12 14:41:48 7134
转载 socket select等例子
一、 select方式:设置放置socket句柄的集合变量把要判断的socket句柄放到集合设置超时时间执行select操作根据select操作返回值做相应处理(连接、读、写等)#include #include #include #include #include #include #include #include #include #define MYPORT
2013-07-12 11:33:00 638
原创 makefile模板(应用程序)
TARGET := uart2netSRCS := main.c \ fifo.c \ serial.c \ epoll.cCROSS_COMPILE =GCC := $(CROSS_COMPILE)gccG++ := $(CROSS_COMPILE)g++ OBJS := ${SRCS:.c=.o} DEPS := ${
2013-07-11 15:05:57 2344
IxChariot 6.70 + Endpoint 7.10 (linux & windows)005
2014-08-20
IxChariot 6.70 + Endpoint 7.10 (linux & windows)004
2014-08-20
IxChariot 6.70 + Endpoint 7.10 (linux & windows) 003
2014-08-20
IxChariot 6.70 + Endpoint 7.10 (linux & windows) 002
2014-08-20
IxChariot 6.70 + Endpoint 7.10 (linux & windows) 001
2014-08-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人