移远官网

请教下为什么rm500 pcie 不识别

lspci -v
00:00.0 Bridge: Xilinx Corporation Device d011
	Flags: fast devsel, IRQ 255
	Bus: primary=00, secondary=01, subordinate=0c, sec-latency=0
	I/O behind bridge: 00000000-00000fff [size=4K]
	Memory behind bridge: None
	Prefetchable memory behind bridge: None
	Capabilities: [40] Power Management version 3
	Capabilities: [60] Express Root Port (Slot-), MSI 00
	Capabilities: [100] Device Serial Number 00-00-00-00-00-00-00-00
	Capabilities: [10c] Virtual Channel
	Capabilities: [128] Vendor Specific Information: ID=1234 Rev=1 Len=018 <?>

Host用的Avnet的FPGA,
M.2 接口插入RM500Q启动到内核后lspci认不出设备。
同样的方法Sierra社的卡可以认出来。
驱动用的这个
Quectel_Linux_PCIE_MHI_Driver_V1.3.1
如果在Linux使用的话还需要什么别的软件进行控制么?

同RM500Q一张卡放在评价版上USB连接可以认出来/也能通信。

追記:
这个和向PCIE提供的信号相关么?
这边用的是LVDS 而没有使用HCSL。

首先移远的模组,是特供的PCIe版本吗,那种刷过efuse的?如果不是,是通过AT指令切换的吗?

AT+QCFG="data_interface",1,0   // 只能是1,0
AT+QCFG="pcie/mode",0    //EP mode

还是识别不到,检查下硬件时序吧。

感谢回复。

AT+QCFG=“data_interface”,1,0 // 只能是1,0
AT+QCFG=“pcie/mode”,0 //EP mode

具体的意思是在USB+评价板上进行以上的命令设定之后
再从评价板上取出,直接插入上述的FPGAm.2里尝试进行识别
这样的步骤正确么?
因为现在在内核认不出来,所以也无法用AT设定上面的模式。。

还是识别不到,检查下硬件时序吧。
请问这个具体需要做的是
这个根据下面的资料的34页左右,在Uboot开始时设定各种Register来保证时许对么?
https://www.quectel.com/wp-content/uploads/pdfupload/Quectel_RM500Q-GL_硬件设计手册_V1.0.pdf

谢谢

at指令设置后,重启生效。
这个和PCIE_MHI驱动应该没有关系了。即使没有pcie_mhi,lspci 应该也能识别到。

我建议是RM500Q和PCIe主控同时开机。
PCIe不像USB可以随便支持热插拔。


image

好的谢谢回复。
按您的说法试试看。

您好,
抱歉回复晚了。
这边按照您说的方法尝试了下,

在评价板上USB连接Linux
AT COM里面设定以下的模式

AT+QCFG=“data_interface”,1,0 // 只能是1,0
AT+QCFG=“pcie/mode”,0 //

ATI
Quectel
RM500Q-AE
Revision: RM500QAEAAR11A02M4G
OK
AT+QCFG=“data_interface”,1,0
OK
AT+QCFG=“pcie/mode”,0
OK
#Confirm
at+qcfg=“data_interface”
+QCFG: “data_interface”,1,0
#Confirm
OK
at+cpin?
+CPIN: READY
#Confirm
OK
at+cops?
+COPS: 0,0,“440 19 ******** “,11
#Confirm
OK
at+cgdcont?
+CGDCONT: 1,“IP”,”******”,“0.0.0.0”,0,0,0,0,"",0
+CGDCONT: 2,“IPV4V6”,“ims”,“0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0”,0,0,0,0,"",0
+CGDCONT: 3,“IPV4V6”,“sos”,“0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0”,0,0,0,1,"",0
OK

之后依次关闭评价板的两个开关,

NORMAL POWER DOWN
POWERED DOWN

再将5G模块插入FPGA的M.2

之后启动FPGA,
到Kernel还是看不到PCIE

root@uz7ev-evcc-base-2020-2:[pcie_mhi]# insmod pcie_mhi.ko
[ 81.634827] mhi_init Quectel_Linux_PCIE_MHI_Driver_V1.3.1
root@uz7ev-evcc-base-2020-2:[pcie_mhi]# echo 1 > /sys/bus/pci/rescan
[ 90.008277] pci 0000:00:00.0: PCI bridge to [bus 01-0c]

这个估计只能看启动时候的时序了对么?
谢谢。

这两个指令是模块重启才生效的。

还是时序不满足要求。

有条件可以量下pcie_wakeup和pcie_reset .
是否有信号

这个要重新启动模块,然后再执行 echo 1 > /sys/bus/pci/rescan

这个可以试试
参考
SDX55 PCIE BringUP手册 V1.1.pdf
移远的EVB应该不满足硬件要求。

感谢回复.
这边尝试了下在UbootResetPCIE
然后看0xFD480238寄存器的数值

PCIE_CLKREQ_N gpio set 95
PCIE_PEWAKE_N gpio set 94
PCIE_PERST_N gpio set 31

Quectel
ZynqMP> mw 0xFD1A0100 0x28002 ;sleep 0.6 ;gpio set 95 ;gpio set 94;sleep 1;gpio clear 95 ; gpio clear 94 ; sleep 1;gpio set 31 ;gpio set 94; sleep 1 ; mw 0xFD1A0100 0x08002 ; sleep 0.6 ;md.b 0xFD480238 1;
gpio: pin 95 (gpio 95) value is 1
Warning: value of pin is still 0
gpio: pin 94 (gpio 94) value is 1
Warning: value of pin is still 0
gpio: pin 95 (gpio 95) value is 0
gpio: pin 94 (gpio 94) value is 0
gpio: pin 31 (gpio 31) value is 1
gpio: pin 94 (gpio 94) value is 1
Warning: value of pin is still 0
fd480238: 02 #NOTLINKUP

#Sierra
ZynqMP> mw 0xFD1A0100 0x28002 ;sleep 0.6 ;gpio set 95 ;gpio set 94;sleep 1;gpio clear 95 ; gpio clear 94 ; sleep 1;gpio set 31 ;gpio set 94; sleep 1 ; mw 0xFD1A0100 0x08002 ; sleep 0.6 ;md.b 0xFD480238 1;
gpio: pin 95 (gpio 95) value is 1
Warning: value of pin is still 0
gpio: pin 94 (gpio 94) value is 1
Warning: value of pin is still 0
gpio: pin 95 (gpio 95) value is 0
gpio: pin 94 (gpio 94) value is 0
gpio: pin 31 (gpio 31) value is 1
gpio: pin 94 (gpio 94) value is 1
Warning: value of pin is still 0
fd480238: 03 #LINKUP

得到了上面的不同结果.
请问下是还有什么地方设置不足么?
谢谢.