SRIO 接口 u-boot.无法读取 IO 内存



我尝试在我的 p2020 自定义板上运行 srio 接口。我将带有 srio 固件的 FPGA 板插入 SRIO1,并将 SRIO 配置为主机。

在uboot_config

#define CONFIG_SRIO1 /* SRIO port 1 */
#define CONFIG_SYS_SRIO1_MEM_VIRT 0xC0000000
#define CONFIG_SYS_SRIO1_MEM_BUS 0xC0000000
#define CONFIG_SYS_SRIO1_MEM_PHYS CONFIG_SYS_SRIO1_MEM_BUS
#define CONFIG_SYS_SRIO1_MEM_SIZE 0x10000000 /* 256M */

在 TLB.C

SET_TLB_ENTRY(1, CONFIG_SYS_SRIO1_MEM_VIRT, CONFIG_SYS_SRIO1_MEM_PHYS,
MAS3_SX | MAS3_SW | MAS3_SR,
MAS2_I | MAS2_G,
0, 3, BOOKE_PAGESZ_256M, 1),

尝试从 u-boot 读取 srio 内存

=> md.l 0xc0000000

c0000000:

p2020 卡住了。

我可以在FPGA板上观察读取请求和读取响应。 为什么我无法读取 srio 内存?

我在start.S中为每个中断向量设置了一个gpio"标记"。当我尝试读取 Srio 内存时,uboot 是堆叠的。不会发生中断。我无法确定错误的原因。

我试图从linux读取SRIO1内存

# devmem 0xc0000000 32  
Disabling lock debugging due to kernel taint
Machine check in kernel mode.
Caused by (from MCSR=10008): Bus - Read Data Bus Error
Oops: Machine check, sig: 7 [#1]
SMP NR_CPUS=2 P2020 DS
Modules linked in:
CPU: 1 PID: 1578 Comm: devmem Tainted: G   M            4.9.34 #28
task: eb161a80 task.stack: ef0ca000
NIP: 1000b5fc LR: 1000b510 CTR: c02e1108
MSR: 0202d000 <VEC,CE,EE,PR,ME>  CR: 40000242  XER: 20000000
DEAR: b7e79000 ESR: 00000000 
GPR00: 40000242 bfab4250 b7e81470 b7e79000 1000b510 40000242 b7e79000 b7d88444 
GPR08: 0202d000 00000000 b7e79000 bfab4250 ef0ca000 100c8126 00000000 00000000 
GPR16: 00000000 00000000 100a3560 100c0000 100c3fc5 00000000 100c0000 00000003 
GPR24: 100c225c 100c0000 00000000 00001000 bfab4554 00000000 b7e79000 00000020 
NIP [1000b5fc] 0x1000b5fc
LR [1000b510] 0x1000b510
Oops: Machine check, sig: 7 [#1]
arch/powerpc/kernel/traps.c +731

机器检查异常通常意味着硬件问题。我将 SRIO1 端口连接到 p2020 的 SRIO2(SRIO2 地址从 0xd0000000 开始(

# devmem 0xc0000000
0x00710002
# devmem 0xd0000000
0x00710002

这是工作!我认为,FPGA板的问题。

最新更新