
自娱自乐
文章平均质量分 84
Linux_Drv
本人对linux内核驱动有浓厚的兴趣,欢迎大家加我qq
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自娱自乐3之Linux gadget驱动2(zero中的字符串描述符)
这个gadget驱动我会一部分一部分说(你可以对着zero.c看),最后给个完整的。今天说的是字符串描述符,struct usb_gadget_strings我之前说是字符串描述符并不准确,真正的描述符是struct usb_string_descriptor上一篇说的结构体中有很多都包涵了struct usb_gadget_strings,它们是struct usb_functi原创 2013-08-27 14:15:59 · 3439 阅读 · 1 评论 -
自娱自乐10之Linux DMA使用2(DMA使用实例,用timer作DMA请求源实现流水灯)
我想大家听过流水灯的实现,有很多方法,有一种是用定时器实现的。通常是利用定时器中断,今天我要用timer作为DMA请求源,当timer时间到启动DMA传输,这样把一个一个数送的gpio口。实现流水灯下面是代码,我的流水灯只流一次,平台是s3c2440/*********************************** Copyright(C), 2013 LDP FileN原创 2013-10-18 12:55:56 · 3978 阅读 · 0 评论 -
自娱自乐8之Linux UDC驱动4(自编udc驱动,基本功能完成)
直接上代码,可以和我之前写的模板比较比较/*********************************** Copyright(C), 2013 LDP FileName: s3c2440_udc.h Author: wwxxxxll Date: Description: History: Author Date原创 2013-10-11 16:34:24 · 2617 阅读 · 0 评论 -
自娱自乐7之Linux UDC驱动2(自编udc驱动,现完成枚举过程,从驱动代码分析枚举过程)
花了半个月,才搞定驱动中的枚举部分,现在说linux的枚举,windows可能有差别。代码我会贴在后面,现在只是实现枚举,你可能对代码不感兴趣,我就不分析代码了,你可以看看在《自娱自乐1》中的模板,比较一下,我做了什么,这会给你写udc驱动提供个思路。我直接分析调试打印,就是枚举过程,我们从代码看枚举。打印位置可以在下面的代码里找到。如果你要弄懂驱动代码中涉及枚举的地方,你就仔细看原创 2013-09-13 17:51:28 · 2917 阅读 · 4 评论 -
自娱自乐6之Linux gadget驱动5(自编gadget驱动,包涵与之通讯的主机usb驱动,已调试通过)
这个代码调试,你首先要保证你的udc驱动没用问题,这个有些矛盾,应为我本来要用gadget驱动来调试udc驱动,结果反过来了。这是在zero基础改的,大概的改动1. 去掉loop。2. sink的读写去掉了。3. 增加了一个misc,通过fs去读写数据。4. setup的特殊请求去掉了。之前的文章已经把大部分的东西说完了,所以代码没有太多的注释。请结合之前的文章阅读。原创 2013-08-29 15:13:44 · 4663 阅读 · 4 评论 -
自娱自乐5之Linux gadget驱动4(接受发送,complete函数,setup函数)
f_sourcesink.c里面在执行set_alt方法后就调用source_sink_start_ep(),这里面就有usb_ep_queue()可以认为开始进行数据交互。后期我要改一下这个过程,通过一个简单的misc驱动去分开调用接受发送我们现在看static int source_sink_start_ep(struct f_sourcesink *ss,boolis_in)原创 2013-08-28 17:08:45 · 4042 阅读 · 0 评论 -
自娱自乐2之Linux gadget驱动1(linux-3.2.36的composite)
上期说要用之前的模板写udc驱动。事实我已经做了,等待测试。当我要测试时,我发现还是要用gadget驱动去时udc驱动。虽然有现成的,但是你如果搞不懂的话,出问题你根本不知道在哪。所以调试udc驱动之前我们要看gadget驱动。我看了linux-2.6.10没有composite的东西。还是直接操作struct usb_gadget_driver。那已经是过去式了。现在我用的linux-3.2原创 2013-08-17 17:43:21 · 2633 阅读 · 0 评论 -
自娱自乐1之Linux UDC驱动(形式模板)
首先,我不是做驱动的开发人员。所以只能用自娱自乐来表示我的行为。我不知道udc和gadget驱动是不是冷门的驱动,资料真是不多。我之前买了一本书,上面说到这些,就教你如何调试已写好的驱动。这样也可以写书,太坑了吧!我随便从网上搜搜都能写的比他好。难道现在的育人机构为了钱都变成了坑人机构。我以前就希望把自己写过的驱动总结成一个模板,让人能直观的看出linux提供的接口要我们做什么甚至怎么做。原创 2013-08-14 11:55:14 · 4263 阅读 · 1 评论 -
自娱自乐4之Linux gadget驱动3(bind过程)
bind和字符串描述符一样也是有多级关系,首先说一下usb很基础的关系一个设备可能有多个配置一个配置可能有多个接口一个接口可能有多个端点或设置还记得我在自娱自乐2中说的的结构体吧我们先变通一下struct usb_function 相当于接口struct usb_configuration 相当于配置struct usb_composite_dev 相当于设备b原创 2013-08-28 10:00:24 · 2669 阅读 · 0 评论 -
自娱自乐9之Linux DMA使用1(三星平台DMA分析)
和以前一样,我不说dma基础知识,你可以看看ldd3这次我说的是三星平台的dma,不是三星的某款芯片的dma使用。这主要得益于三星公司统一了接口。比如我后有的例子是在s3c2440上做的但是我是参考s3c64xx的spi驱动。当然内核还是linux-3.2.36,我们看dma-ops.h/* arch/arm/plat-samsung/include/plat/dma-ops.原创 2013-10-18 12:44:34 · 3999 阅读 · 0 评论