hisi3559平台PCIE转USB调试

本文档详细介绍了在Hisi3559平台上进行PCIe转USB驱动的配置和调试过程,包括PCIe驱动框架、内核配置、硬件复用、IO空间设置、USB控制器驱动支持、USB网卡和U盘识别以及鼠标键盘的支持。在配置过程中,遇到了如IO空间不足和热插拔不支持等问题,并提供了相应的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第1章 PCIE驱动框架介绍

pci驱动分为总线驱动和设备驱动。总线驱动是linux内核完成,主要完成设备的枚举,常规64个字节配置空间的访问。设备驱动是针对PCI接口具体设备需要实现的功能

hisi3559的ARM平台的PCIE目前不支持热插拔。

第2章 PCIE驱动增加

配置内核PCIE总线的支持

在内核的目录下:
osdrv/opensource/linux/linux-3.18.y$
执行make ARCH=arm CROSS_COMPILE=arm-hisiv600-linux- menuconfig
这里写图片描述
点击Bus support 进去
这里写图片描述
以上的选项也是顺序出现的,依次选中即可。
目前到这边,继续往下看。
另外还有一个
PCI host controller drivers —>
没有选择,目前我的PCIE的芯片是免驱的,驱动是写在一个EEPROM中,需要提前烧录好

Hisilicon PCI Express support (NEW) —>
进去之后还有一些参数的配置,
这里写图片描述
海思的文档中没有介绍,说让看
标准协议《PCI Express Base Specification Revision 2.1 》中 7.5 章节
先按照默认的,不行再修改。目前我们使用的是1G的DDR内存,海思默认的也是1G的内存。
RC(PCI Express root complex) 在RC模式时,使用PCIE类型1配置头;
EP(endpoint device)工作方式,在EP模式时,使用PCIE类型0配置头。

编译系统中有hotplug的选项,x86的系统才会支持hotplug,hisi3559 是ARM平台的,默认就没这个选项。

代码路径在:

drivers/pci/
与hisi平台相关的代码为:
drivers/pci/hipcie

Hisi3559硬件复用

3559平台的USB3.0和PCIE是复用管脚的。
通过外部设置的电平状态去确定。
COMBO_PHY_MODE
COMBO_PHY_MODE_1,
需要设置为00
即VO_DATA7 VO_DATA9 需要接下拉电阻。

软件查看复用状态:
SYSSTAT寄存器查看状态:0x008c 基址是 0x1202_0000
读取出来的值是正确的,设置的为PCIE状态。

PCIe 参考时钟管脚被设置成输出模式,需要将芯片 VO_DATA5 下拉

PCIE 的PCIE_CLK_REQ_N 需要设置管脚复用
复用寄存器为:0x120400A8
在pcie_hi3559.c中加入了管脚复用的配置,无需增加代码

io 空间不够的问题

遇到问题一:
提示
request_pcie_res->197
request io resource failed,io->start=0x28400000,io->end=0x283fffff
看起来是io 空间不够导致的。
默认的BSP包中没有配置IO_SPACE_LIMIT
在以下文件增加:
osdrv/opensource/linux/linux-3.18.y/arch/arm/include/mach/hi3559_io.h

#ifdef CONFIG_PCI
#define IO_SPACE_LIMIT  0xffffffff
#defin
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值