摘要:
1 void mergeAdd(int arr[], int left, int mid, int right, int *temp){ 2 int i = left; 3 int j = mid + 1; 4 int k = left;//临时下标 5 while (i <= mid&&j <= right){ 6 if (arr[i] < arr[j... 阅读全文
摘要:
一个USB设备有一个设备描述符,设备描述符里面决定了该设备有多少种配置,每种配置描述符对应着配置描述符;而在配置描述符中又定义了该配置里面有多少个接口,每个接口有对应的接口描述符;在接口描述符里面又定义了该接口有多少个端点,每个端点对应一个端点描述符;端点描述符定义了端点的大小,类型等等。由此我们可 阅读全文
摘要:
此处将以zero.c为例进行讲解。 第一次接触zero.c驱动的时候,是因为某项目需要,提供一种usb字符设备,希望能够通过字符设备打开,读取和发送文件。当时能想到的就是zero.c文件,本打算按照zero驱动的编写方式,自己编写一个字符驱动,但后来为了节省工作时间,直接修改zero驱动,增加了字符 阅读全文
摘要:
很幸运,在公司开发了gadget相关驱动,总结下来,大大小小开发了四个与gadget相关的驱动,字符驱动、g_multi、g_ether、g_zero,在这里把自己对gadget的开发中自己的感悟记录之。 想要了解gadget,必须了解其框架,知道composite、gadget、udc三者之间的联 阅读全文
摘要:
因为公司同事反映他使用的开板无法将根目录下的ip_work目mounth成功,由于本人当时没有去现场查看问题,只是象征性的询问内核是否创建了/dev/mtdblock5设备节点,因为该开发板默认是挂载在mtdblock5上,由于同事对这方面不了解,包括对问题的敷衍了事,直接反馈给本人,说没有/dev 阅读全文
摘要:
今天在在公司做网络驱动开发测试时,随机包出现收包计数停止的现象,当时怀疑是DMA rx buffer不足导致,想通过对比收发包正常和收发包不正常是DMA相关寄存器的情况。 后跟踪代码,若在收发包里面增加打印,必定回降低收发包性能,对比结果也就不准了,分析代码分析来分析去,最终发现做合适的就是采用pr 阅读全文
摘要:
学会使用libevent,才能真正的掌握其是实现原理,我们先从一个简短的测试用例开始: 该代码的大体意思是:添加一个信号中断事件,通过CTRL+C,产生中断信号,再调用中断处理函数。 首先分析的是函数是event_init函数,现帖出其具体实现方式 阅读全文
摘要:
位于代码event-internal.h中。 event_base类似事件的集合,你创建一个事件,必须将该事件指定一个集合。 struct event_base { 50 const struct eventop *evsel; /*evsel和evbase就类比与类和对象之间的关系,evbase是 阅读全文
摘要:
注:转过来的 一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap)— 一般由程序员分配释放, 若程序员不释放,程序结束时可能由O 阅读全文