usb的设置
来源:互联网 发布:如何提升淘宝转化率 编辑:程序博客网 时间:2024/05/16 06:06
背景
设置usb0为host模式,支持u盘的热插拔。设置usb1为otg模式,支持设备作为u盘连接到电脑。
我对usb没有研究,但是linux内核对usb的支持非常强大,不需要修改代码,只需配置就可以实现。
设备树
首先,查看并设置usb的设备树,其中具体设置在am33xx.dtsi中。
am33xx.dtsi
usb: usb@47400000 { compatible = "ti,am33xx-usb"; reg = <0x47400000 0x1000>; ranges; #address-cells = <1>; #size-cells = <1>; ti,hwmods = "usb_otg_hs"; status = "disabled"; usb_ctrl_mod: control@44e10000 { compatible = "ti,am335x-usb-ctrl-module"; reg = <0x44e10620 0x10 0x44e10648 0x4>; reg-names = "phy_ctrl", "wakeup"; status = "disabled"; }; usb0_phy: usb-phy@47401300 { compatible = "ti,am335x-usb-phy"; reg = <0x47401300 0x100>; reg-names = "phy"; status = "disabled"; ti,ctrl_mod = <&usb_ctrl_mod>; }; usb0: usb@47401000 { compatible = "ti,musb-am33xx"; status = "disabled"; reg = <0x47401400 0x400 0x47401000 0x200>; reg-names = "mc", "control"; interrupts = <18>; interrupt-names = "mc"; dr_mode = "otg"; mentor,multipoint = <1>; mentor,num-eps = <16>; mentor,ram-bits = <12>; mentor,power = <500>; phys = <&usb0_phy>; dmas = <&cppi41dma 0 0 &cppi41dma 1 0 &cppi41dma 2 0 &cppi41dma 3 0 &cppi41dma 4 0 &cppi41dma 5 0 &cppi41dma 6 0 &cppi41dma 7 0 &cppi41dma 8 0 &cppi41dma 9 0 &cppi41dma 10 0 &cppi41dma 11 0 &cppi41dma 12 0 &cppi41dma 13 0 &cppi41dma 14 0 &cppi41dma 0 1 &cppi41dma 1 1 &cppi41dma 2 1 &cppi41dma 3 1 &cppi41dma 4 1 &cppi41dma 5 1 &cppi41dma 6 1 &cppi41dma 7 1 &cppi41dma 8 1 &cppi41dma 9 1 &cppi41dma 10 1 &cppi41dma 11 1 &cppi41dma 12 1 &cppi41dma 13 1 &cppi41dma 14 1>; dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15"; }; usb1_phy: usb-phy@47401b00 { compatible = "ti,am335x-usb-phy"; reg = <0x47401b00 0x100>; reg-names = "phy"; status = "disabled"; ti,ctrl_mod = <&usb_ctrl_mod>; }; usb1: usb@47401800 { compatible = "ti,musb-am33xx"; status = "disabled"; reg = <0x47401c00 0x400 0x47401800 0x200>; reg-names = "mc", "control"; interrupts = <19>; interrupt-names = "mc"; dr_mode = "otg"; mentor,multipoint = <1>; mentor,num-eps = <16>; mentor,ram-bits = <12>; mentor,power = <500>; phys = <&usb1_phy>; dmas = <&cppi41dma 15 0 &cppi41dma 16 0 &cppi41dma 17 0 &cppi41dma 18 0 &cppi41dma 19 0 &cppi41dma 20 0 &cppi41dma 21 0 &cppi41dma 22 0 &cppi41dma 23 0 &cppi41dma 24 0 &cppi41dma 25 0 &cppi41dma 26 0 &cppi41dma 27 0 &cppi41dma 28 0 &cppi41dma 29 0 &cppi41dma 15 1 &cppi41dma 16 1 &cppi41dma 17 1 &cppi41dma 18 1 &cppi41dma 19 1 &cppi41dma 20 1 &cppi41dma 21 1 &cppi41dma 22 1 &cppi41dma 23 1 &cppi41dma 24 1 &cppi41dma 25 1 &cppi41dma 26 1 &cppi41dma 27 1 &cppi41dma 28 1 &cppi41dma 29 1>; dma-names = "rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7", "rx8", "rx9", "rx10", "rx11", "rx12", "rx13", "rx14", "rx15", "tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7", "tx8", "tx9", "tx10", "tx11", "tx12", "tx13", "tx14", "tx15"; };
am335x-evm.dts
&usb { status = "okay"; control@44e10000 { status = "okay"; }; usb-phy@47401300 { status = "okay"; }; usb-phy@47401b00 { status = "okay"; }; usb@47401000 { status = "okay"; dr_mode = "host"; }; usb@47401800 { status = "okay"; }; dma-controller@07402000 { status = "okay"; };};
我们需要做的就是使能usb并且设置正确的模式,默认模式是otg。am33xx.dtsi中关于usb的设置不需要任何修改。当然,还需要验证这些对应的驱动是否配置上,方法如之前所讲。
热插拔
配置内核
Device Drivers ---> [*] USB support ---> <*> USB Gadget Support ---> <M> USB Gadget Drivers
文件系统
etc/mdev.conf增加usb热插拔的支持
#hotplug usb disksd[a-z][0-9] 0:0 666 @(/etc/hotplug/insert.sh $MDEV $SUBSYSTEM)sd[a-z] 0:0 666 $(/etc/hotplug/remove.sh $MDEV $SUBSYSTEM)mmcblk[0-9]p[0-9] 0:0 666 @(/etc/hotplug/insert.sh $MDEV $SUBSYSTEM)mmcblk[0-9] 0:0 666 $(/etc/hotplug/remove.sh $MDEV $SUBSYSTEM)
创建etc/hotplug目录,并在该目录下创建insert.sh和remove.sh脚本
insert.sh
#! /bin/shif [ -n "$1" ] ; then if [ -b /dev/$1 ]; then if [ ! -d /media ]; then mkdir -p /media fi if [ ! -d /media/$1 ]; then mkdir -p /media/$1 fi mount /dev/$1 /media/$1 fifiecho "AAAA:insert:" > /dev/consoleecho $1 > /dev/console
remove.sh
#! /bin/shMOUNTS=$(mount | grep $1 | cut -d' ' -f3)umount $MOUNTSrm -rf $MOUNTSecho "AAAA:remove:$MOUNTS" > /dev/consoleecho $1 > /dev/console
另外,还需在etc/init.d目录下的初始化脚本中加入
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplugmdev -s
OTG模式
配置内核
Device Drivers ---> [*] USB support ---> <*> USB Gadget Support ---> <M> Mass Storage Gadget
制作镜像
制作一个10M的镜像
dd if=/dev/zero of=disk.img bs=1M count=10
格式化为FAT32模式
mkdosfs disk.img
文件系统
把该disk.img拷贝到根文件系统的opt目录下,在etc目录下的初始化脚本中增加
mount -t vfat -o sync /opt/disk.img /mnt/sbin/modprobe g_mass_storage file=/dev/loop0 removable=1
如此设置后,开机就可以把设备连接到电脑,当做u盘来使用,大小为10M。
阅读全文
0 0
- usb的设置
- USB endpoint 的设置
- usb转的串口minicom的设置
- 怎么样设置主板上的USB跳线?
- USB转串口之minicom的设置
- linux下USB转串口的设置
- linux下USB转串口的设置
- Android - 设置adb的usb连接配置
- linux下USB转串口的设置
- linux下USB转串口的设置
- linux下USB转串口的设置
- usb转的串口minicom的设置及乱码问题
- 4.12 基于OHCI的USB主机 —— USB设备设置地址
- 主板设置usb启动
- USB通讯设置
- 设置USB数据监听
- windows 2003 server 对于usb移动硬盘的设置
- USB 配置,接口,设置,endpoint描述符的关系
- 根据JSON数据,自动生成Table
- 爬去淘宝青岛啤酒的信息
- bzoj 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富(DP)
- scala之class、singleton object
- JD笔试
- usb的设置
- Retrofit2.0的使用之自定义CallAdapter.Factory
- python Day6
- HTML-css样式的创建
- [leetcode]591. Tag Validator
- C# DataTable 和List之间相互转换的方法
- 求相反数。
- Hadoop权威指南笔记③(HBase、ZooKeeper、Sqoop)
- hdu 5916 Harmonic Value Description 最大公约数