摘要: 旧字符设备驱动程序的框架:1、确定主设备号major;2、构造file_operations3、注册register_chrdev;4、创建类和设备结点这个框架有很大的弊端,弊端出现在注册函数register_chrdev上,其实现中有这么一句:cd = __register_chrdev_region(major, 0, 256, name);其向内核连续注册了256个此设备号,也就把major这个主设备号下的所有此设备号都占用了,而其实我们大部分情况下用不到这么多次设备号,造成了巨大的浪费。于是有了这样两个函数:① register_chrdev_region(dev_t from, .. 阅读全文
posted @ 2013-12-24 22:54 ★行云流水★ 阅读(445) 评论(0) 推荐(1) 编辑
摘要: 从主机侧的立场来看,在Linux驱动中,USB驱动处于最底层的是USB主机控制器硬件,在其之上运行的是USB主机控制器驱动,主机控制器之上为USB核心层,再上层为USB设备驱动层(插入主机上的U盘、鼠标、USB转串口等设备驱动)。因此,在主机侧的层次结构中,要实现的USB驱动包括两类:USB主机控制器驱动和USB设备驱动,前者控制插入其中的USB设备,后者控制USB设备如何与主机通信。Linux内核USB核心负责USB驱动管理和协议处理的主要工作。主机控制器驱动和设备驱动之间的USB核心非常重要,其功能包括:通过定义一些数据结构、宏和功能函数,向上为设备驱动提供编程接口,向下为USB主机控.. 阅读全文
posted @ 2013-11-21 19:14 ★行云流水★ 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 3 typedef unsigned char uint8_t; 4 typedef unsigned short uint16_t; 5 typedef short int16_t; 6 typedef unsigned int uint32_t; 7 typedef unsigned long long uint64_t; 8 typedef uint32_t data_type; 9 10 /******************************************************************************* 1... 阅读全文
posted @ 2013-09-12 10:23 ★行云流水★ 阅读(1647) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 3 int main() 4 { 5 unsigned char a = 0xaa, b = 0; 6 char i = 0; 7 for (i = 0; i > i) & 0x01) << (7 - i));10 }11 printf("b = 0x%x\n", b);12 return 0;13 } 阅读全文
posted @ 2013-08-30 17:57 ★行云流水★ 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 #include 4 5 /******************************************************************************* 6 Function: void randnum(int a, int b, unsigned int arr[], int n) 7 Description:产生n个a到b之间的随机数,放入数组arr中。 8 Calls: srand,rand,time 9 Called By:main 10 Input:11 a,b:随机数... 阅读全文
posted @ 2013-08-30 16:55 ★行云流水★ 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 1 /******************************************************************************* 2 Function://函数名称 3 Description://函数功能、性能等的描述 4 Calls://被本函数调用的函数清单 5 CalledBy://调用本函数的函数清单 6 TableAccessed://被访问的表(此项仅对于牵扯到数据库操作的程序) 7 TableUpdated://被修改的表(此项仅对于牵扯到数据库操作的程序) 8 Input://输入参数说明,包括每个参数的作用、取值说明及参数间关系。 9 . 阅读全文
posted @ 2013-08-02 10:19 ★行云流水★ 阅读(1381) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 排序思想: 3 选择排序是从未排序的数据中选出最小的一个元素顺序放在已经排好序的数 4 列最后。 5 实现方法: 6 将前面第i个数分别与后面的n - i个数比较,大的放后面,小的放前面,这样 7 一轮比较下来,第i个数就是第i~n个数中最小的数。 8 9 */10 void select_sort(int a[], int len)11 {12 int i, j, temp;13 14 for (i = 0; i a[j])19 {20 temp = a[i];21 ... 阅读全文
posted @ 2013-07-18 16:44 ★行云流水★ 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 问:#define _INTSIZEOF(n)((sizeof(n)+sizeof(int)-1)&~(sizeof(int) - 1) ) 说能够在某些系统中内存对齐.(估计是得到一个2 或者4的整数倍) 这个好象就是(x+3)&~3 这样就能满足对齐了吗? 请从数学上给说说. 谢谢答:对于两个正整数 x, n 总存在整数 q, r 使得x = nq + r, 其中00, 取 (q+1)n. 这也相当于把 x 表示为:x = nq + r', 其中 -n < r' <=0//最大非正剩余nq 是我们所求。关键是如何用 c 语言计算它。由于我们能处理 阅读全文
posted @ 2013-07-15 10:28 ★行云流水★ 阅读(333) 评论(0) 推荐(0) 编辑
摘要: int find_substr(char *s1, char *s2){ int t; char *p, *p2; for (t = 0; s1[t]; t++) //字符串常量是存在数组中的s1[0]就是字符串第一个字符 { p = &s1[t]; p2 = s2; while (*p2 && (*p2 == *p)) //先比较s1,s2的值是不是相等的,不相等就跳过 { //这里的与运算是测试P2是不是到最后字符了就是'\0' ... 阅读全文
posted @ 2013-05-17 17:41 ★行云流水★ 阅读(610) 评论(0) 推荐(0) 编辑