PCIE转USB 3.0芯片

μPD720202K8-701-BAA-A芯片,一个PCIE口转2个USB 3.0,主要用于USB口的扩展;

硬件电路

电路图

电路设计注意事项

RXD需要改为0欧电阻,不要ESD器件,OCI1B需要拉高;

驱动代码

request_firmware内核配置,固件需要拷贝到文件系统的/lib/firmware/;

Device Drivers  --->Generic Driver Options  ---> [*] Select only drivers that don't need compile-time external firmware                                             [*] Prevent firmware from being built                                                                              {*} Userspace firmware loading support                                                                             [*]   Include in-kernel firmware blobs in kernel binary                                                            ()    External firmware blobs to build into the kernel binary                                                      [*] Fallback user-helper invocation for firmware loading

三个驱动模块:insmod xhci-hcd.ko,xhci-plat-hcd.ko ,xhci-pci.ko;

驱动移植:需要移植xhci-fwdload.c驱动文件;

    leds {compatible = "gpio-leds";pinctrl-names = "default";pinctrl-0 = <&pinctrl_gpio_led>;pcie_pwon {label = "PCIE_PWON";gpios = <&gpio1 15 GPIO_ACTIVE_HIGH>;default-state = "off";};};&iomuxc {pinctrl-names = "default";pinctrl_pcie0: pcie0grp {fsl,pins = <MX8MM_IOMUXC_SD2_DATA1_GPIO2_IO16   0xc1MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12    0x61MX8MM_IOMUXC_SD2_RESET_B_GPIO2_IO19 0x41>;};&pcie0{pinctrl-names = "default";pinctrl-0 = <&pinctrl_pcie0>;reset-gpio = <&gpio2 19 GPIO_ACTIVE_LOW>;clkreq-gpio = <&gpio2 12 GPIO_ACTIVE_LOW>;power-on-gpio = <&gpio2 16 GPIO_ACTIVE_LOW>;ext_osc = <0>;status = "okay";
};

启动打印

关键打印信息

[    2.317283] imx6q-pcie 33800000.pcie: 33800000.pcie supply epdev_on not found, using dummy regulator
[    2.326803] OF: PCI: host bridge /pcie@0x33800000 ranges:
[    2.332227] OF: PCI:   No bus range found for /pcie@0x33800000, using [bus 00-ff]
[    2.339720] OF: PCI:    IO 0x1ff80000..0x1ff8ffff -> 0x00000000
[    2.345651] OF: PCI:   MEM 0x18000000..0x1fefffff -> 0x18000000
[    2.352028] imx6q-pcie 33800000.pcie: Initialize PHY with EXT REfCLK!.
[    2.358871] imx6q-pcie 33800000.pcie: PHY Initialization End!.
[    2.365030] imx6q-pcie 33800000.pcie: pcie phy pll is locked.
[    2.423573] imx6q-pcie 33800000.pcie: Link up, Gen2
[    2.429246] imx6q-pcie 33800000.pcie: PCI host bridge to bus 0000:00
[    2.435627] pci_bus 0000:00: root bus resource [bus 00-ff]
[    2.441124] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    2.447311] pci_bus 0000:00: root bus resource [mem 0x18000000-0x1fefffff]
[    2.466200] pci 0000:00:00.0: BAR 0: assigned [mem 0x18000000-0x180fffff 64bit]
[    2.473532] pci 0000:00:00.0: BAR 14: assigned [mem 0x18100000-0x181fffff]
[    2.480425] pci 0000:00:00.0: BAR 6: assigned [mem 0x18200000-0x1820ffff pref]
[    2.487668] pci 0000:01:00.0: BAR 0: assigned [mem 0x18100000-0x18101fff 64bit]
[    2.495033] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    2.500274] pci 0000:00:00.0:   bridge window [mem 0x18100000-0x181fffff]
[    2.507499] pcieport 0000:00:00.0: Signaling PME with IRQ 230
[    2.513361] pcieport 0000:00:00.0: AER enabled with IRQ 230
[    2.519025] pci 0000:01:00.0: enabling device (0000 -> 0002)
[    2.525182] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    2.530435] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 3

usb信息

[  169.878429] xhci_hcd 0000:01:00.0: xHCI Host Controller
[  169.883949] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 3
[  170.006893] Can't support > 32 bit dma.
[  170.050672] xhci_hcd 0000:01:00.0: hcc params 0x014051cf hci version 0x100 quirks 0x0000000000000090
[  170.067938] hub 3-0:1.0: USB hub found
[  170.072939] hub 3-0:1.0: 2 ports detected
[  170.079747] xhci_hcd 0000:01:00.0: xHCI Host Controller
[  170.085315] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 4
[  170.092922] xhci_hcd 0000:01:00.0: Host supports USB 3.0  SuperSpeed
[  170.099627] usb usb4: We don't know the algorithms for LPM for this host, disabling LPM.
[  170.110073] hub 4-0:1.0: USB hub found
[  170.114140] hub 4-0:1.0: 2 ports detected

插入3.0 U盘打印信息

[  142.761704] usb 4-1: new SuperSpeed USB device number 2 using xhci_hcd
[  142.821223] usb-storage 4-1:1.0: USB Mass Storage device detected
[  142.840700] scsi host0: usb-storage 4-1:1.0
[  143.877959] scsi 0:0:0:0: Direct-Access     Generic  STORAGE DEVICE   1532 PQ: 0 ANSI: 6
[  144.216203] sd 0:0:0:0: [sda] 249737216 512-byte logical blocks: (128 GB/119 GiB)
[  144.225368] sd 0:0:0:0: [sda] Write Protect is off
[  144.231410] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[  144.256347]  sda: sda1
[  144.266457] sd 0:0:0:0: [sda] Attached SCSI removable disk

问题调试

USB2.0能识别,USB3.0提示bad cable问题

[  112.208013] usb usb1-port2: Cannot enable. Maybe the USB cable is bad?
[  113.180033] usb usb1-port2: Cannot enable. Maybe the USB cable is bad?
[  113.186621] usb usb1-port2: attempt power cycle
[  114.472025] usb usb1-port2: Cannot enable. Maybe the USB cable is bad?
[  115.444016] usb usb1-port2: Cannot enable. Maybe the USB cable is bad?
[  115.450602] usb usb1-port2: unable to enumerate USB device

去掉ESD器件解决上面问题;

去掉flash后固件存放位置和启动失败问题

[    1.946229] pci 0000:00:00.0:   bridge window [mem 0x18100000-0x181fffff]
[    1.956527] pcieport 0000:00:00.0: Signaling PME with IRQ 230
[    1.962369] pcieport 0000:00:00.0: AER enabled with IRQ 230
[    1.968016] pci 0000:01:00.0: enabling device (0000 -> 0002)
[    1.974075] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    1.979322] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 3
[    1.986769] pci_bus 0000:01: Falling back to user helper
[   62.538056] pci_bus 0000:01: Falling back to user helper

驱动做成KO模式加载,固件存放对应目录位置解决上面问题;

另外一个USB口不能使用问题,OCI1B需要拉高;

Linux驱动PCIE转USB 3.0调试经验相关推荐

  1. 10 怎么写USB驱动,Cadence USB 2.0 Controller和PHY IP驱动移植

    怎么写USB驱动,Cadence USB 2.0 Controller和PHY IP驱动移植 作者 将狼才鲸 日期 2022-03-26 本子文档所属的上级文档(Gitee仓库): 才鲸 / 嵌入式知 ...

  2. linux驱动PCIE开发

    Linux内核用主设备号来定位对应的设备驱动程序,而次设备号则由驱动程序使用,用来标识它所管理的若干同类设备: 字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节 ...

  3. linux驱动 pcie 框架_Linux PCI 设备驱动基本框架(二)

    针对相应设备定义描述该PCI设备的数据结构: structdevice_private {/*注册字符驱动和发现PCI设备的时候使用*/ struct pci_dev *my_pdev;// stru ...

  4. ez-usb fx3 linux,Mouser带来最新USB 3.0技术:赛普拉斯EZ-USB FX3和恩智浦USB 3.0超高速转接驱动器...

    2012年7月2日– 半导体与电子元器件业顶尖设计工程资源与全球分销商Mouser Electronics宣布对赛普拉斯半导体的EZ-USB® FX3超高速USB控制器和恩智浦半导体的USB 3.0转 ...

  5. 从零开始之驱动发开、linux驱动(六十七、内核调试篇--printk使用)

    printk的使用我们在内核,驱动调试的时候使用的非常多 比如前面在调试usb驱动的时候 #include <linux/init.h> #include <linux/usb/in ...

  6. Linux驱动开发之USB驱动深入学习(三)——USB2.0ECHI驱动注册

    一.前言 本篇博客仅对ECHI主机控制器驱动的注册部分进行简要叙述,后面再对一些重要的接口进行分析讲解. 二.USB 1.概述 USB(Universal Serial Bus)即"通用外部 ...

  7. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】

    Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...

  8. fast无线网卡linux驱动,fast FW150US USB无线网卡Linux驱动安装

    由于笔记本没有自带无线网卡,所以买了一块fast FW150US USB无线网卡.该网卡只自带了window下的驱动,经过一番折腾,终于安装好了Linux下的驱动,在此记录以便以后遇到同样问题能够快速 ...

  9. linux驱动编写(usb host驱动入门)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] usb协议是一个复杂的协议,目前涉及到的版本就有usb1.0, usb2.0, usb3.0.大 ...

最新文章

  1. VI连接esx主机时报错“client.xml”错误
  2. “365算法每日学计划”:05打卡-图解冒泡排序(多解法)
  3. del rd命令行下删除文件不需要确认
  4. android对话框字体大小,Android Dialog 设置字体大小的具体方法
  5. html ace编辑器,Tiny-editor
  6. 深入掌握JMS(七):DeliveryMode例子
  7. cxgrid中纵横单元格合并_逆向查询合并单元格中的数据,这两种方法你值得拥有...
  8. STM32工作笔记0070---图片显示实验
  9. 通用Shell脚本,可以优雅的启动/关闭/重启/JAVA服务
  10. 基于BERT进行商品标题实体识别,很详细~
  11. 网页精美动效/动画制作 按钮鼠标悬浮动效基础 01《炫彩网页 iVX 无代码动效/动画制作》
  12. java 分词获取词性_Ansj中文分词Java开发词性分类
  13. Websphere应用部署发布
  14. day11_rabbitmq和redis
  15. itk读取.img格式的医学图像
  16. python中的ascii码是啥_python ascii码到u
  17. Vue3 _ 11. Vue 生命周期 生命周期狗子
  18. Java虚拟机学习笔记(一)--运行时数据区域
  19. 加密网络空间安全厂商“观成科技”获数千万A轮融资,方广资本领投
  20. 强烈推荐免费在线图片转文字的工具

热门文章

  1. java clover_clover记录数据库的生成方法
  2. 项目名称:基于Docker Swarm的高可用Web集群
  3. 易观方舟Argo+CRM | 让企业数据发挥更大价值
  4. Ubuntu下文件解压缩
  5. 2023佳木斯大学计算机考研信息汇总
  6. 卷积神经网络实践-猫狗分类
  7. 易语言关于SEH异常处理
  8. 枪神纪显示正在启动服务器,5月14日版本更新公告 服务器10:00开启
  9. 语音转文字如何转?语音转文字软件推荐
  10. 冲压模具行业解决方案