Skip to main content
้€š็”จไธฒ่กŒๆ€ป็บฟ๏ผˆUSB๏ผ‰ๆ˜ฏไธ€็ง่กŒไธšๆ ‡ๅ‡†๏ผŒๅ…่ฎธๅœจๅ„็ง็ฑปๅž‹็š„็”ตๅญ่ฎพๅค‡ไน‹้—ด่ฟ›่กŒๆ•ฐๆฎไบคๆขๅ’Œ็”ตๅŠ›ไผ ่พ“ใ€‚ๅฎƒๅฏไปฅ่ฟ่กŒๅœจไธๅŒ็š„้€ŸๅบฆไธŠ๏ผŒๅฆ‚ไฝŽ้€Ÿ 1.5 Mbpsใ€ๅ…จ้€Ÿ 12 Mbpsใ€้ซ˜้€Ÿ 480 Mbpsใ€SuperSpeed 5 Gbps ไปฅๅŠ SuperSpeed Plus 10 Gbpsใ€‚ Synopsys DesignWareยฎ Core SuperSpeed USB 3.x ไธบ Qualcomm SoC ไธŠ็š„ USB ๆไพ›ๆ”ฏๆŒ๏ผŒๅนถ่ฟžๆŽฅๅˆฐไธคไธช PHY๏ผš้€š่ฟ‡ UTMI ๆŽฅๅฃ่ฟžๆŽฅ็š„ USB2 PHY ๅ’Œ้€š่ฟ‡ PIPE ๆŽฅๅฃ่ฟžๆŽฅ็š„ USB3 PHYใ€‚่ฟ™ไบ› PHY ่ฟžๆŽฅๅˆฐ็‰ฉ็† Type-C ็ซฏๅฃ๏ผŒไพฟไบŽไธŽๅค–้ƒจไธ–็•Œ่ฟ›่กŒ้€šไฟกใ€‚ ไปฅไธ‹ๆ˜ฏ USB ็š„ๅ…ณ้”ฎ็กฌไปถ็ป„ไปถใ€‚
  • USB ๆŽงๅˆถๅ™จ
    • ไธปๆŽงๅˆถๅ™จๆ˜ฏ Synopsys DesignWare Core SuperSpeed USB 3.x ๆŽงๅˆถๅ™จ๏ผˆGen1/Gen2๏ผ‰ใ€‚
      • ไธคไธช Qualcomm ๅคš็”จ้€” PHY๏ผˆQMP๏ผ‰ๅฎžไพ‹๏ผŒ็”จไบŽ USB SuperSpeed ๅ’Œ DisplayPortใ€‚
      • ็”จไบŽ้ซ˜้€Ÿ USB ็š„ Synopsys PHYใ€‚
    • ่พ…ๅŠฉๆŽงๅˆถๅ™จๆ˜ฏ Synopsys DesignWare Core ้ซ˜้€Ÿ USB 2.0 ๆŽงๅˆถๅ™จใ€‚
      • ็”จไบŽ้ซ˜้€Ÿ USB ็š„ Synopsys PHY
    • ็ฌฌไธ‰ๆŽงๅˆถๅ™จๆ˜ฏ Synopsys DesignWare Core ้ซ˜้€Ÿ USB 2.0 ๆŽงๅˆถๅ™จใ€‚
      • ็”จไบŽ้ซ˜้€Ÿ USB ็š„ Synopsys PHYใ€‚
    • Dragonwing IQ-9075 ๆœ‰ไธ‰ไธช USB ๆŽงๅˆถๅ™จ๏ผˆไธป USB 3.2ใ€่พ…ๅŠฉ USB 3.2ใ€็ฌฌไธ‰ USB 2.0๏ผ‰
  • Synopsys DesignWare core SuperSpeed USB 3.x ๆŽงๅˆถๅ™จ็‰นๆ€ง
    • Synopsys DesignWare Core SuperSpeed USB 3.x ๆŽงๅˆถๅ™จๆ˜ฏ็ฌฆๅˆ USB SuperSpeed ๆ ‡ๅ‡†็š„ๆŽงๅˆถๅ™จ๏ผŒๅฏไปฅ้…็ฝฎไธบไปฅไธ‹ๆ–นๅผไน‹ไธ€๏ผš
      • ไป…ๅค–่ฎพ้…็ฝฎ
      • ไป…ไธปๆœบ้…็ฝฎ
      • ๅŒ่ง’่‰ฒ้…็ฝฎ
    • ๆ”ฏๆŒๆ‰€ๆœ‰ไผ ่พ“็ฑปๅž‹๏ผˆๆŽงๅˆถใ€ๆ‰น้‡ใ€ไธญๆ–ญๅ’ŒๅŒๆญฅ๏ผ‰
    • ๆ”ฏๆŒ SuperSpeed ๆ‰น้‡ๆต
    • ็ฌฆๅˆๅฏๆ‰ฉๅฑ•ไธปๆœบๆŽงๅˆถๅ™จๆŽฅๅฃ๏ผˆxHCI๏ผ‰่ง„่Œƒ
    • ไธปๆœบๆจกๅผๆ”ฏๆŒ SuperSpeed๏ผˆ5 Gbps๏ผ‰ใ€้ซ˜้€Ÿ๏ผˆ480 Mbps๏ผ‰ใ€ๅ…จ้€Ÿ๏ผˆ12 Mbps๏ผ‰ๅ’ŒไฝŽ้€Ÿ๏ผˆ1.5 Mbps๏ผ‰ๆ“ไฝœใ€‚
    • ่ฎพๅค‡ๆจกๅผๆ”ฏๆŒ SuperSpeed๏ผˆ5 Gbps๏ผ‰ใ€้ซ˜้€Ÿ๏ผˆ480 Mbps๏ผ‰ๅ’Œๅ…จ้€Ÿ๏ผˆ12 Mbps๏ผ‰ๆ“ไฝœ๏ผŒๅนถๆœ€ๅคšๆ”ฏๆŒ 16 ไธชๅŒๅ‘็ซฏ็‚น๏ผˆๅŒ…ๆ‹ฌๆŽงๅˆถ็ฎก้“ ep0๏ผ‰ใ€‚
    • ้“พ่ทฏ็”ตๆบ็ฎก็†
  • USB PHY ่ฎฟ้—ฎๆ–นๅผ
    • ้€š่ฟ‡ AHB2PHY ๆไพ›ๅฏ„ๅญ˜ๅ™จ็บงๆŽฅๅฃ๏ผŒ็”จไบŽๆ‰ง่กŒ PHY ็›ธๅ…ณๆ“ไฝœใ€‚
  • USB Type-C
    • ๆ”ฏๆŒ USB Type-C ๅนถไฝฟ็”จ PM7325B PD ๆŽงๅˆถๅ™จ่ฟ›่กŒ็”ตๅŠ›ไผ ่พ“ใ€‚
    • ๅฎŒๅ…จ็ฌฆๅˆ USB Type-C 3.0 ็”ตๅŠ›ไผ ่พ“่ง„่Œƒใ€‚
    • ๅœจไผ ่พ“ๆŽงๅˆถๅ™จ็กฎๅฎš่ฟžๆŽฅ็š„้“พ่ทฏไผ™ไผด็š„ Type-C ๆ–นๅ‘ใ€่ง’่‰ฒๅ’ŒๆจกๅผๅŽ๏ผŒๆ”ฏๆŒๆ นๆฎ UCSI ๆก†ๆžถๆ›ดๆ–ฐ PM7325B ่ฝฏไปถ้ฉฑๅŠจ็จ‹ๅบใ€‚
    • ไป…็”จไบŽไธป USB ๆŽงๅˆถๅ™จใ€‚

ๆ—ถ้’Ÿ

ไธ‹่กจๅˆ—ๅ‡บไบ† USB ๆŽงๅˆถๅ™จไปฅๅŠ้ซ˜้€Ÿๅ’Œ SuperSpeed PHY ๆญฃๅธธ่ฟ่กŒๆ‰€้œ€็š„ๆ—ถ้’Ÿๅ’Œๅทฅไฝœ้ข‘็އใ€‚ ่กจ๏ผš USB ๆŽงๅˆถๅ™จๆ—ถ้’Ÿ ่กจ๏ผš ้ซ˜้€Ÿ PHY ๆ—ถ้’Ÿ ่กจ๏ผš SuperSpeed PHY ๆ—ถ้’Ÿ

็”ตๅŽ‹่ฝจ

ไธ‹่กจๅˆ—ๅ‡บไบ†้ซ˜้€Ÿๅ’Œ SuperSpeed PHY ๆ‰€้œ€็š„็”ตๅŽ‹่ฝจใ€‚ ่กจ๏ผš USB ็”ตๅŽ‹่ฝจ Dragonwing IQ-9075 USB ็”ตๅŽ‹่ฝจ
  • HS PHY: L7A (0.88 V), L6C (1.8 V), L9A (3.3 V)
  • SS PHY: L1C, L7A

ไธญๆ–ญ

ไธ‹่กจๅˆ—ๅ‡บไบ† USB ๆŽงๅˆถๅ™จ็”จไบŽ้€š็Ÿฅไบ‹ไปถ็š„ๅ„็งไธญๆ–ญใ€‚ ่กจ๏ผš USB ๆŽงๅˆถๅ™จไธญๆ–ญ

ไบ’่ฟž

ไธ‹่กจๅˆ—ๅ‡บไบ† USB ๆŽงๅˆถๅ™จไฝฟ็”จ็š„ๅ„็งไบ’่ฟžใ€‚ ่กจ๏ผš USB ไบ’่ฟž

ไฝฟ็”จๆ—ถ้’ŸๆŽงๅˆถ็š„ USB ๆŽงๅˆถๅ™จๅคไฝ

ไธ‹่กจๅˆ—ๅ‡บไบ† USB ๆŽงๅˆถๅ™จๅ’Œ PHY ไฝฟ็”จ็š„ๅคไฝๆ–นๆณ•ใ€‚ ่กจ๏ผš USB ๆ—ถ้’Ÿๅคไฝๆ–นๆณ•

ไฝฟ็”จๅฏ„ๅญ˜ๅ™จ็š„ USB ๆŽงๅˆถๅ™จ่ฝฏไปถๅคไฝ

ไธ‹่กจๅˆ—ๅ‡บไบ†ๅคไฝ USB ๆŽงๅˆถๅ™จ็š„ๅฏ„ๅญ˜ๅ™จ้€‰้กนใ€‚ ่กจ๏ผš USB ๆŽงๅˆถๅ™จๅคไฝ Dragonwing IQ-9075 ๆŽงๅˆถๅ™จๅคไฝๅฏ„ๅญ˜ๅ™จ
  • HS: GCC_USB2_PHY_PRIM_BCR
  • SS: GCC_USB3_PHY_PRIM_BCR/ GCC_USB3PHY_PHY_PRIM_BCR
  • GCC_USB3_PHY_TERT_BCR
  • USB30_PRIM_GDSC
  • USB30_SEC_GDSC
  • USB20_PRIM_GDSC
Dragonwing IQ-615 ่พ…ๅŠฉ USB ๆŽงๅˆถๅ™จๅคไฝๅฏ„ๅญ˜ๅ™จ
  • GCC_USB20_SEC_BCR
  • GCC_QUSB2PHY_SEC_BCR
  • GCC_USB2_PHY_SEC_BCR

USB ๆŽงๅˆถๅ™จๅ’Œ SoC ้›†ๆˆ

USB ๆŽงๅˆถๅ™จ็š„็Ÿฅ่ฏ†ไบงๆƒๅ’Œ PHY ้›†ๆˆๅˆฐ SoC ไธญ๏ผŒๅฆ‚ไธ‹ๅ›พๆ‰€็คบใ€‚ ๅ›พ๏ผšUSB ๆŽงๅˆถๅ™จ PHY ๅ’Œ SoC ้›†ๆˆUSB 3.xcontrollerSoCType-C connectorAHB 2PHYDisplay port controllerSS0_1DPPHY (QMP)SS0_0DPPHY (QMP)EUDHS0PHY(SNPS)PipeUTMISSHS Synopsys DesignWare Core SuperSpeed USB 3.0 ็Ÿฅ่ฏ†ไบงๆƒไป…ๆŽงๅˆถๆ ธๅฟƒๅŠŸ่ƒฝ๏ผŒไธๆŽงๅˆถ่ฎพๅค‡่ง„ๆ ผ๏ผŒๅฆ‚ๆ—ถ้’Ÿใ€ไบ’่ฟžใ€็จณๅŽ‹ๅ™จๅ’Œ GDSCใ€‚Synopsys DesignWare Core ็Ÿฅ่ฏ†ไบงๆƒๅตŒๅ…ฅๅœจ Qscratch ๅŒ…่ฃ…ๅ™จ๏ผˆ็Ÿฅ่ฏ†ไบงๆƒๅ’Œ่ฝฏไปถ้ฉฑๅŠจ็จ‹ๅบ๏ผ‰ๅ†…๏ผŒ่ฏฅๅŒ…่ฃ…ๅ™จ่ดŸ่ดฃๅœจๆŽขๆต‹ใ€ๆŒ‚่ตทๆˆ–ๆขๅค็Šถๆ€ๆœŸ้—ด็ฎก็†ๆ‰€้œ€็š„่ต„ๆบ๏ผˆๆ—ถ้’Ÿใ€ไบ’่ฟžใ€ไธญๆ–ญใ€GDSC ๅ’Œ็จณๅŽ‹ๅ™จ๏ผ‰ใ€‚่ฟ™ไธคไธช้ฉฑๅŠจ็จ‹ๅบๅ…ฑๅญ˜ไปฅ็กฎไฟ USB ๅŠŸ่ƒฝใ€‚ ๆœ‰ๅ…ณ USB Qscratch ๅŒ…่ฃ…ๅ™จ้ฉฑๅŠจ็จ‹ๅบ็š„ไฟกๆฏ๏ผŒ่ฏทๅ‚่ง https://github.com/torvalds/linux/blob/master/drivers/usb/dwc3/dwc3-qcom.cใ€‚ๆœ‰ๅ…ณๆŽงๅˆถๅ™จๆ ธๅฟƒ้ฉฑๅŠจ็จ‹ๅบ็š„ไฟกๆฏ๏ผŒ่ฏทๅ‚่ง https://github.com/torvalds/linux/blob/master/drivers/usb/dwc3/core.cใ€‚

xHCI ๆ”ฏๆŒ

xHCI ่ง„่Œƒๆ่ฟฐไบ† USB 2.0 ๅŠๆ›ด้ซ˜็‰ˆๆœฌ็š„ๅฏ„ๅญ˜ๅ™จ็บงไธปๆœบๆŽงๅˆถๅ™จๆŽฅๅฃใ€‚USB ๆŽงๅˆถๅ™จ็ฌฆๅˆ xHCI ่ง„่Œƒ๏ผŒๅœจไธปๆœบๆจกๅผไธ‹ๆ”ฏๆŒ SuperSpeed๏ผˆ5 Gbps๏ผ‰ใ€้ซ˜้€Ÿ๏ผˆ480 Mbps๏ผ‰ใ€ๅ…จ้€Ÿ๏ผˆ12 Mbps๏ผ‰ๅ’ŒไฝŽ้€Ÿ๏ผˆ1.5 Mbps๏ผ‰ๆ“ไฝœใ€‚ ๅœจไธปๆœบๆจกๅผไธ‹ไฝฟ็”จ Linux ๆ ‡ๅ‡† xHCI ้ฉฑๅŠจ็จ‹ๅบๆฅๆ“ไฝœ USB ๆŽงๅˆถๅ™จใ€‚

USB Type-C ่ฟžๆŽฅๅ™จ็ณป็ปŸ่ฝฏไปถๆŽฅๅฃ๏ผˆUCSI๏ผ‰

ๆณจๆ„Dragonwing IQ-9075 ๅ’Œ Dragonwing IQ-8275 ไธๆ”ฏๆŒ USB Type-C ๅŠŸ่ƒฝใ€‚

USB ๅŠŸ่ƒฝ

Qualcomm ่Šฏ็‰‡็กฌไปถ SoC ๅ…่ฎธๅœจๅŒ่ง’่‰ฒ่ฎพๅค‡๏ผˆDRD๏ผ‰ๆจกๅผไธ‹ๅทฅไฝœใ€‚DRD ๆ”ฏๆŒ่ฎพๅค‡ๅ’Œไธปๆœบไธค็ง่ง’่‰ฒใ€‚่ฎพๅค‡ๅŠจๆ€ๆฃ€ๆต‹่ฆๅˆ‡ๆขๅˆฐ็š„่ง’่‰ฒ๏ผŒๅนถ็›ธๅบ”ๅœฐๅฏนๆŽงๅˆถๅ™จ่ฟ›่กŒ็ผ–็จ‹ใ€‚ๆ”ฏๆŒ่‡ชๅŠจๆŒ‚่ตทๅŠŸ่ƒฝ๏ผŒๅฏๅœจๆ‹”ไธ‹็”ต็ผ†ๆ—ถๅ…ณ้—ญ USB ๆŽงๅˆถๅ™จใ€‚ๆ”ฏๆŒ่ง†้ข‘ใ€้Ÿณ้ข‘ใ€็ฝ‘็ปœๅ…ฑไบซใ€ๆ–‡ไปถไผ ่พ“ใ€ๅช’ไฝ“ไผ ่พ“ๅ’Œๅ……็”ต็ญ‰ๅŠŸ่ƒฝๆŽฅๅฃใ€‚ ่กจ๏ผš USB ๅŠŸ่ƒฝ๏ผšLinux

่ฟ่กŒๆ—ถ็”ตๆบ็ฎก็†

ๅฏๆ นๆฎๆ‚จ็š„่ฆๆฑ‚ๅฏ็”จ่ฟ่กŒๆ—ถ็”ตๆบ็ฎก็†ๅŠŸ่ƒฝใ€‚LPM ๆ”ฏๆŒๅทฒไฝœไธบ https://lore.kernel.org/all/20231017131851.8299-1-quic_kriskura@quicinc.com/ ็š„ไธ€้ƒจๅˆ†ๆทปๅŠ ใ€‚ ๆณจๆ„Dragonwing IQ-9075 ๅ’Œ Dragonwing IQ-8275 ไธๆ”ฏๆŒ USB Type-A ็ซฏๅฃ็š„่ฟ่กŒๆ—ถ็”ตๆบ็ฎก็†ใ€‚ ้ป˜่ฎคๆƒ…ๅ†ตไธ‹๏ผŒ่ฟ่กŒๆ—ถ็š„ USB ๆŒ‚่ตทๅ’Œๆขๅค่ขซ็ฆ็”จใ€‚่ฆๅฏ็”จ่ฟ™ไบ›ๅŠŸ่ƒฝ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
้ป˜่ฎค็š„่‡ชๅŠจๆŒ‚่ตทๅปถ่ฟŸ่ฎพ็ฝฎไธบ 5 ็ง’ใ€‚่ฆๆ›ดๆ”นๅปถ่ฟŸ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ sysfs ๅ‘ฝไปค๏ผš
ๅœจ่ง’่‰ฒๅˆ‡ๆขๆœŸ้—ด๏ผŒDWC3 ๆŽงๅˆถๅ™จ่ฟ›ๅ…ฅๆŒ‚่ตท็Šถๆ€๏ผŒๅˆ‡ๆข GDSC๏ผŒๅนถๅคไฝๆŽงๅˆถๅ™จ๏ผŒไปฅ็กฎไฟไธปๆœบๆจกๅผๅค–่ฎพๆžšไธพๆˆๅŠŸใ€‚ ๅœจไธปๆœบๆจกๅผไธ‹๏ผŒไธบไบ†ไฝฟ่ฟœ็จ‹ๅ”ค้†’ๆญฃๅธธๅทฅไฝœ๏ผŒๆ นๆฎๆ‚จ็š„่ฆๆฑ‚ไธบ xHCI ๆŽฅๅฃใ€USB ๆ น้›†็บฟๅ™จๅ’Œ่ฟžๆŽฅ็š„ๅค–่ฎพๅฏ็”จๅ”ค้†’ๅ’Œ่‡ชๅŠจๆŒ‚่ตทใ€‚
ๆณจๆ„ไธปๆœบๆŽงๅˆถๅ™จ้ฉฑๅŠจ็จ‹ๅบ๏ผˆHCD๏ผ‰่ฎพๅค‡็”Ÿๆˆ xhci-hcd.X.auto ๅ€ผ๏ผŒๅ…ถไธญ X = 0ใ€1ใ€2ใ€‚ๅฎƒ่กจ็คบ่ฟžๆŽฅๅˆฐ USB ็š„่ฎพๅค‡ๆ•ฐ้‡ใ€‚่ฟžๆŽฅ็š„่ฎพๅค‡ๅœจ /sys/bus/platform/devices/xhci-hcd.X.auto/usb1/<node number> ไธ‹ๅˆ—ๅ‡บใ€‚<node number> ๅ€ผๅ–ๅ†ณไบŽ่ฟžๆŽฅๅˆฐ USB ็ซฏๅฃ็š„่ฎพๅค‡ๆ•ฐ้‡ใ€‚ ่ฆไธบ LS ๅ…‰ๅญฆ้ผ ๆ ‡ๅฏ็”จ่ฟœ็จ‹ๅ”ค้†’๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
่ฆๆฃ€ๆŸฅ่ฟ่กŒๆ—ถ็Šถๆ€๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
่ฆ้ฟๅ…ๅœจ็ป„ๅˆๅˆ‡ๆขไธญๆŒ‚่ตท๏ผŒ่ฏท้€š่ฟ‡่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคๅˆ ้™คๆดปๅŠจ็š„ UDC ไปฅ้‡ๆ–ฐ็ป‘ๅฎš็ป„ๅˆ๏ผš

่ฝฏไปถๅŠŸ่ƒฝ

่ฝฏไปถๆ”ฏๆŒไปฅไธ‹ USB ๅŠŸ่ƒฝใ€‚ ่กจ๏ผš USB ่ฝฏไปถๅŠŸ่ƒฝ

USB ๆžถๆž„

Qualcomm USB ่ฝฏไปถๆžถๆž„ๅคง่‡ด็”ฑไธคไธช็ป„ไปถ็ป„ๆˆ๏ผŒไธ€ไธชๅŸบไบŽ็บฏไธŠๆธธ๏ผŒๅฆไธ€ไธชๆ˜ฏๅŒ…ๅซไธ€ไบ›ๅพ…ๅค„็†ๅŠŸ่ƒฝ็›ธๅ…ณๅ˜ๆ›ด็š„ๆฒ™็›’ใ€‚็บฏไธŠๆธธ็›ดๆŽฅไปŽๆœ€ๆ–ฐ็š„็จณๅฎšๅ†…ๆ ธ้•ฟๆœŸๆ”ฏๆŒ๏ผˆLTS๏ผ‰6.6.2 ็‰ˆๆœฌไธญ้€‰ๅ–ใ€‚่ฏฅๆžถๆž„ไฝฟ็”จ Yocto๏ผˆ4.0 ็‰ˆ๏ผ‰้…ๆ–นๆฅๅˆ›ๅปบไบŒ่ฟ›ๅˆถๆ–‡ไปถใ€‚ ๅ›พ๏ผšUSB ่ฝฏไปถๆžถๆž„/dev/ffs-xxx//dev/ffs-xxx//dev/ffs-xxx//sys/kernel/config/usb_gadget/โ€ฆ/sys/bus/usb/โ€ฆFunction driverFunction driverGadget frameworkconfigfs, UDC coreDevice controller driverClassdriverClassdriverUSB coreHost controller driverdwc3-qcomDWC3 core driversFemto phy driverQMP phy driverUCSIPMIC GLINKPM7325BaDSP corecharger firmwareVBUS, CC, D+,D-HSSS/sys/class/typec/port0/โ€ฆDual-role class driverType-C role swapdiag-routerport-bridgeadbd.serviceUSB peripheral mode configurationRuntime power management controlUser-space servicesVFSKernel-spaceType-C connector ๆฒ™็›’ไฝฟ็”จไปฅไธ‹็‰นๅฎšไบŽ Qualcomm ็š„ๅŠŸ่ƒฝๅฎž็Žฐใ€‚
  • USB_DWC3_QCOM๏ผšไธป่ฆ็ฒ˜ๅˆ้ฉฑๅŠจ็จ‹ๅบ่ดŸ่ดฃไธปๆœบๅ’Œ่ฎพๅค‡ๆจกๅผไธ‹็š„ USB ๅŠŸ่ƒฝ๏ผŒๅ…ทไฝ“ๅ–ๅ†ณไบŽ่ฟžๆŽฅ็š„ๅ†…ๅฎนใ€‚็ฒ˜ๅˆ้ฉฑๅŠจ็จ‹ๅบ็š„่ฎพๅค‡ๆ ‘ๆก็›ฎๅŒ…ๆ‹ฌๆ—ถ้’Ÿใ€็”ตๆบ่ฝจๅ’Œไธญๆ–ญ็ญ‰่ต„ๆบใ€‚ๆญคๅŠŸ่ƒฝไฝฟ็”จ DWC3 ๆ ธๅฟƒ้ฉฑๅŠจ็จ‹ๅบไฝœไธบๅบ“๏ผŒๆŽงๅˆถ DWC3 ๆŽงๅˆถๅ™จ็š„ๅฎž้™…ๅŠŸ่ƒฝใ€‚ๆ›ดๅคš่ฏฆๆƒ…๏ผŒ่ฏทๅ‚่ง https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/dwc3/dwc3-qcom.c?h=v6.6.2ใ€‚
  • Synopsys femto PHY๏ผšQualcomm Synopsys femto PHY ๆ˜ฏ้ซ˜้€Ÿ USB PHY๏ผŒ่ดŸ่ดฃๆŽงๅˆถ D+/D- ็บฟ่ทฏ๏ผŒๅนถไธŽๅ……็”ตๅ™จๆฃ€ๆต‹ไธ€่ตทไฟƒ่ฟ›ๆ•ฐๆฎไผ ่พ“ใ€‚ๆ›ดๅคš่ฏฆๆƒ…๏ผŒ่ฏทๅ‚่ง https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c?h=v6.6.2ใ€‚
  • QMP DisplayPort ็ป„ๅˆ PHY๏ผšQualcomm ๅคš็”จ้€” PHY๏ผˆQMP๏ผ‰ๆ˜พ็คบ็ซฏๅฃ็ป„ๅˆ PHY ่ฎพ่ฎก็”จไบŽ้€š็”จ็”จ้€”ใ€‚USB ็š„ไธ€ไธช็คบไพ‹็”จไพ‹ๆ˜ฏ SuperSpeed ๅ’Œ SuperSpeed-plus ๅŠŸ่ƒฝ๏ผŒๅ…ถไธญ Rx+/Rx- ๅ’Œ Tx+/Tx- ๅฏ็”จไบŽๆ•ฐๆฎไผ ่พ“ใ€‚ๅฝ“ๆ˜พ็คบๅฏไปฅๅœจ USB ไปฅ SuperSpeed ๅทฅไฝœๆ—ถๅ ็”จไธ€ๅฏน้€š้“่ฟ›่กŒ้•œๅƒๅŠŸ่ƒฝๆ—ถ๏ผŒPHY ๆ”ฏๆŒๆ˜พ็คบๅค‡็”จๆจกๅผใ€‚ๆ›ดๅคš่ฏฆๆƒ…๏ผŒ่ฏทๅ‚่ง https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-qmp-combo.c?h=v6.6.2ใ€‚

USB ๆŽฅๅฃ

USB ๆ”ฏๆŒๅคš็งๆŽฅๅฃๆฅไผ ่พ“้Ÿณ้ข‘ใ€่ง†้ข‘ใ€่ฐƒ่ฏ•ไฟกๆฏๅ’Œ็ฝ‘็ปœๅ…ฑไบซใ€‚ไปฅไธ‹ๆฏไธช USB ๆŽฅๅฃ้€šไฟกๅ่ฎฎ้ƒฝไธๅŒ๏ผŒ้™คไบ†ๆ ‡ๅ‡† USB ๅ่ฎฎๅค–๏ผŒ่ฟ˜ๆœ‰่‡ชๅทฑ็š„ๅ่ฎฎใ€‚
  • Android ่ฐƒ่ฏ•ๆกฅ๏ผˆADB๏ผ‰
    • USB ADB ๆ˜ฏไธ€ไธช่ฐƒ่ฏ•ๆŽฅๅฃ๏ผŒ้€š่ฟ‡ USB ่ฟžๆŽฅๆไพ›ๅฏน็ณป็ปŸ็š„่ฎฟ้—ฎใ€‚ๆœ‰ๅ…ณ ADB ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚่ง https://developer.android.com/tools/adbใ€‚
    • ๆ–‡ไปถๅๆ˜ฏ dev ่Š‚็‚น็š„่™šๆ‹Ÿ eps ๅ็งฐใ€‚ๆœ‰ๅ…ณ f_fs.c ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚่ง https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/gadget/function/f_fs.c?h=v6.6.2ใ€‚
    • ็”จๆˆท็ฉบ้—ดๆœๅŠก๏ผš็”จๆˆท็ฉบ้—ดๅฎˆๆŠค่ฟ›็จ‹ adbd.service ่ฟ่กŒ ADB๏ผŒๅนถ่ดŸ่ดฃๅœจๅบ•ๅฑ‚ๅ†…ๆ ธ้ฉฑๅŠจ็จ‹ๅบๅ’Œไธปๆœบ PC ไน‹้—ดๅปบ็ซ‹่ฟžๆŽฅใ€‚
  • ่ฏŠๆ–ญ๏ผˆdiag๏ผ‰
    • Diag ๆ˜ฏ็”จไบŽไปŽๅ„ไธชๅญ็ณป็ปŸๆ”ถ้›†ๆ—ฅๅฟ—ๆ•ฐๆฎๅ’Œ่ฐƒ่ฏ•็š„่ฏŠๆ–ญๆก†ๆžถใ€‚่ฏŠๆ–ญๆ•ฐๆฎ้€š่ฟ‡ USB ไผ ่พ“ๅˆฐไธปๆœบ PCใ€‚
    • ๅ†…ๆ ธ้ฉฑๅŠจ็จ‹ๅบ๏ผšDiag ไฝฟ็”จ f_fs.c ๆšด้œฒ /dev/ffs-diag ่Š‚็‚น๏ผŒ่ฏฅ่Š‚็‚น็”ฑ็”จๆˆท็ฉบ้—ดๆœๅŠกๆ“ไฝœไปฅ่ฟ›่กŒๅ„็งๆ“ไฝœใ€‚dev ่Š‚็‚นๅ…ทๆœ‰ไปฅไธ‹ไธ‰ไธชๆ–‡ไปถ๏ผš
  • ๅคงๅฎน้‡ๅญ˜ๅ‚จ
    • ๅ…ทๆœ‰ๅคงๅฎน้‡ๅญ˜ๅ‚จ้ฉฑๅŠจ็จ‹ๅบ็š„้€š็”จๆŽฅๅฃ้ฉฑๅŠจ็จ‹ๅบๅฏไพ›่ฎพๅค‡ไฝœไธบ้€š็”จๅญ˜ๅ‚จ่ฎพๅค‡ไฝฟ็”จใ€‚
    • ๅ†…ๆ ธ้ฉฑๅŠจ็จ‹ๅบ๏ผšmass_storage ๅŠŸ่ƒฝ็”ฑ f_mass_storage.c ้ฉฑๅŠจ็จ‹ๅบ่ฐƒ่Š‚ใ€‚ๆญค้ฉฑๅŠจ็จ‹ๅบๆšด้œฒ dev node[revisit]๏ผŒ็”ฑไธปๆœบ PC ๆŽงๅˆถใ€‚ๆœ‰ๅ…ณๅคงๅฎน้‡ๅญ˜ๅ‚จ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚่ง https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/gadget/function/f_mass_storage.c?h=v6.6.2ใ€‚
  • ่ฟœ็จ‹็ฝ‘็ปœ้ฉฑๅŠจ็จ‹ๅบๆŽฅๅฃ่ง„่Œƒ๏ผˆRNDIS๏ผ‰
    • RNDIS ๆ˜ฏ Microsoft ไธบๅŠจๆ€ๅณๆ’ๅณ็”จ I/O ๆ€ป็บฟ๏ผˆๅฆ‚ USB๏ผ‰ไธŠ็š„็ฝ‘็ปœ่ฎพๅค‡ๅผ€ๅ‘็š„่ง„่Œƒใ€‚
    • ๅ†…ๆ ธ้ฉฑๅŠจ็จ‹ๅบ๏ผšๅฎƒไฝฟ็”จ f_rndis ้ฉฑๅŠจ็จ‹ๅบ๏ผŒ่ฏฅ้ฉฑๅŠจ็จ‹ๅบๅญ˜ๅœจไบŽไธŠๆธธ Linux ๅ†…ๆ ธไธญ๏ผŒ็›ดๆŽฅไธŽ็ฝ‘็ปœๆŽฅๅฃๆˆ–ๅ †ๆ ˆ้€šไฟกใ€‚
  • ็ฝ‘็ปœๆŽงๅˆถๆจกๅž‹๏ผˆNCM๏ผ‰
    • NCM ๆ˜ฏไธ€็งๅ่ฎฎ๏ผŒไธŽ RNDIS ็›ธๆฏ”๏ผŒๆ—จๅœจๆไพ›้ซ˜็บง็‰นๆ€งๅ’ŒๅŠŸ่ƒฝใ€‚
    • ๅฎƒ้€šๅธธๅ‡บ็Žฐๅœจ USB ่ฎพๅค‡ๅฟ…้กปๅค„็†่‹›ๅˆป็ฝ‘็ปœไปปๅŠก็š„ๅบ”็”จไธญใ€‚
  • USB ้Ÿณ้ข‘็ฑป 2๏ผˆUAC2๏ผ‰
    • UAC2 ๆ˜ฏๆŽงๅˆถ USB ้Ÿณ้ข‘่ฎพๅค‡ไธŽ่ฎก็ฎ—ๆœบไน‹้—ด้€šไฟก็š„ๆ ‡ๅ‡†ใ€‚
    • UAC2 ๆ”ฏๆŒๆ›ด้ซ˜็š„้Ÿณ้ข‘ๆ•ฐๆฎไผ ่พ“้€Ÿ็އ๏ผŒไปŽ่€Œๆ”นๅ–„้Ÿณ้ข‘่ดจ้‡ๅนถๅ‡ๅฐ‘ๅปถ่ฟŸใ€‚
  • USB ่ง†้ข‘็ฑป๏ผˆUVC๏ผ‰
    • UVC ๆ˜ฏไธ€็งๆ ‡ๅ‡†๏ผŒๅฎšไน‰ไบ†่ง†้ข‘ๆต่ฎพๅค‡๏ผˆๅฆ‚็ฝ‘็ปœๆ‘„ๅƒๅคด๏ผ‰ๅบ”ๅฆ‚ไฝ•ไฝฟ็”จ USB ไธŽ่ฎก็ฎ—ๆœบ้€šไฟกใ€‚
    • UVC ไพฟไบŽ่ง†้ข‘่ฎพๅค‡็š„ๅณๆ’ๅณ็”จๅŠŸ่ƒฝใ€‚

USB ๅทฅๅ…ท

ไธ‹่กจๅˆ—ๅ‡บไบ†ไธ€ไบ›ๅธธ็”จ็š„ USB ๅทฅๅ…ทใ€‚ ่กจ๏ผš USB ๅทฅๅ…ทๅ’Œไธ‹่ฝฝ่ฏฆๆƒ…

้…็ฝฎ USB ๅผ•ๅฏผๅŠ ่ฝฝ็จ‹ๅบ

ๅผ•ๅฏผๅŠ ่ฝฝ็จ‹ๅบไธญ็”จไบŽ่ฐƒๆ•ด้ซ˜้€Ÿๅ’Œ SuperSpeed USB ไฟกๅท่ดจ้‡็š„่ฎพๅค‡ๆ ‘ๅ‚ๆ•ฐๅฏไปฅไฝฟ็”จ Qualcomm DeviceTree ็ผ–่พ‘ๅ™จ๏ผˆQDTE๏ผ‰ๅทฅๅ…ท่ฟ›่กŒไฟฎๆ”นใ€‚ QDTE ๅทฅๅ…ท็”จไบŽ้€š่ฟ‡็ผ–่พ‘ xbl_config.elf ๆ–‡ไปถๆฅ้…็ฝฎ่ฎพๅค‡ๆ ‘ไบŒ่ฟ›ๅˆถ Blob๏ผŒๅฆ‚ไธ‹ๅ›พๆ‰€็คบใ€‚ๆœ‰ๅ…ณๅฆ‚ไฝ•้…็ฝฎ่ฎพๅค‡ๆ ‘ Blob ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚่ง QDTE ้ƒจๅˆ†ใ€‚Linux ไธปๆœบไธŠ็š„่ฎพๅค‡ๆ ‘ๆ–‡ไปถ่ทฏๅพ„ไธบ /boot_images/boot/Settings/Soc/<Chipset>/Core/WiredConnectivity/USB/usb.dtsiใ€‚ ๅ›พ๏ผš่ฎพๅค‡ๆ ‘ๅธƒๅฑ€ ไธ‹่กจๅˆ—ๅ‡บไบ†็”จไบŽ่ฐƒๆ•ด HS-USB PHY ๅ’Œ SS USB PHY ไฟกๅท่ดจ้‡็š„ๅฑžๆ€งใ€‚ ่กจ๏ผš USB ้…็ฝฎๅฑžๆ€ง

้…็ฝฎ USB ๆ‘„ๅƒๅคด

Qualcomm Linux ่ฎพๅค‡ไธบ็ฌฆๅˆ USB ่ง†้ข‘็ฑป๏ผˆUVC๏ผ‰ๆ ‡ๅ‡†็š„ USB ็ฝ‘็ปœๆ‘„ๅƒๅคดๆไพ›้ฉฑๅŠจ็จ‹ๅบๆ”ฏๆŒใ€‚Linux ๅ†…ๆ ธ็š„ uvcvideo ้ฉฑๅŠจ็จ‹ๅบๆ”ฏๆŒๆ‘„ๅƒๅคดใ€‚ๆœ‰ๅ…ณ uvcvideo ้ฉฑๅŠจ็จ‹ๅบ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚่ง https://www.kernel.org/doc/html/v4.19/media/v4l-drivers/uvcvideo.htmlใ€‚ uvcvideo ้ฉฑๅŠจ็จ‹ๅบๅฐ†่ฟ™ไบ›ๆ‘„ๅƒๅคดๆšด้œฒไธบ V4L2 ่ง†้ข‘่ฎพๅค‡๏ผŒๅฏไปฅ้€š่ฟ‡ๅญ—็ฌฆ่ฎพๅค‡่Š‚็‚น๏ผˆๅฆ‚ /dev/videoX๏ผ‰่ฎฟ้—ฎใ€‚ ๅœจ็”จๆˆท็ฉบ้—ดไธญ๏ผŒๅบ”็”จ็จ‹ๅบๅฏไปฅไฝฟ็”จ v4l2src GStreamer ๆ’ไปถ็ฎก็† USB ๆ‘„ๅƒๅคด๏ผŒ่ฏฅๆ’ไปถไธŽ Qualcomm ๆ™บ่ƒฝๅคšๅช’ไฝ“ SDK๏ผˆIM SDK๏ผ‰ไธ€่ตทๆไพ›ใ€‚ๆˆ–่€…๏ผŒYavta๏ผˆyet another V4L2 test application๏ผ‰็ญ‰็จ‹ๅบ็›ดๆŽฅไธŽ V4L2๏ผˆVideo4Linux2๏ผ‰ๆŽฅๅฃไบคไบ’ไปฅๆต‹่ฏ•ๅ’ŒๆŽงๅˆถๆ‘„ๅƒๅคด่ฎพๅค‡ใ€‚ ๅฆ‚ๆžœ็›ฎๆ ‡ไธŠๆฒกๆœ‰ YAVTA๏ผŒ่ฏทๆŒ‰็…งไปฅไธ‹ๆญฅ้ชคไบคๅ‰็ผ–่ฏ‘ๅนถๅฎ‰่ฃ…ๅฎƒ๏ผš
  1. ๅฏไปฅไฝฟ็”จไปฅไธ‹ไปปไธ€ๆ–นๆณ•ๅปบ็ซ‹ไบคๅ‰็ผ–่ฏ‘็Žฏๅขƒใ€‚
    • ๆ–นๆณ• 1๏ผš่ฆ่ฎพ็ฝฎไบคๅ‰็ผ–่ฏ‘็Žฏๅขƒ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
    • ๆ–นๆณ• 2๏ผš่ฆ่ฎพ็ฝฎไบคๅ‰็ผ–่ฏ‘็Žฏๅขƒ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
      1. ไธ‹่ฝฝไบคๅ‰็ผ–่ฏ‘ๅ™จใ€‚
      2. ่งฃๅŽ‹ไบคๅ‰็ผ–่ฏ‘ๅ™จใ€‚
      3. ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคไธบไบคๅ‰็ผ–่ฏ‘่ฎพ็ฝฎ็Žฏๅขƒใ€‚
  2. ๅ…‹้š† Yavta ไป“ๅบ“ๅนถๆ›ดๆ”น็›ฎๅฝ•ใ€‚
  3. ไบคๅ‰็ผ–่ฏ‘่ฏฅๅทฅๅ…ทใ€‚
  4. ่ฆๅฐ† Yavta ๆŽจ้€ๅˆฐ Qualcomm Linux ็กฌไปถ SoC๏ผŒ่ฏทๆ‰ง่กŒไปฅไธ‹ๆ“ไฝœ๏ผš
    1. ๅœจๅฎฝๆพๆจกๅผไธ‹ๆ‰“ๅผ€ SSH shell ๆˆ–ไฝฟ็”จ ADB shellใ€‚ๆœ‰ๅ…ณๅฆ‚ไฝ•่ฟ่กŒ SSH ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚่ง Use SSH ้ƒจๅˆ†ใ€‚
    2. ๆŒ‚่ฝฝๆ–‡ไปถ็ณป็ปŸใ€‚
    3. ไฝฟ็”จ SCP ๆˆ–็ฑปไผผๅทฅๅ…ทไผ ่พ“ๆ–‡ไปถใ€‚ ไพ‹ๅฆ‚๏ผŒscp yavta root@10.92.162.185:/usr/bin
    4. ไธบ Yavta ๅˆ†้…ๆ‰ง่กŒๆƒ้™ใ€‚

ๅ‰ๆๆกไปถ๏ผš่Žทๅ–ๅ›พๅƒๆ ผๅผๅ’Œๅคงๅฐ

่ฆ้€š่ฟ‡ Yavta ๆˆ– GStreamer ้…็ฝฎ USB ๆ‘„ๅƒๅคด๏ผŒไปฅไธ‹ๆญฅ้ชคๆ˜ฏๅฟ…้œ€็š„ใ€‚
  1. ่ฆไบ†่งฃๆžšไธพ่ฏฆๆƒ…๏ผŒ่ฏทๆ’ๅ…ฅ USB ๆ‘„ๅƒๅคดๅนถ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
    ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
  2. ไปŽไธฒ่กŒๆŽงๅˆถๅฐ่ฏ†ๅˆซๅˆ›ๅปบ็š„ USB ๆ‘„ๅƒๅคด่ง†้ข‘่Š‚็‚น /dev/videoXใ€‚
    ๆณจๆ„1-1/1-1:1.0 ๅ€ผๆ นๆฎ่ฟžๆŽฅ็š„ USB ่ฎพๅค‡่€Œๅ˜ๅŒ–ใ€‚ ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
  3. ่ฆไฝฟ็”จ Yavta ๆŸฅ็œ‹ๆ”ฏๆŒ็š„่พ“ๅ‡บๆ ผๅผๅ’Œๅคงๅฐ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
    ๅ…ถไธญ X ๅ€ผๅŸบไบŽ่Š‚็‚นใ€‚ ไพ‹ๅฆ‚๏ผš
    ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
  4. ไปŽ็ฌฌ 3 ๆญฅ้€‰ๆ‹ฉๆ‰€้œ€็š„ๅ›พๅƒๆ ผๅผๅ’Œๅคงๅฐใ€‚

ไฝฟ็”จ Yavta ้…็ฝฎ USB ๆ‘„ๅƒๅคด

ๅ‰ๆๆกไปถ๏ผš็กฎไฟ Yavta ๅทฒไบคๅ‰็ผ–่ฏ‘๏ผŒๅนถๅทฒ่ฏ†ๅˆซ่พ“ๅ‡บๆ ผๅผๅ’Œๅคงๅฐใ€‚
  • ่ฆ้€‰ๆ‹ฉ MJPEG ๆ ผๅผ๏ผˆ1280x720 ่พ“ๅ‡บๅคงๅฐใ€30 fps๏ผ‰๏ผŒๅœจ /tmp/ ไธ‹ๆ•่Žท 10 ๅธง๏ผŒๆ–‡ไปถๅไธบ testmjpeg-00000*.bin๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
    ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
  • ่ฆ้€‰ๆ‹ฉ YUV ๆ ผๅผ๏ผˆ1280x960 ่พ“ๅ‡บๅคงๅฐใ€30 fps๏ผ‰๏ผŒๅœจ /tmp/ ไธ‹ๆ•่Žท 10 ๅธง๏ผŒ็”Ÿๆˆ็š„ๆ–‡ไปถๅไธบ testyuv-00000*.bin๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
    ๆณจๆ„ไฝฟ็”จๅ‘ฝไปค #setenforce 0 ๅฏ็”จๅฎฝๆพๆจกๅผใ€‚ ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚

ๅœจ Qualcomm IM SDK ไธญไฝฟ็”จ GStreamer ้…็ฝฎ USB ๆ‘„ๅƒๅคด

Qualcomm IM SDK ไฝฟ็”จ GStreamer๏ผŒไธ€ไธชๅผ€ๆบ็š„ๅคšๅช’ไฝ“ๆก†ๆžถ๏ผŒ็”จไบŽๅœจๅคšๅช’ไฝ“ๅ’Œๆœบๅ™จๅญฆไน ้ข†ๅŸŸๅ…ฌๅผ€็ฎ€ๅ•็š„ API ๅ’Œๆ’ไปถใ€‚ๆœ‰ๅ…ณๅฎ‰่ฃ… Qualcomm IM SDK ็š„ไฟกๆฏ๏ผŒ่ฏทๅ‚่ง Getting Started ้ƒจๅˆ†ใ€‚ Qualcomm IM SDK ๅŒ…ๆ‹ฌ v4l2src ๆ’ไปถ๏ผŒ่ฏฅๆ’ไปถๅ…่ฎธไปŽๅ…ทๆœ‰ๆ‰€้€‰ๆ ผๅผ็š„ USB ๆ‘„ๅƒๅคด่พ“ๅ…ฅใ€‚waylandsink ๆ’ไปถ่ดŸ่ดฃๅœจ Wayland ๆ˜พ็คบๅ™จไธŠๆธฒๆŸ“่ง†้ข‘่พ“ๅ‡บใ€‚ ๆณจๆ„ ๅ‰ๆๆกไปถ๏ผš
  • ็กฎไฟ Yavta ๅทฒไบคๅ‰็ผ–่ฏ‘๏ผŒๅนถๅทฒ่ฏ†ๅˆซ่พ“ๅ‡บๆ ผๅผๅ’Œๅคงๅฐใ€‚
  • ่ฆไธ‹่ฝฝๆˆ–ๆ›ดๆ–ฐๅ›บไปถ๏ผŒ่ฏทๅ‚่ง Download PCIe to USB controller firmwareใ€‚
  1. ่ฆไธบ Wayland ๆ˜พ็คบๅ™จ่ฎพ็ฝฎ็Žฏๅขƒๅ˜้‡๏ผŒ่ฏทๅœจไธฒ่กŒๆŽงๅˆถๅฐไธญ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
  2. ไฝฟ็”จ GStreamer ๅ‘ฝไปคๅฐ†่ง†้ข‘ไปŽๆ‘„ๅƒๅคดๆตๅผไผ ่พ“ๅˆฐ UIใ€‚็กฎไฟๆ‚จ่ฎพ็ฝฎไบ†้€‚ๅฝ“็š„่ฎพๅค‡ ID (/dev/videoX) ๅนถๆ นๆฎ USB ๆ‘„ๅƒๅคดๆฃ€ๆต‹้€‰ๆ‹ฉๆญฃ็กฎ็š„ๆ ผๅผใ€‚ ๆณจๆ„ๅœจ GStreamer ไธญ๏ผŒYUYV ้ขœ่‰ฒๆ ผๅผ็งฐไธบ YUY2ใ€‚ๅ› ๆญค๏ผŒๅœจ่ฎพ็ฝฎ็ฎก้“ๆ—ถๆ‚จๅฟ…้กปๆŒ‡ๅฎš YUYV ๆ ผๅผ๏ผŒๅนถๅœจ caps ่ฟ‡ๆปคๅ™จไธญไฝฟ็”จ YUY2ใ€‚
    • ๅฏนไบŽ 720p๏ผŒ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
    • ๅฏนไบŽ 1080p๏ผŒ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš

่‡ชๅฎšไน‰ USB ่ฎพๅค‡

ๆœฌ่Š‚ๆ่ฟฐ USB ่ฝฏไปถไธญๅ„็ง้…็ฝฎๅ’Œ่‡ชๅฎšไน‰็š„่ฆๆฑ‚ใ€‚

ๅ…ทๆœ‰ diag ๅ’Œ ADB ๆŽฅๅฃ็š„ USB ็ป„ๅˆ็š„็คบไพ‹ shell ่„šๆœฌ

ไฝฟ็”จ configfs ่‡ชๅฎšไน‰

configfs ๆ–‡ไปถ็ณป็ปŸๆไพ›ไธŽ sysfs ๅŠŸ่ƒฝ็›ธๅ็š„ๅŠŸ่ƒฝใ€‚ๅคš็งๆŽฅๅฃๅฏไปฅ้…็ฝฎ Linux USB gadget๏ผŒๆฏไธชๆŽฅๅฃไปฃ่กจไธ€ไธช USB ๅŠŸ่ƒฝใ€‚ ่ฟ™ไบ›ๆŽฅๅฃ็š„็ป„ๅˆๅฏไปฅ้€š่ฟ‡็ฑปไผผไบŽไธŠไธ€่Š‚ไธญๅฏๅŠจ diag-adb ็š„ๅ‘ฝไปค่ฟ›่กŒๆžšไธพใ€‚ ๅฏ็”จ็š„ USB ็ป„ๅˆๅฆ‚ไธ‹ใ€‚
  • A4A1 NCM
  • 4EE7 ADB
  • 900E DIAG
  • 901C DIAG + UAC2
  • 901D DIAG + ADB
  • 9015 MASS_STORAGE + ADB
  • 9024 RNDIS + ADB
  • 902A RNDIS + MASS_STORAGE
  • 902B RNDIS + ADB + MASS_STORAGE
  • 902C RNDIS + DIAG
  • 902D RNDIS + DIAG + ADB
  • 902F RNDIS + DIAG + MASS_STORAGE
  • 9060 DIAG + QDSS + ADB
  • 908C NCM + ADB
  • 90CA DIAG + UAC2 + ADB
  • 90CB DIAG + UVC + ADB
  • 90CC DIAG + UAC2 + UVC + ADB
  • 90DF DIAG + UVC
  • 90E0 DIAG + UAC2 + UVC
  • F000 MASS_STORAGE
  • F00E RNDIS

ๅฏ็”จๅ’Œ้…็ฝฎ UVC ็”จไพ‹

USB ่ง†้ข‘่ฎพๅค‡็ฑป๏ผˆไนŸ็งฐไธบ USB ่ง†้ข‘็ฑปๆˆ– UVC๏ผ‰ๆ˜ฏไธ€็ง USB ่ฎพๅค‡็ฑป๏ผŒๆ่ฟฐ่ƒฝๅคŸๆตๅผไผ ่พ“่ง†้ข‘็š„่ฎพๅค‡๏ผŒไพ‹ๅฆ‚็ฝ‘็ปœๆ‘„ๅƒๅคดใ€ๆ•ฐๅญ—ๆ‘„ๅƒๆœบใ€่ฝฌ็ ๅ™จใ€ๆจกๆ‹Ÿ่ง†้ข‘่ฝฌๆขๅ™จๅ’Œ้™ๆ€ๅ›พๅƒ็›ธๆœบใ€‚ USB ่ง†้ข‘็ฑป่ง„่Œƒ็š„ๆœ€ๆ–ฐ็‰ˆๆœฌไธบ v1.5ใ€‚USB ๅฎžๆ–ฝ่€…่ฎบๅ›ๅœจ v1.5 ไธญๆ่ฟฐไบ†ๅŸบๆœฌๅ่ฎฎๅ’ŒไธๅŒ็š„ๆœ‰ๆ•ˆ่ฝฝ่ทๆ ผๅผใ€‚ ๆณจๆ„Dragonwing IQ-9075 ๅ’Œ Dragonwing IQ-8275 ไธๆ”ฏๆŒ UVC ็”จไพ‹ใ€‚ ๆต‹่ฏ• UVC ็š„ๅทฅๅ…ทๅ’Œ็จ‹ๅบๅฆ‚ไธ‹๏ผš
  • UVC gadget๏ผˆ่ฎพๅค‡็ซฏ๏ผ‰๏ผš่ฟ™ๆ˜ฏไธ€ไธช็”จไบŽๆต‹่ฏ• f_uvc ๅŠŸ่ƒฝ้ฉฑๅŠจ็จ‹ๅบ็š„็คบไพ‹ๅบ”็”จ็จ‹ๅบใ€‚ๅฎƒๆ‰“ๅผ€็”ฑ uvc_gadget ๅˆ›ๅปบ็š„่ง†้ข‘่Š‚็‚น๏ผŒๅนถไปฅๆŒ‡ๅฎš็š„ๅธง้€Ÿ็އๅ‘้€ MJPEG ๅธงใ€‚ๆญคๅบ”็”จ็จ‹ๅบไธบ DUT ไบคๅ‰็ผ–่ฏ‘ใ€‚ ๆณจๆ„็กฎไฟไธปๆœบไธŠๅทฒๅฎ‰่ฃ…ไบคๅ‰็ผ–่ฏ‘ 64 ไฝ Armยฎ ๆŠ€ๆœฏ็ผ–่ฏ‘ๅ™จๆ‰€้œ€็š„่ฝฏไปถๅŒ…ๅ’Œๅทฅๅ…ทใ€‚
    1. ๅฏไปฅไฝฟ็”จไปฅไธ‹ไปปไธ€้€‰้กนๅปบ็ซ‹ไบคๅ‰็ผ–่ฏ‘็Žฏๅขƒใ€‚
      • ้€‰้กน A๏ผš่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
      • ้€‰้กน B๏ผš่ฆ่ฎพ็ฝฎไบคๅ‰็ผ–่ฏ‘็Žฏๅขƒ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
        1. ไธ‹่ฝฝไบคๅ‰็ผ–่ฏ‘ๅ™จใ€‚
        2. ่งฃๅŽ‹ไบคๅ‰็ผ–่ฏ‘ๅ™จใ€‚
        3. ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคไธบไบคๅ‰็ผ–่ฏ‘่ฎพ็ฝฎ็Žฏๅขƒใ€‚
    2. ่ฆๆž„ๅปบ UVC gadget ๅทฅๅ…ท๏ผŒ่ฏทๆ‰ง่กŒไปฅไธ‹ๆ“ไฝœใ€‚
      1. ๅ…‹้š† uvc-gadget ไป“ๅบ“ใ€‚
      2. ไฟฎๆ”น Makefile ไปฅ่ฟ›่กŒ้™ๆ€ๆž„ๅปบใ€‚
      3. ไธบ arm64 ไบคๅ‰็ผ–่ฏ‘ไปฅ็”Ÿๆˆ uvc-gadget ๅฏๆ‰ง่กŒๆ–‡ไปถใ€‚
  • UVC viewer๏ผˆไธปๆœบ็ซฏ๏ผ‰๏ผš่ฆๆŽฅๆ”ถ UVC ๆ•ฐๆฎ๏ผŒ่ฏทๅœจ่ฎก็ฎ—ๆœบไธŠๆ‰“ๅผ€ไปปไฝ• USB ็ฝ‘็ปœๆ‘„ๅƒๅคดๅบ”็”จ็จ‹ๅบใ€‚
    1. ่ฆ้ชŒ่ฏ๏ผŒ่ฏทๅฐ† UVC gadget ๅบ”็”จ็จ‹ๅบๅ’Œ็คบไพ‹ๅ›พๅƒๆ–‡ไปถๆŽจ้€ๅˆฐ่ฎพๅค‡๏ผŒ่ฏทๆ‰ง่กŒไปฅไธ‹ๆ“ไฝœ๏ผš
      1. ๅœจๅฎฝๆพๆจกๅผไธ‹ๆ‰“ๅผ€ SSH shell ๆˆ–ไฝฟ็”จ ADB shellใ€‚ๆœ‰ๅ…ณๅฆ‚ไฝ•่ฟ่กŒ SSH ็š„ๆ›ดๅคšไฟกๆฏ๏ผŒ่ฏทๅ‚่ง Use SSH ้ƒจๅˆ†ใ€‚
      2. ๆŒ‚่ฝฝๆ–‡ไปถ็ณป็ปŸใ€‚
      3. ไฝฟ็”จ SCP ๆˆ–็ฑปไผผๅทฅๅ…ทไผ ่พ“ๆ–‡ไปถใ€‚ ไพ‹ๅฆ‚๏ผŒscp uvc-gadget root@10.92.175.138:/usr/bin
      4. ๅˆ†้…ๆ‰ง่กŒๆƒ้™ใ€‚
    2. ๆ›ดๆ”นไธบไปปไฝ• UVC ็ป„ๅˆ๏ผˆ90DF ๆˆ– 90CB๏ผ‰ใ€‚
ๅชๆœ‰ๅœจ็”จๆˆท็ฉบ้—ด่ง†้ข‘ๅบ”็”จ็จ‹ๅบๆ‰“ๅผ€ๆ—ถ๏ผŒUSB ๆ‰ไผšๅœจ UVC ็ป„ๅˆไธญๆžšไธพใ€‚่ฆๅ‘็”Ÿ USB ๆžšไธพ๏ผŒ่ฏท้€š่ฟ‡ๆŽงๅˆถๅฐ๏ผˆไธฒ่กŒๆŽงๅˆถๅฐๆˆ– SSH shell ๆˆ–ไฝฟ็”จ ADB shell๏ผ‰ๅฏๅŠจ uvc_gadget ๅบ”็”จ็จ‹ๅบใ€‚
  • YUYV
    1. ๅฐ† image-720.yuv ๅ›พๅƒๆ–‡ไปถๆŽจ้€ๅˆฐ /root ๆˆ– /etcใ€‚
    2. ไฝฟ็”จ uvc-gadget ๅทฅๅ…ท้ชŒ่ฏ image-720.yuv ๅ›พๅƒใ€‚
      • ๅ…ถไธญ X ่กจ็คบ็ป„ๅˆๅˆ‡ๆขๅŽๅˆ›ๅปบ็š„ๆ–ฐ่ง†้ข‘่Š‚็‚น
      • ๅ…ถไธญ -f ๆ˜ฏๆ ผๅผ๏ผŒๅ€ผๅฆ‚ไธ‹๏ผš
        • 0 = V4L2_PIX_FMT_YUYV
        • 1 = V4L2_PIX_FMT_MJPEG
  • MJPEG
    1. ๅฐ† image-720.jpg ๅ›พๅƒๆ–‡ไปถๆŽจ้€ๅˆฐ /root ๆˆ– /etcใ€‚
    2. ไฝฟ็”จ uvc-gadget ๅทฅๅ…ท้ชŒ่ฏ image-720.jpg ๅ›พๅƒใ€‚
      • ๅ…ถไธญ X ่กจ็คบ็ป„ๅˆๅˆ‡ๆขๅŽๅˆ›ๅปบ็š„ๆ–ฐ่ง†้ข‘่Š‚็‚น
      • ๅ…ถไธญ -f ๆ˜ฏ <format>๏ผŒๅ€ผๅฆ‚ไธ‹๏ผš
        • 0 = V4L2_PIX_FMT_YUYV
        • 1 = V4L2_PIX_FMT_MJPEG
  • ๆœ‰ๅ…ณ็”จๆณ•ไฟกๆฏ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
    ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚

UAC ็”จไพ‹

USB ้Ÿณ้ข‘ไฝฟ็”จๅŒๆญฅใ€ไธญๆ–ญๅ’ŒๆŽงๅˆถไผ ่พ“ใ€‚ๆ‰€ๆœ‰้Ÿณ้ข‘ๆ•ฐๆฎ้ƒฝไฝฟ็”จๅŒๆญฅไผ ่พ“่ฟ›่กŒไผ ่พ“ใ€‚ไธญๆ–ญไผ ่พ“็”จไบŽไผ ้€’ๆœ‰ๅ…ณ้Ÿณ้ข‘ๆ—ถ้’Ÿๅฏ็”จๆ€ง็š„ไฟกๆฏ๏ผŒๆŽงๅˆถไผ ่พ“็”จไบŽ่ฎพ็ฝฎ้Ÿณ้‡ใ€่ฏทๆฑ‚้‡‡ๆ ท็އใ€‚ ๆณจๆ„Dragonwing IQ-9075 ๅ’Œ Dragonwing IQ-8275 ไธๆ”ฏๆŒ UAC ็”จไพ‹ใ€‚ ่ฆ้ชŒ่ฏ๏ผŒ่ฏท้€‰ๆ‹ฉๅ…ทๆœ‰ UAC ๅŠŸ่ƒฝ็š„ USB ็ป„ๅˆใ€‚ ่ฆๆ•่Žทๆˆ–ๆ’ญๆ”พ๏ผŒ่ฏทไฝฟ็”จ rootfs ไธญๆไพ›็š„ tinyutils ๅบ”็”จ็จ‹ๅบ๏ผŒๅฆ‚ tinyplay/tinycapใ€‚ๅฝ“ UAC ้ฉฑๅŠจ็จ‹ๅบ็ป‘ๅฎšๆˆๅŠŸๆ—ถ๏ผŒ่ฏฅๅบ”็”จ็จ‹ๅบไผšๆ‰“ๅผ€ /dev/snd/ ไธญๅˆ›ๅปบ็š„ PCM ่Š‚็‚นใ€‚ ไปฅไธ‹ๆ˜ฏไธ€ไบ›็คบไพ‹ๅ‘ฝไปคใ€‚
  • ๅˆ—ๅ‡บ Linux ไธปๆœบไธŠ็š„ๅฃฐๅกใ€‚
  • ๆ’ญๆ”พ้Ÿณ้ข‘ๆ–‡ไปถใ€‚
    • ่ฆๅฐ†้Ÿณ้ข‘ไปŽ่ฎพๅค‡ๆ’ญๆ”พๅˆฐไธปๆœบ๏ผŒ่ฏทๆŽจ้€ๅ…ทๆœ‰ๅŒน้…้Ÿณ้ข‘้…็ฝฎ็š„ file.wav ๆ–‡ไปถใ€‚ไปฅไธ‹ๆ˜ฏ็คบไพ‹้…็ฝฎ็š„็คบไพ‹ใ€‚
      ่พ“ๅ‡บ๏ผš
      ่พ“ๅ‡บ๏ผš
      ่พ“ๅ‡บ๏ผš
      ่พ“ๅ‡บ๏ผš
      ่พ“ๅ‡บ๏ผš
      ่พ“ๅ‡บ๏ผš
      ๆณจๆ„่ฆไฟฎๆ”น้Ÿณ้ข‘้…็ฝฎ๏ผŒ่ฏทๅœจๅฐ† USB ็ป„ๅˆๅปบ็ซ‹ไธบ 90CA ไน‹ๅ‰่ฐƒๆ•ดไธŠ่ฟฐๅ‚ๆ•ฐใ€‚
    • ๅœจ SSH shell ไธŠ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคๆˆ–ไฝฟ็”จ ADB shellใ€‚
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
    • ๅœจ Linux ไธปๆœบไธŠ่ฟ่กŒไปฅไธ‹ๅธฆๆœ‰ arecord ็ญ‰ๅบ”็”จ็จ‹ๅบ็š„ๅ‘ฝไปคๆฅๆ•่Žท้Ÿณ้ข‘ใ€‚
  • ๅฝ•ๅˆถ้Ÿณ้ข‘ๆ–‡ไปถใ€‚
    • ๅœจ Linux ไธปๆœบไธŠ่ฟ่กŒไปฅไธ‹ๅธฆๆœ‰ aplay ็ญ‰ๅบ”็”จ็จ‹ๅบ็š„ๅ‘ฝไปคๆฅๆ’ญๆ”พ้Ÿณ้ข‘ใ€‚
    • ๅœจ่ฎพๅค‡็š„ SSH shell ไธŠ่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคๆˆ–ไฝฟ็”จ ADB shellใ€‚
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚

USB ็”ตๅŠ›ไผ ่พ“ไธญ็š„ๆ•ฐๆฎ่ง’่‰ฒไบคๆข

ๆ•ฐๆฎ่ง’่‰ฒไบคๆข๏ผˆDR_SWAP๏ผ‰ๆ˜ฏไฝฟ็”จ USB Type-C ่ฟžๆŽฅๅ™จๅœจ็ซฏๅฃไผ™ไผดไน‹้—ดไบคๆข DFP๏ผˆไธปๆœบ๏ผ‰ๅ’Œ UFP๏ผˆ่ฎพๅค‡๏ผ‰่ง’่‰ฒใ€‚็”ตๆบ่ง’่‰ฒไบคๆข๏ผˆPR_SWAP๏ผ‰ๅœจ็ซฏๅฃไผ™ไผดไน‹้—ดไบคๆขๆบๅ’ŒๆŽฅๆ”ถ่ง’่‰ฒใ€‚ ๆณจๆ„Dragonwing IQ-9075 ๅ’Œ Dragonwing IQ-8275 ไธๆ”ฏๆŒไฝฟ็”จ Type-C ่ฟžๆŽฅๅ™จ่ฟ›่กŒๆ•ฐๆฎๅ’Œ็”ตๆบ่ง’่‰ฒไบคๆขใ€‚
  • ๆ•ฐๆฎ่ง’่‰ฒ
    • ่ฆๅฐ†ๆ•ฐๆฎ่ง’่‰ฒไปŽไธปๆœบๅˆ‡ๆขๅˆฐ่ฎพๅค‡๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
    • ่ฆๅฐ†ๆ•ฐๆฎ่ง’่‰ฒไปŽ่ฎพๅค‡ๅˆ‡ๆขๅˆฐไธปๆœบ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
  • ็”ตๆบ่ง’่‰ฒ
    • ่ฆๅฐ†็”ตๆบ่ง’่‰ฒไปŽๆŽฅๆ”ถๅˆ‡ๆขๅˆฐๆบ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
    • ่ฆๅฐ†็”ตๆบ่ง’่‰ฒไปŽๆบๅˆ‡ๆขๅˆฐๆŽฅๆ”ถ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปค๏ผš
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
      ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚

้ชŒ่ฏ USB ่ฎพๅค‡

ไธ‹่กจๅˆ—ๅ‡บไบ†้ชŒ่ฏ USB ่ฎพๅค‡ๅ’Œไธปๆœบๆจกๅผ็š„ๅ„็งๆ–นๆณ•ใ€‚ ่กจ๏ผš USB ่ฎพๅค‡ๅ’Œไธปๆœบๆจกๅผ้ชŒ่ฏ

่ฐƒ่ฏ• USB ้—ฎ้ข˜

ๆœฌ่Š‚ไป‹็ปไบ†่Žทๅ–่ฐƒ่ฏ•ๆ—ฅๅฟ—็š„ๅ„็งๆ–นๆณ•ใ€‚่ฐƒ่ฏ•ๆ–นๆณ•ๅŒ…ๆ‹ฌ regdumpsใ€่ฐƒ่ฏ• ftracesใ€configfs ่Š‚็‚นใ€‚่ฟ™ไบ›ๆ—ฅๅฟ—ๅœจ่ฐƒ่ฏ•ไฝŽๅŠŸ่€—ๆจกๅผ่ฟ›ๅ…ฅ-้€€ๅ‡บใ€SMMU ๆ•…้šœใ€ๆ— ๆ—ถ้’Ÿ่ฎฟ้—ฎ็ญ‰้—ฎ้ข˜ๆ—ถ๏ผŒๆไพ›ไบ‹ไปถๅ’ŒๆŽงๅˆถๅ™จ็Šถๆ€่ฏฆๆƒ…็š„ๅฏ่งๆ€งใ€‚ ๆณจๆ„Dragonwing IQ-9075 ๅ’Œ Dragonwing IQ-8275 ไธๆ”ฏๆŒ USB Type-C ๅŠŸ่ƒฝใ€‚

่ทŸ่ธช USB

debugfs ่ทŸ่ธชๆไพ›ไบ†ๅฏน USB ็บฟ่ทฏไธŠๆฏไธชไบ‹ๅŠก็š„ๆ›ดๆทฑๅฑ‚ๆฌก็š„่ง†ๅ›พใ€‚่ฆๆŸฅ็œ‹่ทŸ่ธชๅˆ—่กจ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
ๆณจๆ„็กฎไฟๅทฒๆŒ‚่ฝฝ debugfsใ€‚ๅฆ‚ๆžœๆœชๆŒ‚่ฝฝ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคๆŒ‚่ฝฝ debugfsใ€‚
ไปฅไธ‹ๆ˜ฏๅฏ็”จไบŽ้ชŒ่ฏ xHCI/gadget ๅ †ๆ ˆ/USB Type-C ่ฟžๆŽฅๅ™จ็ณป็ปŸ่ฝฏไปถๆŽฅๅฃ๏ผˆUCSI๏ผ‰ไธญๆ•ฐๆฎไผ ่พ“็š„่ทŸ่ธชใ€‚
่ฆๅˆ—ๅ‡บ xHCI/ไธปๆœบๆŽงๅˆถๅ™จ้ฉฑๅŠจ็จ‹ๅบ๏ผˆHCD๏ผ‰ไธญ็š„่ทŸ่ธช๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
ไปฅไธ‹ๆ˜ฏๅฏ็”จไบŽ้ชŒ่ฏ xHCI/HCD ไธญๆ•ฐๆฎไผ ่พ“็š„่ทŸ่ธชใ€‚
่ฆๅˆ—ๅ‡บ USB ่ง†้ข‘็ฑป๏ผˆUVC๏ผ‰gadget ้ฉฑๅŠจ็จ‹ๅบ็š„ๅฏ็”จไบ‹ไปถ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚
่ฆๅˆ—ๅ‡บ UCSI ้ฉฑๅŠจ็จ‹ๅบไธญ็š„ๅฏ็”จไบ‹ไปถ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
ๅฐ†ๆ˜พ็คบไปฅไธ‹่พ“ๅ‡บใ€‚

USB regdump

USB debugfs ๆไพ›ไปฅไธ‹ไฟกๆฏใ€‚ ๆณจๆ„a600000.usb ๅœฐๅ€ๅ› ่Šฏ็‰‡็ป„่€Œๅผ‚ใ€‚
  • ๆ“ไฝœๆจกๅผใ€‚
    ็คบไพ‹่พ“ๅ‡บ๏ผš
  • ่ฎพๅค‡ๆจกๅผไธ‹ๆ‰€ๆœ‰็ซฏ็‚น็š„็Šถๆ€ๅ’Œไผ ่พ“็Žฏ็ผ“ๅ†ฒๅŒบ๏ผˆTRB๏ผ‰้˜Ÿๅˆ—ใ€‚
  • ๅฝ“ๅ‰้“พ่ทฏ็Šถๆ€ใ€‚
    ็คบไพ‹่พ“ๅ‡บใ€‚
  • ๅˆ—่กจๅค„็†ๅ™จ๏ผˆLSP๏ผ‰่ฝฌๅ‚จใ€‚
    ็คบไพ‹่พ“ๅ‡บ๏ผš
็คบไพ‹่พ“ๅ‡บ๏ผš
regdump ๅ‘ฝไปคๆไพ›ไปฅไธ‹ๅฏ„ๅญ˜ๅ™จ็š„ๅฏ„ๅญ˜ๅ™จ็ฉบ้—ด็š„ๅฝ“ๅ‰็Šถๆ€๏ผš
  • ่ฎพๅค‡ๆจกๅผๅฏ„ๅญ˜ๅ™จ๏ผŒๅฆ‚ DCTLใ€DSTS ๅ’Œ DCFG
  • ๅ…จๅฑ€ๅฏ„ๅญ˜ๅ™จ๏ผŒๅฆ‚ GCTL ๅ’Œ GSTS
็คบไพ‹่พ“ๅ‡บ๏ผš

ไฝฟ็”จ sysfs ๆŸฅ็œ‹ไธปๆœบๆจกๅผ็š„ๆ–‡ไปถ็ณป็ปŸๅฑžๆ€ง

่ฆๆŸฅ็œ‹ๆ€ป็บฟ่ฏฆๆƒ…๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
็คบไพ‹่พ“ๅ‡บ๏ผš
่ฆๅˆ—ๅ‡บๅฝ“ๅ‰็›ฎๅฝ•็š„ๅ†…ๅฎน๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
็คบไพ‹่พ“ๅ‡บ๏ผš
่ฆๆŸฅ็œ‹ๆœ‰ๅ…ณ USB ่ฎพๅค‡็š„่ฏฆ็ป†ไฟกๆฏ๏ผŒ่ฏท่ฟ่กŒไปฅไธ‹ๅ‘ฝไปคใ€‚
็คบไพ‹่พ“ๅ‡บ๏ผš

USB ็คบไพ‹

QCS6490๏ผšhttps://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/qcom/qcs6490-rb3gen2.dts ๆœ‰ๅ…ณ USB ้ฉฑๅŠจ็จ‹ๅบไธญ็š„ RPM ๆ›ดๆ”นๅ’Œๅ…ถไป–็คบไพ‹็š„ไฟกๆฏ๏ผŒ่ฏทๅ‚่ง https://patchwork.kernel.org/project/linux-usb/list/?series=793939&archive=bothใ€‚ ๆœ‰ๅ…ณๅฆ‚ไฝ•ๆ‰ๅนณๅŒ–่ฎพๅค‡ๆ ‘็š„ไฟกๆฏ๏ผŒ่ฏทๅ‚่ง https://lore.kernel.org/all/af60c05b-4a0f-51b8-486a-1fc601602515@quicinc.com/ ๅ’Œ https://lore.kernel.org/all/20231016-dwc3-refactor-v1-0-ab4a84165470@quicinc.com/ใ€‚ \