![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
自娱自乐
文章平均质量分 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 · 3340 阅读 · 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 · 3911 阅读 · 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 · 2522 阅读 · 0 评论 -
自娱自乐7之Linux UDC驱动2(自编udc驱动,现完成枚举过程,从驱动代码分析枚举过程)
花了半个月,才搞定驱动中的枚举部分,现在说linux的枚举,windows可能有差别。 代码我会贴在后面,现在只是实现枚举,你可能对代码不感兴趣,我就不分析代码了,你可以看看 在《自娱自乐1》中的模板,比较一下,我做了什么,这会给你写udc驱动提供个思路。我直接分析 调试打印,就是枚举过程,我们从代码看枚举。打印位置可以在下面的代码里找到。 如果你要弄懂驱动代码中涉及枚举的地方,你就仔细看原创 2013-09-13 17:51:28 · 2852 阅读 · 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 · 4524 阅读 · 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 · 3922 阅读 · 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 · 2560 阅读 · 0 评论 -
自娱自乐1之Linux UDC驱动(形式模板)
首先,我不是做驱动的开发人员。所以只能用自娱自乐来表示我的行为。 我不知道udc和gadget驱动是不是冷门的驱动,资料真是不多。我之前买了一本书,上面说到这些,就教你如何调试已写好的驱动。这样也可以写书,太坑了吧!我随便从网上搜搜都能写的比他好。难道现在的育人机构为了钱都变成了坑人机构。 我以前就希望把自己写过的驱动总结成一个模板,让人能直观的看出linux提供的接口要我们做什么甚至怎么做。原创 2013-08-14 11:55:14 · 4179 阅读 · 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 · 2583 阅读 · 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 · 3948 阅读 · 0 评论