原创 为AM335x移植Linux内核主线代码(43)USB HUB和鼠标

2015-3-10 09:34 2337 23 24 分类: MCU/ 嵌入式 文集: Linux Kernel的DTS

本来应该接着上节,进行LCD触摸屏的调试,但是USB鼠标要简单一些,因此先调试它。
HUB采用了芯片USB2514,配合两个双路USB电流监测芯片TPS2052,实现4路USB,因此首要的任务是Kernel需要识别这个HUB,并且将4路USB的电源打开。

================================================================
http://processors.wiki.ti.com/index.php/AM335x_USB_Driver%27s_Guide
http://processors.wiki.ti.com/index.php/UsbgeneralpageLinux-v3p1

Step 1: 添加dts代码:
&usb {
        status = "okay";
};

&usb_ctrl_mod {
        status = "okay";
};

&usb0_phy {
        status = "okay";
};

&usb0 {
        status = "okay";
        dr_mode = "host";
};

&cppi41dma  {
        status = "okay";
};

由于我的电路板是usb0为host,usb1没有使用,因此按照上面的修改maria-am335x-common.dtsi文件。

Step 2: 在make menuconfig中选中:
→ Device Drivers → USB support
 <*>   Inventra Highspeed Dual Role Controller (TI, ADI, ...)
 <*>     Platform Glue Layer ---> (X) TI DSPS platforms
 MUSB DMA mode ---> TI CPPI 4.1 (AM335x)
 
其他地方都不用修改。

Note:如何确定make menuconfig时的选项呢?根据设备的compatible值,查看Makefile和Kconfig即可。
例如,在dts文件中关于usb的部分是:
compatible = "ti,am33xx-usb";

因此,使用grep命令找到对应的driver文件:
[maria@localhost drivers]$ grep -rn ti\,am33xx-usb
Binary file built-in.o matches
Binary file usb/built-in.o matches
Binary file usb/musb/built-in.o matches
Binary file usb/musb/musb_am335x.o matches
usb/musb/musb_am335x.c:24:    { .compatible = "ti,am33xx-usb" },

再查看usb/musb/下的Makefile和Kconfig即可。

编译后加载到target板运行,会发现启动时的打印信息多了下面这些:
[   49.045648] usb 1-1.1: USB disconnect, device number 4
[   50.303032] usb 1-1.1: new low-speed USB device number 5 using musb-hdrc
[   50.428537] usb 1-1.1: New USB device found, idVendor=1c4f, idProduct=0003
[   50.435992] usb 1-1.1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[   50.443870] usb 1-1.1: Product: Usb Mouse
[   50.448146] usb 1-1.1: Manufacturer: SIGMACHIP
[   50.496499] input: SIGMACHIP Usb Mouse as /devices/ocp/47400000.usb/47401400.us2
[   50.525066] hid-generic 0003:1C4F:0003.0003: input: USB HID v1.10 Mouse [SIGMAC0
[   53.039375] usb 1-1.1: USB disconnect, device number 5
[   54.053001] CAUTION: musb: Babble Interrupt Occurred
[   54.143577] usb 1-1: USB disconnect, device number 2
[   54.175717] musb-hdrc musb-hdrc.0.auto: Restarting MUSB to recover from Babble
[   54.188177] musb-hdrc: setup fifo_mode 4
[   54.188252] musb-hdrc: 28/31 max ep, 16384/16384 memory
[   54.583051] usb 1-1: new high-speed USB device number 6 using musb-hdrc
[   54.723503] usb 1-1: New USB device found, idVendor=0424, idProduct=2514
[   54.730651] usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[   54.745275] hub 1-1:1.0: USB hub found
[   54.749558] hub 1-1:1.0: 4 ports detected

执行下面的命令:
root@ok335x:/sys/bus/usb/devices# ls
1-0:1.0  1-1      1-1:1.0  usb1
root@ok335x:/sys/bus/usb/devices# cd 1-1
root@ok335x:/sys/bus/usb/devices/1-1# ls
1-1:1.0              bmAttributes         maxchild
authorized           busnum               port
avoid_reset_quirk    configuration        power
bConfigurationValue  descriptors          quirks
bDeviceClass         dev                  removable
bDeviceProtocol      devnum               remove
bDeviceSubClass      devpath              speed
bMaxPacketSize0      driver               subsystem
bMaxPower            ep_00                uevent
bNumConfigurations   idProduct            urbnum
bNumInterfaces       idVendor             version
bcdDevice            ltm_capable
root@ok335x:/sys/bus/usb/devices/1-1# cat idProduct
2514
root@ok335x:/sys/bus/usb/devices/1-1# cat idVendor
0424

到这里,可知Kernel驱动USB的基本步骤没有问题了,剩下的工作是如何使用USB设备,此处不再赘述。
下一节的内容是文件系统的移植。
 

文章评论1条评论)

登录后参与讨论

用户377235 2016-1-25 10:26

你好,我是初学者,请教下驱动装好了,要怎么使用USB设备呢?找了很多资料,好像都对不上号

相关推荐阅读
DiracFatCat 2018-09-05 12:14
【博客大赛】卡尔曼滤波学习笔记(11)从位置估计速度
卡尔曼滤波器,不仅仅是一个低通滤波器,否则也不会持续发展50年。 示例:桑先生需要测试高速列车的性能。测试的目的是判断列车在直线上能否保持80m/s的速度。速度和位置每0.1秒测量一次,但是由于...
DiracFatCat 2018-08-31 19:32
【博客大赛】卡尔曼滤波学习笔记(10)一个简单的示例
《Kalman Filtering: Theory and Practice Using MATLAB》第三章,看不懂,暂时略过。《Kalman Filtering: Theory and Pract...
DiracFatCat 2018-07-19 15:09
对sed命令的练习
sed是流编辑器。它每次处理一个输入,因此很有效率。官方手册:https://www.gnu.org/software/sed/manual/sed.html学习Linux命令,当然要阅读官方手册,所...
DiracFatCat 2018-06-19 15:10
【博客大赛】卡尔曼滤波学习笔记(八)可观测性和可控制性 ...
可观测性是指,在给定模型的情况下,动力学系统的状态是否由它的输入输出唯一确定。可观测性是系统模型的特征。如果传感器矩阵H是可逆的,则本系统可观测,因为有:如果传感器矩阵H某些时候是不可逆的,则本系统仍...
DiracFatCat 2018-06-19 10:56
【博客大赛】卡尔曼滤波学习笔记(七)Z变换
如果我们仅仅对离散线性系统感兴趣,那么就使用下面这个表达式:如果u是常量,那么可以写成:为了简化表达式,我们可以将上面写成:离散线性时不变系统的Φ求解,可以使用Z变换。(* 由于本人已经忘记了Z变换的...
DiracFatCat 2018-06-19 10:54
【博客大赛】卡尔曼滤波学习笔记(六)拉普拉斯变换
对于线性时变/时不变系统,求解Φ(t)有多种方式,拉普拉斯变换是其中一种。(* 由于本人已经忘记了拉普拉斯变换的内容,因此本节待续。)...
我要评论
1
23
关闭 站长推荐上一条 /2 下一条