hisi3559平台PCIE转USB调试(转)
hisi3559平台PCIE转USB调试(转)
版权声明:转载请注明出处。 https://blog.csdn.net/zhenglie110/article/details/80564906
第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
#define __io(a) __typesafe_io(PCI_IO_VIRT_BASE + ((a) & IO_SPACE_LIMIT))
#endif
要包含hisi3559的io配置
还必须要修改以下一个地方:
osdrv/opensource/linux/linux-3.18.y/arch/arm/mach-hisi/Kconfig
增加:
select NEED_MACH_IO_H if PCI
- 1
这样PCIE的卡就可以识别到了,
在板子上通过命令查看:
# lspci
00:00.0 Class 0604: 19e5:3519
01:00.0 Class 0c03: 9710:9990
01:00.1 Class 0c03: 9710:9990
01:00.2 Class 0c03: 9710:9990
01:00.3 Class 0c03: 9710:9990
01:00.4 Class 0c03: 9710:9990
01:00.5 Class 0c03: 9710:9990
01:00.6 Class 0c03: 9710:9990
01:00.7 Class 0c03: 9710:9990
可以看到class ID了,0C03的类型表示:USB (Universal Serial Bus)
第3章 USB控制器驱动支持
MCS9990 是一颗PCIE转USB2.0的芯片,被识别成功后,会被当做一个USB host controller
那么需要系统有usb host的驱动。
需要增加的驱动如下:
从Device Driver 进入
把USB support 选* 然后进入
如上图所示,把标示红线的选中
EHCI 的选项是USB 2.0的host驱动支持。
EHCI: Enhanced Host Controller Interface (用于USB2.0高速设备的“增强主机控制接口”) 编译完成后,会有以下的驱动文件:
usbcore.ko
ehci-hcd.ko
ehci-pci.ko
ehci-platform.ko
安装顺序如下:
insmod usbcore.ko
insmod ehci-hcd.ko
insmod ehci-pci.ko
insmod ehci-platform.ko
通过以下命令可以查看当前的usb设备
#lsusb
Bus 003 Device 002: ID 0b95:772b
Bus 001 Device 001: ID 1d6b:0002
Bus 002 Device 001: ID 1d6b:0002
Bus 003 Device 001: ID 1d6b:0002
Bus 004 Device 001: ID 1d6b:0002
Bus 005 Device 001: ID 1d6b:0002
第4章 USB网卡的支持
Usb网卡AX88772的支持
如上图所示
选择device driver 进入
选中Network device support 为*
进入
选中 USB Network Adapters 为M
进入
选中划红线的3项,
海思平台的代码中默认支持ASIX AX88XXX系统的USB网卡
编译后会生成以下的几个驱动文件:
mii.ko
usbnet.ko
asix.ko
ax88179_178a.ko
执行 安装程序:
insmod mii.ko
insmod usbnet.ko
insmod asix.ko
insmod ax88179_178a.ko
这个时候用ifconfig命令应该可以看到网卡了
剩下就是通过ifconfig来配置网络了。
配置网络
手动配置网络
配置ip地址和子网掩码
ifconfig eth0 192.168.1.101 netmask 255.255.255.0 up
设置缺省网关
route add default gw 192.168.1.1
网络自动启动设置
1.在usr/share/udhcpc/下增加一个default.script
这个文件在
osdrv/opensource/busybox/busybox-1.20.2/examples/udhcp/simple.script
重命名放入到usr/share/udhcpc/下即可
2.在bootapp自动启动时,增加以下命令:
ifconfig eth0 up
udhcpc
开机启动之后会自动获取IP和更新DNS。
在执行自动挂载USB网卡的时候:
出现了以下错误:
/usr/share/udhcpc/default.script: line 32: syntax error: you disabled math support for $((arith)) syntax
解决办法:
osdrv/opensource/busybox/minibusybox-1.20.2/config_v600_softfp_neon 增加以下两项支持即可:
CONFIG_SH_MATH_SUPPORT=y
CONFIG_SH_MATH_SUPPORT_64=y
关于热插拔的问题:
hisi3559的ARM平台的PCIE目前不支持热插拔。
USB网卡热插拔之后,能够识别到网卡,但是需要重新配网。
需要重新执行:
ifconfig eth0 up
udhcpc
第5章 USB U盘的支持:
依次进入
Device Drivers —>
USB support —>
选中上图的 Mass Storage Support,
编译之后会生成:
usb-storage.ko
在前面已经安装了usb host驱动的前提下,
只要insmod usb-storage.ko
然后插入U盘就可以识别到了
查看 #ls /dev
有 sda
Sda1
两个文件,
通过mount挂载起来就可以看到U盘的内容了。
第6章 USB 鼠标,键盘的支持:
由于USB 鼠标,键盘是低速设备,因此需要添加
OHCI: Open Host Controller Interface (开放主机控制接口,USB1.0/1.1)的支持。
依次进入
Device Drivers —>
USB support —>
选择上图中的两项,
编译后会生成
ohci-hcd.ko
ohci-pci.ko
首先 需要确保HID input layer支持和input core 支持
Hisi3559默认都是y,不需要用模块的方式来加载了。
增加usb hid鼠标键盘的支持:
依次进入
Device Drivers —>
HID support —>
USB HID support —>
如上图所示,
选中3项,
进入到USB HID Boot Protocol drivers —>
选择:
所有的两项。
加载驱动:
insmod usbcore.ko
insmod ohci-hcd.ko
insmod ohci-pci.ko
insmod usbhid.ko
insmod usbkbd.ko
insmod usbmouse.ko
cat /dev/input/event0 | hexdump
移动鼠标,然后终端就打印出你的鼠标坐标了。
hisi3559平台PCIE转USB调试(转)相关推荐
- hisi3559平台PCIE转USB调试
第1章 PCIE驱动框架介绍 pci驱动分为总线驱动和设备驱动.总线驱动是linux内核完成,主要完成设备的枚举,常规64个字节配置空间的访问.设备驱动是针对PCI接口具体设备需要实现的功能 hisi ...
- Nvidia Xavier Nx平台PCIE速率调整调试记录
1. 前言 如何增加最大速度的pcie上的jetson xavier? 因为被限制在2.5 GT/s Xavier似乎可以增加到8 GT/s. 使用Jetpack 4.5 0004:00:00.0 P ...
- Linux驱动PCIE转USB 3.0调试经验
PCIE转USB 3.0芯片 μPD720202K8-701-BAA-A芯片,一个PCIE口转2个USB 3.0,主要用于USB口的扩展: 硬件电路 电路图 电路设计注意事项 RXD需要改为0欧电阻, ...
- PCIe实践之路:PCIe转USB Host驱动
PCIe实践之路:PCIe转USB Host驱动 本次调试PCIe RC驱动,通过PCIe转USB芯片扩展出的USB口接入U盘.RC平台为ARM-A7,运行裸机环境,EP为一款PCIe转USB3.0芯 ...
- 飞腾S2500平台PCIe SWITCH下热插拔验证
飞腾S2500平台PCIe SWITCH下热插拔验证 插拔前主板PCIe设备情况 对PCIe外设进行热插拔 对PCIe外设进行重新枚举,并分配资源 对新的PCIe外设进行功能测试 插拔前主板PCIe设 ...
- usb计算机连接无法连接电脑,如何用数据线连接计算机总是提示无法建立连接,并且USB调试已打开. -...
您好,建议您更换数据线并再次进行测试. 感谢您的支持,祝您生活愉快! 尊敬的三星用户,您好!建议您按照以下步骤操作: 1. 在待机状态下,单击[取消]-[应用程序]-[开发]-[USB调试],单击复选 ...
- 华为C8650如何实现USB调试
话说折腾这个USB调试有段时间了.怎么整都不行.这里是指Mac OS平台.windows平台可以略过不看. 那么这个Mac OS平台为什么不行呢?主要是因为华为的USB模式搞了个光盘加USB双模式,也 ...
- 华为C8650如何实现USB调试 另:网络调试
[原帖:http://blog.fm618.net/2011/12/05/%E5%8D%8E%E4%B8%BAc8650%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0usb% ...
- 默认开启USB调试模式,不提示确认框
device\sprd\sharkle\common\DeviceCommon.mk persist.sys.usb.config=adb//默认打开usb调试 SystemUI\src\com\an ...
最新文章
- linux把目录下的文件设置属性为rx,LINUX的文件属性与目录配置
- 特征选择--文本分类: 信息增益
- JS高效关键字搜索---转
- 年轻——塞缪尔.厄尔曼
- java listview控件_ListView普通列表控件的使用
- Filter的基本配置
- Hadoop Trash回收站使用指南
- EF学习笔记-2 EF之支持复杂类型的实现
- 英寸和厘米的交互python_Python新手尝试编写厘米到英寸的代码,反之亦然
- Java | Java模拟实现扑克牌洗牌、发牌过程
- windows 7 数据执行保护 开启关闭方法
- 【苹果家庭群发推】Metal performance shader软件安装框架
- 通过云打码实现验证码识别
- 蓝桥ROS机器人之现代C++学习笔记7.4 条件变量
- 数据库课程设计------书店管理系统
- 微信小程序之网易云音乐(五)- 排行详情页、歌单详情页、播放器组件开发
- 炉石传说酒馆战棋一键拔线(windows)
- RabbitMQ之交换机
- 让 图片 摇摆起来
- PHP API接口鉴权
热门文章
- Angular12报错:Cannot read property _rawValidators of null
- 2ubuntu系统通过有线网络共享无线网络
- 独立网站和互联网服务
- 计算机辅助建筑设计英文全称是,计算机辅助建筑消防安全设计,computer-aided building fire safety design,音标,读音,翻译,英文例句,英语词典...
- 大一上学期第十六周学习生活总结
- 计算机软件著作权取得方式,著作权取得主要有两种方式是什么
- 托大的鬼雄——项羽不肯过江东还是根本没机会过江东?(转)
- OpenStack Summit Vancouver 会议纪要
- 社交类APP原型模板分享——QQ
- 7月19日第壹简报,星期二,农历六月廿一