USB使用说明.txt 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. 
  2. ark1668芯片USB使用说明:
  3. 一、uboot中配置支持USB升级
  4. uboot配置添加usb:
  5. 1、ARM architecture --->
  6. [*] usb support
  7. (0) usb dev part //0:usb0; 1:usb1(必选)
  8. (127) usb power gpio //配置usb复位引脚(必选,usb0和usb1的复位脚不同,切换usb升级时注意切换此IO(未使用或内部接死则配置-1))
  9. (76) usb id gpio //配置usb id引脚(必选,usb0和us1b的id脚不同,切换usb升级时注意切换此IO(未使用或内部接死则配置-1))
  10. (-1) usb sw gpio //配置usb sw引脚(可选:没有配置-1)
  11. 2、Command line interface --->
  12. Device access commands --->
  13. [*] usb
  14. 3、
  15. 情形1:使用SPL(1668基本都是用)
  16. SPL / TPL --->
  17. [ ] Support new Mentor Graphics USB //选择新版本usb驱动(暂不支持)
  18. [*] Support old Mentor Graphics USB //选择旧版本usb驱动(已OK)
  19. Device Drivers --->
  20. [*] USB support --->
  21. [*] Legacy MUSB Host Controller
  22. [*] Legacy MUSB Arkmicro
  23. //[*] Disable DMA (always use PIO) //旧版本驱动没有此选项
  24. [*] USB Mass Storage support
  25. 情形2:不使用SPL(141暂时未使用)
  26. SPL / TPL ---- //未使用
  27. Device Drivers --->
  28. [*] USB support --->
  29. MUSB Controller Driver Select (Old MUSB Controller Driver) --->
  30. (X) Old MUSB Controller Driver
  31. [*] Legacy MUSB Host Controller
  32. [*] Legacy MUSB Arkmicro
  33. //[*] Disable DMA (always use PIO) //旧版本驱动没有此选项
  34. [*] USB Mass Storage support
  35. 【注】:升级操作参考 "doc/升级说明.txt"。
  36. 二、内核中配置USB
  37. linux内核配置支持USB:
  38. Device Drivers
  39. [*] USB support --->
  40. <*> Support for Host-side USB
  41. [*] Enable USB persist by default
  42. [*] Dynamic USB minor allocation
  43. ...
  44. <*> USB Mass Storage support
  45. <*> USB Attached SCSI
  46. <M> Inventra Highspeed Dual Role Controller (TI, ADI, AW, ...)
  47. MUSB Mode Selection (Dual Role mode) --->
  48. (X) Dual Role mode
  49. <M> ArkMicro musb
  50. [*] Inventra dma
  51. USB Physical Layer drivers --->
  52. <*> NOP USB Transceiver Driver
  53. <*> USB Gadget Support --->
  54. (500) Maximum VBUS Power usage (2-500 mA)
  55. (4) Number of storage pipeline buffers
  56. <M> USB Gadget precomposed configurations
  57. ...
  58. <M> Network Control Model (NCM) support
  59. 【注】:
  60. 上述配置会编译出USB内核模块(musb_hdrc.ko和musb_ark.ko),系统启动后需要自行加载。
  61. 如果要直接编译进内核,则上述两项<M>改为<*>
  62. 如果上面配置中没有 < > USB Attached SCSI选项,则需要配置SCSI,如下:
  63. Device Drivers --->
  64. SCSI device support --->
  65. [*] legacy /proc/scsi/ support
  66. <*> SCSI disk support
  67. //<*> SCSI CDROM support
  68. //<*> SCSI generic support
  69. //[*] Asynchronous SCSI scanning
  70. [*] SCSI low-level drivers --->
  71. 【注】:具体配置可以参考ark169里面的配置。
  72. 三、配置设备树文件
  73. 参考linux/arch/arm/boot/dts/ark169.dts文件里的usb和usb phy的配置,添加到自己对应的dts文件里。
  74. 添加部分如下:
  75. &usb0_phy {
  76. compatible = "usb-nop-xceiv";
  77. #phy-cells = <0>;
  78. status = "okay";
  79. };
  80. &usb1_phy {
  81. compatible = "usb-nop-xceiv";
  82. #phy-cells = <0>;
  83. status = "okay";
  84. };
  85. &usb0 {
  86. status = "okay"; //使用USB0则配置“okay”,屏蔽USB0则配置“disabled”
  87. };
  88. &usb1 {
  89. status = "okay"; //使用USB1则配置“okay”,屏蔽USB1则配置“disabled”
  90. };
  91. 四、编译并升级系统
  92. 升级操作参考 "doc/升级说明.txt"。
  93. 五、进入系统后加载驱动并挂在U盘
  94. 第一步:加载驱动(USB编译成内核模块是才需要加载)
  95. //先加载
  96. insmod lib/modules/4.14.88/kernel/drivers/usb/musb/musb_hdrc.ko
  97. //后加载
  98. insmod lib/modules/4.14.88/kernel/drivers/usb/musb/musb_ark.ko
  99. 第二步:置otg
  100. 使用usb0时需要先置usb0的otg模式:
  101. echo otg > /sys/devices/platform/ahb/e0100000.usb/musb-hdrc.0/mode
  102. 使用usb1时需要先置usb1的otg模式:
  103. echo otg > /sys/devices/platform/ahb/e0400000.usb/musb-hdrc.1/mode
  104. 【注】:切换usb0和usb1做U盘时,需要置对应的otg。
  105. 此时插拔U盘,在/dev/目录下会有节点生成:/dev/sd*
  106. 插入U盘log参考如下:
  107. / # dmesg -c
  108. usb 1-1: new high-speed USB device number 5 using musb-hdrc
  109. usb-storage 1-1:1.0: USB Mass Storage device detected
  110. scsi host1: usb-storage 1-1:1.0
  111. 拔掉U盘log参考如下:
  112. / # dmesg -c
  113. scsi 1:0:0:0: Direct-Access SD Card Reader 1.00 PQ: 0 ANSI: 6
  114. sd 1:0:0:0: Attached scsi generic sg0 type 0
  115. sd 1:0:0:0: [sdb] 15126528 512-byte logical blocks: (7.74 GB/7.21 GiB)
  116. sd 1:0:0:0: [sdb] Write Protect is off
  117. sd 1:0:0:0: [sdb] Mode Sense: 03 00 00 00
  118. sd 1:0:0:0: [sdb] No Caching mode page found
  119. sd 1:0:0:0: [sdb] Assuming drive cache: write through
  120. sdb: sdb1
  121. sd 1:0:0:0: [sdb] Attached SCSI removable disk
  122. usb 1-1: USB disconnect, device number 5
  123. 第三步:手动挂载测试(按照上述参考节点:/dev/sdb1)
  124. 命令:mount /dev/sdb1 /mnt
  125. 挂在成功后可以看到U盘下的文件。
  126. 六、启动ncm模式
  127. 加载ncm驱动:
  128. 在第五步中加载完成musb_hdrc.ko和musb_ark.ko后,再加载ncm驱动,如下:
  129. insmod lib/modules/4.14.88/kernel/drivers/usb/gadget/g_ncm.ko
  130. 切换为device模式:
  131. usb0:
  132. echo peripheral > /sys/devices/platform/ahb/e0100000.usb/musb-hdrc.0/mode
  133. usb1:
  134. echo peripheral > /sys/devices/platform/ahb/e0400000.usb/musb-hdrc.1/mode
  135. 切换回host模式:
  136. usb0:
  137. echo otg > /sys/devices/platform/ahb/e0100000.usb/musb-hdrc.0/mode
  138. usb1:
  139. echo otg > /sys/devices/platform/ahb/e0400000.usb/musb-hdrc.1/mode