This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TDA4VM:有关在 tda4上使用 PCIe 的问题

Guru**** 1949050 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/967355/ccs-tda4vm-questions-about-using-pcie-on-tda4

器件型号:TDA4VM

工具/软件:Code Composer Studio

您好!

 我正在使用 TDA4 定制板。但当内核启动时、发现内核不会打印与 PCIe 相关的消息

正在启动内核...

[0.000000]在物理 CPU 上引导 Linux 0x000000 [0x411fd080]
[0.0000] Linux 版本5.4.74-g9574bba32a (root@CSP-test2)(gcc 版本9.2.1 20191025 (a profile0的 GNU 工具链
[0.000000)机器模型:德州仪器(TI) K3 J721E soc '0.000x 选项(0x000000
)[0x000000) M24000]
启动控制台[ns16550a0]启用
[0.000000]保留的存储器:在0x00000000a0000000处创建了 DMA 存储器池、大小为1 MIB
[0.000000]、共:保留的存储器:初始化节点 r5f-dma-memory@a0000000、兼容 ID 共享 dma-pool
[0.000000]保留的存储器:在0x00000000a0100000处创建了 DMA 存储器池、大小为15 mib
[保留0.000000] 已初始化节点 r5f-memory@a0100000、兼容 id shareda-dma-pool
[0.000000]保留的内存:已创建 DMA 内存池、大小为0x0000000000a1000000、大小为1 mib
[0.000000] of:reserved mem:initialized node vision_apps-r5f-dma-memory@a1000000、compatible id sharedma-dma-pool
[0.000000](保留大小为0x000000
)内存:保留大小为0x0000000m、大小为0x000000000m 已初始化节点 vision_apps-r5f-memory@a1100000、兼容 id shareda-dma-pool
[0.000000]保留内存:已创建 DMA 内存池、大小为0x0000000000a3000000、大小为1 mib
[0.000000](共模块大小:保留 mem):已初始化节点 r5f-dma-ma-memory@a3000000、兼容 id sharedma-pool
[0.0000001](
共模大小为0x000000) 已初始化节点 vision_apps-r5f-memory@a3100000、兼容 id shareda-dma-pool
[0.000000]保留内存:已创建 DMA 内存池、地址为0x0000000000a5000000、大小为1 MIB
[0.000000]保留内存:已初始化节点 vision_apps-r5f-dma-memory@a5000000、兼容 id sharedma-pool [0.000000ma-pool
、
大小为0x000000、大小为0x00000000000]保留内存[ 0.000000m] 已初始化节点 vision_apps-r5f-memory@a5100000、兼容 id shareda-dma-pool
[0.000000]保留内存:已创建 DMA 内存池、地址为0x0000000000a5800000、大小为1 MIB
[0.000000]保留内存:已初始化节点 vision_apps-r5f-dma-memory@a5800000、大小为
0x000000、大小为0.000000 ma-ma-pool [:
保留大小为0.000000m] 已初始化节点 vision_apps-r5f-memory@a5900000、兼容 id shareda-dma-pool
[0.000000]保留内存:已创建 DMA 内存池、地址为0x00000000000000a6000000、大小为1 mib
[0.000000];已保留 mem:已初始化节点 C66-dma-memory@a6000000、兼容 id sharedma-dma-ma-pool
[0.00000000001]保留大小为0x000000mem、大小为0x00000000mem:已创建
内存池、地址为0x000000000000000 m 已初始化节点 C66-MEMORY@a6100000、兼容 id shared dma-dma-pool
[0.000000]保留内存:已创建 DMA 内存池、大小为0x0000000000a7000000、
大小为1 mib [0.000000]其中:保留内存:已初始化节点 C66-dma-memory@a7000000、兼容 id shared dma-dma-pool
[0.000000]保留内存:已创建 DMA 内存池、大小为0x00000000000mib
、大小为0x00000000000000a15 mib、大小为0x0000a 已初始化节点 C66-MEMORY@a7100000、兼容 id shareda-dma-pool
[0.000000]保留存储器:已创建 DMA 存储器池、大小为0x00000000000a8000000、
大小为1 mib [0.000000]以下位置:保留存储器:已初始化节点 C71-dma-memory@a8000000、兼容 id shareddma-dma-pool
[0.000000]保留存储器:已创建 DMA 存储器池、大小为0x0000000mib 0.000000000m、大小为0x0000000000000000000m
已初始化节点 C71-MEMORY@a8100000、兼容 id shareda-dma-pool
[0.000000]保留存储器:已创建 DMA 存储器池、大小为0x000000000000in、
大小为32 mib [0.000000] of:reserved mem:initialized node vision_apps-dma-memory@ac000000、compatible id shared-dma-pool
[0.000000] of:reserved mem:
已创建 DMA 内存池、地址为0x00000000ce000000、大小为720 mib
[ 0.000000]以下位置:保留内存:已初始化节点 vision_apps-core-heap-memory@

@ce000000、兼容 id shared dma-dma-pool [0.000000]保留内存:已创建 DMA 内存池、大小为1 mib [0.000000]以下位置:保留内存:已初始化节点 vision_apps_apps-rf-dma-rfb、dma-dma-dma-rfb
已创建 DMA 存储器池、地址为0x00000000fb100000、大小为15 MIB
[ 0.000000]、共:保留内存:已初始化节点 vision_apps-r5f-memory@fb100000、兼容 ID shared-dma-pool
[ 0.000000] CMA:无法保留512 MIB
[ 0.000000] psci:正在从 DT 探测导管方法。
[0.000000] psci:在固件中检测到 PSCIv1.1。
[0.000000] psci:使用标准的 PSCI v0.2函数 ID
[0.000000] psci:不需要可信操作系统迁移
[0.000000] psci:SMC 调用约定 v1.0
[0.000000] pu:嵌入式2页/CPU s48408 r8192 d74u131072 [0.472]
在 CPU0上检测到 PIPT I-cache [0.000000]
CPU 特性: GIC 系统寄存器 CPU 接口
[0.000000] CPU 特性:检测到:EL2矢量硬化
[0.000000]内置1个区域列表,移动分组关闭。 总页数:35779
[0.000000]内核命令行:console=ttyS2,115200n8 armeycon=ns16550a, mmio32、0000x02800000 mtdparts=47040000.SPI.0:512k (ot
[0.000000]条目高速缓存散
列表条目:524288 (订单:6、4194304字节、
线性
堆栈外)[0.97152]条目:堆栈[:0.152]:堆栈:堆栈外:0.152000000:堆栈:堆栈:堆栈 已映射[mem 0x9a800000-0x9e800000](64MB)
[0.000000]内存:2584000K/2293760K 可用(9598K 内核代码、788K rwdata、3840K rodata、1664K init、683K BSS、 18446)
[0.000000] slub:HWalign=64、order=0-3、MinObjects=0、CPU=2、Nodes =1
[0.000000] RCU:可抢占分层 RCU 实现。
[0.000000] RCU: RCU 将 CPU 从 NR_CPU=256限制为 nr_CPU_IDs=2。
[0.000000]启用了 RCU 任务。
[0.000000] RCU:RCU 计算出的调度程序入伍延迟值为25个 Jiffies。
[0.000000] RCU:调整 RCU_FANOUT_LEG=16的几何结构、nr_CPU_IDs=2
[0.000000] NR_IRQ:64、nr_IRQ:64、预分配的 IRQs:0
[0.000000] v3:GIC:使用分离式 EOI/Deactivate 模式
[0.000000] NR_IRQ v3:960已实现[0.000000] SPICGICv3

:0:没有分配器支持[0.000000]
16个 PPI 已实现
[0.000000] ICv3:不支持 VLPI、不支持直接 LPI
[0.000000] ICv3:CPU0:找到重新分配器0区域0:

acer 0001900000 [0.000000]其[mem 0x01820000-0x0182FFF][0.000000] GIC:启用其变通办法:Socionext Synqu20000 pre-its [0x000000000100F]
@0x0000000000000.000000 已分配1048576器件@8c0800000 (flat、esz 8、psz 64K、SHR 0)
[0.0000]其:对命令队列使用高速缓存刷
新[0.000000] GICv3:使用 LPI 属性表@0x00000008c00c0000
[0.000000] GIC:对 LPI 属性表使用高速缓存刷新
[0.000000] v3:UCP0: 使用分配的 LPI 挂起表@0x00000008c00d0000
[0.000000] random:从 start_kernel+0x2b8/0x43c 调用 get_random_bytes、crng_init=0
[0.000000] arch_timer:cp15计时器以200.00MHz (phys)运行。
[ 0.0000]时钟源:ARCH_SYS_COUNTER:MASK:0x2e2049d3e8、max_idle_ns:440795210ns
[ 0.000002] sched_clock:200MHz 时为56位、分辨率5ns、每4398046511102ns 换行
一次[ 0.008374]
校准计时器、使用计算得出的0.0025~25个控制台颜色延迟[0.0939、校准计时器[0.0025]。 400.00 BogoMips (lpj=800000)
[ 0.023607] pid_max:默认值:32768最小值:301
[ 0.028360] LSM:安全框架正在初始
化[ 0.033114]安装高速缓存哈希表条目:8192 (顺序:0、65536字节、线性)
[ 0.040685]条目 tpoint-cache 哈希表:8192 (顺序: 0、65536字节、线性)
[0.049939]用32768个条目初始化的 ASID 分配器
[0.055532] RCU:分层 SRCU 实现。
[0.060603] Platform MSI:GIC-ITS@1820000域已创建
[0.066279] PCI/MSI:/bus@100000/中断控制器@1800000/GIC-ITS@1820000域已创建
[0.075135] SMP:打开辅助 CPU ...
[0.081233]在 CPU1上检测到 PIPT I-cache
[0.081257] GICv3:CPU1:找到重新分配器1区域0:0x0000000001920000
[0.081268] GICv3:CPU1:使用分配的 LPI 挂起表@0x00000008c00e0000
[0.081296] CPU1:引导的辅助处理器0x00000001 [0.08111]
CPU [0xDC1:[0.081]
总共激活2个处理器。
[0.115512] CPU 特性:检测到:32位 EL0支持
[0.120765] CPU 特性:检测到:CRC32指令
[0.132650] CPU:所有在 EL2上启动的 CPU
[0.136844]替代方案:修补内核代码
[0.142070] devmpfs:已初始化
[0.150611] FFFFFFFF 源:jiffies:0x160FFFF mask:0x100000_clocktex:0x100000_max_cycles [0.64000]
512 (顺序:-1、32768字节、线性)
[0.168016] pinctrl 内核:初始化的 pinctrl 子系统
[0.173884] NET:注册的协议系列16
[0.178644] DMA:预分配的256 KiB 池用于原子分配
[0.185162]硬件断点:找到6个断点和4个观察点寄存器。
[0.201033]注册的 HugeTLB 注册的16.0 GiB 页大小、预分配的0页
[0.207889]注册的 HugeTLB 注册的512 MIB 页大小、预分配的0页
[0.214650]注册的 HugeTLB 注册的2.00 MIB 页大小、预分配的0页
[0.222847]密码:Max_cpu_qlen 设置为1000 [0.214650] v230[0.23v_v0]]
v0]]由 sys_v023v_v012v0]]提供
由 EVM_12v0
[0.238330] iommu 提供:默认域类型:已转换
的[0.243502] SCSI 子系统已初始化
[0.247617] MC:Linux 媒体接口:v0.10
[0.251987] videodev:Linux 视频捕捉接口:v2.00
[0.257598] pps_core:LinuxPPS API 版本。 1寄存
式[0.262667] pps_core:软件版本。 5.3.6 -版权所有2005-2007 Rodolfo Giometti 
[0.272003] PTP 时钟支持寄存
[0.276013] EDAC MC:版本:3.0.0
[0.279753] FPGA 管理器框架
[0.283260]已初始化高级 Linux 声音架构驱动程序。
[0.289930]时钟源:切换到时钟源 arch_sys_counter
[0.296252] VFS:磁盘配额 dquot_6.6.0[0.300302]
VFS:Dquot-cache 哈希表条目:8192 (订单0、65536字节)
[0.309981] Carveout:0x0000000_sys_thermal
调节器:0.316512]
注册的热量调节器'power_allocator'
[0.322669] NET:注册协议系列2[0.334078]
tcp_list_portaddr_hash 哈希表条目:4096 (顺序:0、65536字节、线性)
[0.342841] TCP 建立哈希表条目:32768 (顺序:2、262144字节、线性)
[0.351038] TCP 建立哈希表条目:32768 (顺序: 3、524288字节、线性)
[0.358868] TCP:配置的哈希表(建立的32768 BIND 32768)
[0.365613] UDP 哈希表条目:2048 (顺序:0、65536字节、线性)
[0.372505] UP-Lite 哈希表条目:2048 (顺序:0、65536字节、线性)
[0.379910] NET:注册
的 RPC 协议系列[0.4694] 注册的 UNIX 套接字传输模块。
[0.390746] RPC:注册的 UDP 传输模块。
[0.395549] RPC:注册的 TCP 传输模块。
[0.400351] RPC:注册的 TCP NFSv4 4.1反向通道传输模块。
[0.406935] PCI:CLS 0字节,默认64
[0.411310]硬件性能事件:通过 ARMv8_pmuv3 PMU 驱动程序启用,7个计数器可用
[0.421493]初始化系统受信任的键环
[0.426122]工作集:TIMESTAMP_bits=46 max_order=16 bucke_order=0
[0.434868](固件版本0.426122])工作集:Phillip 4.0/441093](NFS/2009/ 0.4310431093]
注册 id_resolver 密钥类型
[0.446266]注册的密钥类型 id_resolver
[0.450537]注册的密钥类型 id_legacy
[0.454632] nfs4filelaout_init:NFSv4文件布局驱动程序注册...
[0.461601] 9p: 安装 v9fs 9p2000文件系统支持
[0.474072]密钥类型非对称已注册
[0.478260]非对称密钥解析器'x509'已注册
[0.483265]块层 SCSI 通用(BSG)驱动程序0.4版已加载(主要

调度程序244)[0.490823] IO mQ-dutline 已注册[0.4954494949] IO
粘滞环已注册[0.5007x ctrl 单个调度程序[0.500000] 94个引脚、大小为376
[0.506834] pinctrl-single 11c000.pinmux:173个引脚、大小为692
[0.515061] k3-ringacc 2b800000.ringacc:无法获取 MSI 域
[0.521336] k3-ringacc 3c000000.ringacc:无法获取 MSI 域
[0.52768262] ti-p3101000.531000.1000.p:rg@p1001.0001.00ringp@p100b100b.ringcc:无法获取 MSI 域[0.53g100b
目录'3101000.pat'的父级'GMAP'已存在!
[0.542092] ti-pat 31011000.pat:找到 PAT 修订版1.0、其中16384页
[0.548508] debugfs:目录'31011000.pat'、其中父级'GMAP'已存在!
[0.556441] ti-pat 310120.pat:找到 PAT 修订版1.0、其中包含16384页
[0.562853] debugfs:目录'31012000.pat'、其中父'GMAP'已存在!
[0.570779] ti-pat 31013000.pat:找到 PAT 修订版1.0 (具有2048页
)[0.577104] debugfs:目录'31013000.pat'(已存在父级'GMAP')!
[0.585026] ti-pat 310140.pat:找到 PAT 修订版1.0、共2048页
[0.591349] debugfs:目录'310140.pat'、其中父'GMAP'已存在!
[0.600722]串行:8250/16550驱动程序,10个端口,启用 IRQ 共享
[0.612806]返修:加载的模块
[0.619252]循环:加载的模块
[0.622900] sysfs:无法创建重复的文件名'/devices/platform/dma_buf_phys
[0.630936] CPU:0 PID:1 Comm:swapper/0非污染5.4.74-g9574bba32637a
硬件名称[0.630936] 德州仪器(TI) K3 J721E SoC (DT)
[0.643890]调用跟踪:
[0.646388] dump_backtrace+0x0/0x140
[0.650122] show_stack+0x14/0x20
[0.653504] dump_stack+0x234/0x114
[0.656982] sysfs_init_kernel+0x7c+0x678[+0x6764_kernel+0x678]+0x6764+0x368+0x368+0x36954_init_kernel+0x8064+0x368]+0x6764_init_kernel+0x368+0x40+0x6764_add_init_init/0x8064+0x8064+0x368+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40+0x40_











带有-EEXIST 的 DMA_buf_phys 不要尝试在中注册同名的内容。
[0.719261] libphy:固定 MDIO 总线:探测
[0.72363] Tun:通用 TUN/TAP 设备驱动程序、1.6
[0.729095] igbvf:英特尔(R)千兆位虚拟功能网络驱动程序-版本2.4.0-k
[0.737098] igbvf:版权所有(c) 2009 - 2012英特尔公司。
[0.743162] sky2:驱动程序版本1.30
[0.747450] VFIO -用户级元驱动程序版本:0.3
[0.753095] i2c /dev entries 驱动程序
[0.757161] sdhci:安全数字主机控制器接口驱动程序
[0.763476] sdhci:copyright (c) Pierre Osman
[0.768145] sdhci 平台驱动程序[0.773rg-sf 和 dhci tski 驱动程序
[0.7793] 已注册以指示 CPU
[0.781177]上的活动:从 DT 探测导管方法。
[0.786445] optee:修订版本3.8 (199fca17)
[0.786780] opte:初始化驱动
程序[0.795613] NET:注册协议系列17[0.800266]
9pnet:安装9P2000支持
[0.804665]注册的关键类型 DNS_resolver
[0.809194]注册的任务统计数据版本1[0.81382]
在注册的 X.82381]证书中加载 ringbacc
无法获取 MSI 域
[0.828397] k3-ring3c3c000000.ringacc:无法获取 MSI 域
[0.836718] ti-sci 44083000.dacc:ABI:3.1 (固件版本0x0014 'init.5-v2020.08b (了不起的 LLA)
[0.983934]随机:快速完成
[FAI 8000014'ccc.5-v220.8b
:v2e.asp]未找到 davinci Mc242e.r.cc_eq2c.eq.cc.eq2c.eq.eq.eq.eq.eq.eq.eq.a 100kHz 时的总线0版本0.12
[1.195655] omap_i2c 40b10000.i2c:100kHz
时的总线1版本0.12 [1.202278] omap_i2c 42120000.i2c:100kHz 时的总线2版本0.12
[1.208839] pca953x 3-0020:3-0020电源 VCC 未找到、使用3 p00216x 3-0020稳压

器[1.0019529]使用虚拟稳压器[1.00259] 写入寄存
器[1.246997] pca953x 失败:3-0020的探测失败、错误-121[1.252795]
pca953x 3-0022:3-0022未找到电源 VCC、使用虚拟稳压
器[1.260196] pca953x 3-0022:使用 AI
[1.263894] pca953x 3-0022:无法写入寄存器
1.268222: 探头3-0022失败、出现错误-121[1.274629]
omap_i2c 2000000.i2c:总线3 rev0.12在400kHz
[1.281019] omap_irev202000.i2c:总线4 0.12在100kHz
[1.287402] pca953x 5-0020:5-0020电源 VCC 未找到、使用虚拟稳压器

[1.00251956] 写入寄存
器[1.326978] pca953x 失败:5-0020的探测失败、错误-121[1.332769]
omap_i2c 2030000.i2c:总线5在400kHz
[1.339112] omap_i2c 2040000.i145:总线6在100kHz [1.345423]
omap_i20kHz
时为0.12@@i2c:总线在100kHz [1.3452kHz:100kHz 时为100kHz [1.38000:100kHz:100kHz r i2r i2kHz:100kHz:100kHz:100itrus inr i2kHz:100kHz:100i2r i2kHz:100r i2kHz 创建的中断路由器137域
[1.362640] ti-sci-intr 总线@100000:interrupt-controller0:创建的中断路由器131域
[1.371880] ti-sci-intr 总线@100000:navacc@30000000:interrupt-controller1:创建的中断路由器213域
[1.383035] ti-sci-inta -inta 33d00000.interrupt-controller:




总线[8003gp:800-ringacc trabs [1.296b-ringringb-ringringb.3]n:ringringcr iner23900000:ringring-ringringb-ringringb.3b.ds-ringringb.ds-ringb.ds-ringb.inc:ringcr
已禁用
[1.446697] k3-ringacc 2b8000.ringacc:RA 代理版本66346100、num_proxers:64[1.456210]
k3-ringacc 3c000000.ringacc:环加速器:1024、6100-rings[440,150] sci-dev-id:211
[1.46365] k3-ringacc
:ringc3:ringc1、ringc1:ringdam3c1:ringc1、rmc1:ringc1、ringc1、ringdma:ringc1、ringc1、ringdma:ringc1、ringc1、ring


40a00000.serial: MMIO 0x40a00000 (IRQ = 7、base_baud = 6000000)处的 ttyS1是 MIO
2800000.serial: 0x2800000 (IRQ = 22、base_baud = 3000000)处的8250 [



1.499861] printk:启用控制台[ttyS2]
[1.499](ttyS2])[1.499k:
禁用[ttyS2][tprintk:1.508297][printk:禁用控制台[1.508k]
引导控制台[ns16550a0]已禁用 

之后、Linux 中的输入 lspci 没有响应、因此我们在 EVM 板上进行了比较观察。

因此、我在 EVM 板上进行了比较观察、发现我可以在内核启动期间正确地观察与 PCI 相关的打印信息、我还可以通过在 Linux 中输入 lspci 来观察 PCI 的信息

[3.070044] j721e-PCIe 2900000。pcie:主机桥/bus@100000/pcie@2900000范围:
[3.077756]j721e-pcie 2900000。pcie:io 0x10000.0x10010fff -> 0x1000[3.085245]
j721e-pcie 2900000:总
线0x1000001.00000][3.0100000] pci_bridges [3.01000001.00000][3.0100000] pci_bridges:pci_1000001.0001.000001.00000]

根总线资源[IO 0x0000-0xFFF](总线地址[0x10001000-0x10010fff])
[3.114502] PCI_BUS 0000:00:根总线资源[mem 0x10011000-0x17FFFFFF]
[3.121545] PCI 0000:00:00.0:[104C:b00d]类型01类0x060400:0x0000_64FFF]
PCI 总
线地址:0x121545] PCI 0000:00:00:0x400_10064_00_10064_00_0001.0001.00]可能会将 PCI 0000写入到 PCI 总线地址0x400_100_100_100_10064_100_100_0001.00 2字节配置写入0000:00:00.0偏移量0x4可能会损坏相邻的 RW1C 位
[3.147450] PCI_BUS 0000:00:00:2字节配置写入0000:00:00.0偏移量0xe8可能会损坏相邻
的 RW1C bis [3.157409] PCI_BUS 0000:00:2字节配置写入0000:00:00.0偏移量0x374 PCI_bis 可能会损坏
2字节配置写入0000:00:00.0偏移量0x92可能会损坏相邻的 RW1C bis
[ 3.177337] PCI_BUS 0000:00:00:2字节配置写入0000:00:00.0偏移量 b2可能会损坏相邻的 RW1C bis
[ 3.187321] PCI 0000:00:00.0:支持 D1
[ 3.191414141414] PCI 0000:00:00.0:00:0000_D286] PCI
总线从 PCI DME 出发、3.1800:00.0:3.1800_0] 2字节配置写入0000:00:00.0偏移量0x84可能会损坏相邻的 RW1C bis
[ 3.209042] PCI 0000:00:00.0:桥配置无效([总线00-00])、重新配置
[ 3.217233] PCI_bus 0000:00:2字节配置写入0000:00:00.0偏移量0x3E 可能会损坏相邻的 RW192 bis
[ 3.31723] PCI_bus:0000.0000:271C 2字节配置写入0000:00:00.0偏移量0x3E 可能会损坏相邻的 RW1C bis
[3.237150] PCI_BUS 0000:00:2字节配置写入0000:00:00.0偏移量0x3E 可能会损坏相邻的 RW1C bis
[3.248580] PCI_BUS 0000:01:Busn_res:[bus 01-0f] end is 更新为
3.25500:0000:0000:3.25501] PCI 桥至[bus 01]
[3.260631] pcieport 0000:00:00.0:PME:通过 IRQ 37
[3.266672] pcieport 发出信号0000:00:00.0:AER:通过 IRQ 37 [4.274461]


j721e-PCIe 2910000.PCIe:host bridge /bus@10000/PCIe@2910000.0:PCIe 2918001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.002.

MEM 0x18011000。0x1ffffff -> 0x18011000
[ 4.297160] j721e-PCIe 2910000.PCIe:PCI 主机桥至总线0001:00
[ 4.303567] PCI_bus 0001:00:根总线资源[总线00-0f]
[4.309172] PCI_bus 0001:00:00:根总线资源
[0x1803900][0x1800001f:0x0001FFF][0x18000-010000][0x18000-010FFF]
[104c:b00d] type 01 class 0x060400
[4.332280] PCI 0001:00:00.0:支持 D1
[4.336374] PCI 0001:00:00.0:支持 PME#从 D0 D1 D3hot
[4.343851] PCI 0001:00:00.0:桥配置无效([bus 00-00])、
将 PCI 总线配置为4.3501:
00:00:0001][PCI 0481] PCI 桥至[bus 01]
[4.365533] pcieport 0001:00:00.0:PME:用 IRQ 40 [4.371546]
pcieport 发送信号0001:00:00.0:AER:用 IRQ 40


[5.379451] j721e-PCIe 292000.PCIe:host bridge /bus@10000/20000@2927001.001.001.001.001.e[PCIE PCIE 范围
0x00000001-29400001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.001.002.
MEM 0x4400011000.0x4407ffff -> 0x00011000
[5.402860] j721e-PCIe 29870.PCIe:PCI 主机桥至总线0002:00
[5.409266] PCI_bus 0002:00:根总线资源[bus 00-0f][5.41420000]
PCI_bus 0002:0x249266][0x240002FFF]根总线资源[bus 资源[bus 00-0x240002f][0x240002[0x24000][0x240002FFF]
根总线资源[mem 0x4400011000-0x4407ffFFF](总线地址[0x00011000-0)
[5.434885] PCI 0002:00:00.0:[104C:b00d] type 01类别0x060400
[5.441092] PCI 0002:00:00.0:支持 D1
[ 5.445185]
PCI DC#:00_10000] PCI D0002:00:00:00:00240002:00:00 PCI D2400]
[bus 01-0f] end 更新为01
[5.469087] PCI 0002:00:00.0:PCI 桥接至[bus 01]
[5.4743433] pcieport 0002:00:00.0:PME:用 IRQ 43发送信号
[5.480366] pcieport 0002:00:00.0:AER:用 IRQ 43启用 

因为我发现在配置 RC 或 EP 时、DTS 文件中包含 GPIO 相关信息。

那么、我想问、我需要在哪里进行更改?  它是否与 DTS 文件相关?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hao、  

    PCIe 插槽上的 PERST#信号由 EVM 上的 IO 扩展器控制、我假设您直接在硬件上使用 GPIO。 您可以在以下位置更改器件树文件中的 GPIO 引脚:

     board-support/linux-5.4.40+gitAUTOINC+66cf445b76-g66cf445b76/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dts

    您会看到如下内容:

    pcie1_rc{(&P)
    RESET-GPIO =<&exp1 2 GPIO_ACTIVE_HIGH_>;
    phys =<&serdes1_PCIe_link>;
    PHY-names ="PCIe_phy";
    通道数=<2>;

    您可以将有关如何使用 GPIO 的其他部分复制到"RESET-GPIOs"行。 我记得驱动器中的某个位置有一个逆变器、因此您可以保持 ACTIVE_HIGH、尽管 PCIe 插槽上的实际信号是低电平有效。  

    您还可以探测 PCIe 插槽上的信号、当 PCIe 处于活动状态时、该插槽应在复位期间保持低电平、然后保持高电平。 此外、可能还需要确保引脚多路复用器正确配置为具有初始内部下拉的 GPO、因为在时钟和电源稳定之前、我们不会通过 EP 来退出复位。  

    如果需要进一步澄清,请告诉我们。  

    Jian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们将其连接到 TDA4的引脚 AB25。

    我们连接两个定制板、一个是 RC、另一个是 EP。

    首先、在 EP 上、我们使用 shell 脚本执行命令:

    mkdir /sys/kernel/config/pci_ep/functions/pci_epf_test/func1 -p
    echo 0x104c >/sys/kernel/config/pci_ep/functions/pci_epf_test/func1/vendorid
    echo 0xb00d >/sys/kernel/config/pci_ep/functions/pci_epf_test/func1/deviceid
    echo 2 >/sys/kernel/config/pci_ep/functions/pci_epf_test/func1/msi_interrupts
    echo 2 >/sys/kernel/config/pci_ep/functions/pci_epf_test/func1/msix_interrupts
    ln -s /sys/kernel/config/pci_ep/functions/pci_epf_test/func1 /sys/kernel/config/pci_ep/controllers/2900000.pcie-ep /mkdir
    
    /sys/kernel/config/pci_ep/functions/pci_epf_test/func2
    echo 0x104c >/sys/kernel/config/pci_ep/functions/pci_epf_test/func2/vendorid
    
    
    /sys/kernel/config/pci_ep/functions/pci_epf_test/func2/msix_interrupts echo 0xb00d >/sys/kernel/config/pci_ep/functions/pci_epf_test/func2/deviceid echo 2 >/sys/kernel/config/pci_ep/functions/pci_epf_test/func2/msi_interrupts
    ln -s /sys/kernel/config/pci_ep/functions/pci_epf_test/func2 /sys/kernel/config/pci_ep/controllers/2900000.pcie-ep
    
    
    mkdir /sys/kernel/config/pci_ep/functions/pci_epf_test/func3
    echo 0x104c > /sys/kernel/config/pci_ep/functions/pci_epf_test/func3/vendorid
    echo bb00d >/sys/kernel/config/pci_ep/functions/pci_epf_test/func3/deviceid
    echo 2 >/sys/kernel/config/pci_ep/functions/pci_epf_test/func3/msi_interrupts
    echo 2 >/sys/kernel/config/pci_ep/functions/pci_epf_test/func3/msix_interrupts
    ln -s /sys/kernel/config/pci_ep/functions/pci_epf_test/func3 /sys/kernel/config/pci_ep/controllers/2900000.pcie-ep
    echo 1 >/sys/kernel/config/pci_ep/controllers/2900000.pcie-ep/start 

    之后、我们打开了 RC。但在内核启动后、它会失败。 按如下方式打印:

    [1.96959] j721e-PCIe 2900000。pcie:link up
    [1.973836] j721e-PCIe 2900000。pcie:host bridge /bus@100000/pcie@2900000范围:
    [1.981327] j721e-pcie 2900000。pcie:io 0x10001000。0x10010fff - pcie 2900000:[0x9927]
    j1000000:
    gie cie cie cie 0x99000.100000.100000.e@pcie cie cie cie:0x9900271.00000.e@cie cie bridge-bridge-bridges 0x9900000.1e.tie.tipci.1000001.78000.100000.100000.1e.ti.1e.tipci.1e.tibridge.
    根总线资源[bus 00-0f]
    [2.007745] PCI_BUS 0000:00:根总线资源[IO 0x0000-0xFFF](总线地址[0x10001000-0x10010fff])
    [2.017203] PCI_BUS 0000:00:根总线资源[mem 0x10011000-0x17ffFFF]
    [2.024078] PCI_BUS 0000:0400:b00:00400 [0800]
    2字节配置写入0000:00:00.0偏移量0x4可能会损坏相邻的 RW1C 位
    [2.039720] PCI_BUS 0000:00:00:2字节配置写入0000:00:00.0偏移量0x4可能会损坏相邻的 RW1C 位
    [2.049377] PCI_BUS 0000:00:2字节配置写入0000:00:00.0偏移量0xe8
    可能会损坏相邻的 RW1C 位[2.049377] PCI_BUS 0000:00] 2字节配置写入0000:00:00.0偏移量0x3E 可能会损坏相邻的 RW1C 位
    [2.059110] PCI_BUS 0000:00:2字节配置写入0000:00:00.0偏移量0x92可能会损坏相邻的 RW1C 位
    [2.074286] PCI_BUS 0000:00:2字节配置写入0000:00:00.0偏移量2可能会损坏相邻的 RW1C 位[2.074286]
    支持 D1
    [2.106378] PCI 0000:00:00.0:D0 D1 D3HOT
    [2.116798]支持的 PME# PCI_BUS 0000:00:00:2字节配置写入0000:00:00.0偏移量0x84可能会损坏相邻的 RW1C 位
    [2.131410] PCI 0000:00:00.0:桥接配置无效([bus 00-00:00.0:
    重新配置 PCI 0000]、PCI 0000_0000:[2.14688] 2字节配置写入0000:00:00.0偏移量0x3E 可能会损坏相邻的 RW1C 位
    [2.160003] PCI_BUS 0000:00:2字节配置写入0000:00:00.0偏移量0x3E 可能会损坏相邻
    的 RW1C 位[2.174228] PCI_BUS 0000:00:2字节配置写入0000:00:00.0偏移量0x1C
    
    
    可能会损坏相邻的 RW1C 位[2.174228] PCI_BUS 0000:00:00:00:00:00:00:2BYTE CONFIG 写入0000:1901:001] [104c:b00d] type 00 class 0x0000
    [2.208135] PCI 0000:01:00.0:reg 0x10:[MEM 0x00000000 0x0000-0x0000.ff]
    [2.220047] PCI 0000:01:00.0:reg 0x14:[MEM 0x00000000 0x0000-0x000001ff]
    [2.23852] PCI:01:0x00000000 0x0000.0000
    :0x00000000 0x0000.0000:0x0000.0000 0x0000.0000:0x0000.0001FFFF:[2.0000]
    
    寄存器0x24:[MEM 0x00000000-0x000fff]
    [2.289208] PCI 0000:01:00.0:支持 D1
    [2.301521] PCI 0000:01:00.0:PME#支持 D0 D1 D3HOT
    [2.314181] PCI 0000:01:00.0:REG 0x224:[MEM 0x0000-0x0000-01-00.0
    :00 64位 ARFFF][2.000000
    
    :00 = 2.00064bit FFF] PCI 64bit [2.00000-045100](2.000F:00:00:00:00:00 = 00 = 00 = 00 = 00 = 1) PCI 64bit FFF] [104c:b00d] type 00 class 0x0000
    [2.354173] PCI 0000:01:00.1:reg 0x10:[MEM 0x00000000 0x0000-0x0000.ff]
    [2.368351] PCI 0000:01:00.1:reg 0x00000000:[MEM 0x00000000 0x00000000 0x0001ff]
    [2.379979] PCI:0x00000000 0x0000.0000 0x0000.0001
    :0x0000.0000 0x0000.0001[2.0001M 0x0000.0001M 0x0000.0001FFFF:0x0000.0001M 0x0000.0001M 0x0000.0001M 0x0000.0001M 0x0000.0001M 0x0000.0001:[2.0001M 0x0000.0001M 0x0000.0001M 0x0000.0001M 0x0000.0001M 0x0000.0001M 0x0000.0001M 0x0000.0000
    
    寄存器0x24:[MEM 0x00000000-0x000fff]
    [2.433474] PCI 0000:01:00.1:支持 D1
    [2.531687] PCI 0000:01:00.1:支持 D0 D1 D3hot
    [2.537482] PCI 0000:01:00.1:REG 0x224:[MEM 0x0000-0x0000-0x000-0x000]
    PCI 64bit [64bit 000-0x000000:0001]PCI ARFFF][2.0004:0004FFF][64bit 000-045000] PCI 0000:00:00:00:00 = 64bit FFF](2.00064bit FFFF = 0x0000.00:00:00:00 = 0x0004)[PCI 64bit 0004 [PCI 64bit FFF]
    
    [104c:b00d] type 00 class 0x0000
    [2.560373] PCI 0000:01:00.2:reg 0x10:[MEM 0x00000000-0x0000-0xff]
    [2.566636] PCI 0000:01:00.2:reg 0x14:[MEM 0x00000000 0x0000-0x000001ff]
    [2.572897] PCI:01:0x00000000:0x00000002
    :0x00000001FFFF:[2.00010000.0000:0x0000.0002]PCI 2.0002:0x0000.00010000.00010000.00010000.0002:[MCL]
    
    寄存器0x24:[MEM 0x00000000-0x000fff]
    [2.598138] PCI 0000:01:00.2:支持 D1
    [2.602136] PCI 0000:01:00.2:PME#支持 D0 D1 D3hot
    [2.607929] PCI 0000:01:00.2:寄存器0x224:[MEM 0x0000-0x0000-0x000-0x000FFF]
    包含64位 ARFFFF 0x0000-0x0 [64bit 000-0x000-0x000-0x000-0x000-0x00:000FFF]
    
    PCI 0000.00:0xFFF] PCI 0000 [64bit FFF] PCI 0000:0x0000.00 = 0xFFF](FFFF = 0x0000.00 = 0x0000 未处理的外部中止在0x8000000上从 S-EL1接收
    到错误:异常原因=0综合症=bbbf000000
    EL1
    x0未处理的异常 = 0xff800012620000
    x1 = 0x0000000000000000
    x2 = 0x000000000080000a
    x3 = 0x0000000000000003
    x4 = 0xff800017900000
    x5 = 0xffffff0001050e698
    x6 = 0xff8000117ef8f4
    x7 = 0x000000000000ea60
    x8 = 0x0000000080b5111d
    x9 = 0x00000000b00d104c
    x10 = 0x7f7f7f7f7f7f7f7f7f
    x11 = 0x01010101010101
    x12 = 0xffffff000844199227
    X13 = 0xffffff00084419991c
    x14 = 0xFFFFFFFFFF
    x15 = 0xff000840372f28
    x16 = 0xff8000129b0000
    X17 = 0x0000000000000001
    x18 = 0x0000000000000000
    x19 = 0xff8000117ef834
    x20 = 0x0000000000000004
    x21 = 0x0000000000000000
    x22 = 0x0000000000000004
    x23 = 0xff8000117ef834
    x24 = 0x0000000000000003
    x25 = 0xff8000110ee210
    x26 = 0x0000000000000001
    X27 = 0x0000000000000000
    x28 = 0xffffff000842167800
    X29 = 0xff8000117ef780
    X30 = 0xff8000104dd7a8
    SCR_EL3 = 0x000000000000073d
    sctlr_EL3 = 0x0000000030cd183f
    CPTR_EL3 = 0x0000000000000000
    TCR_EL3 = 0x000080803520
    daif = 0x00000000000002c0
    MACE_EL3 = 0x00000000004404ff
    spsr_EL3 = 0x0000000020000085
    ELR_EL3 = 0xff8000104dd7c0
    ttbr0_EL3 = 0x000070010b00
    ESR_EL3 = 0x00000000bf000000
    FAR_EL3 = 0x0000000000000000
    spsr_el1 = 0x0000000060000005
    ELR_EL1 = 0xff800010115b44
    spsr_abt = 0x0000000000000000
    spsr_und = 0x0000000000000000
    spsr_IRQ = 0x0000000000000000
    spsr_fiq = 0x0000000000000000
    sctlr_el1 = 0x000034d4d91d
    actlr_el1 = 0x0000000000000000
    cpacr_el1 = 0x0000000000300000
    csselr_el1 = 0x0000000000000000
    sp_el1 = 0xff8000117ef780
    ESR_el1 = 0x0000000000000000
    ttbr0_el1 = 0x000083090000
    ttbr1_el1 = 0x000082df0000
    MACE_EL1 = 0x0000bbff440c0400
    amair_el1 = 0x0000000000000000
    TCR_el1 = 0x00000034f5507510
    tpidr_el1 = 0xff80086ebe0000
    tpidr_el0 = 0x0000000000000000
    tpidrro_el0 = 0x000000000000
    PAR_el1 = 0x0000000000000000
    mpidr_el1 = 0x000080000000
    afsr0_el1 = 0x0000000000000000
    afsr1_el1 = 0x0000000000000000
    contextidr_el1 = 0x0000000000000000
    vbar_el1 = 0xff800010081800
    cntp_ctl_el0 = 0x0000000000000005
    cntp_cval_el0 = 0x000061960d78
    cntv_ctl_el0 = 0x0000000000000000
    cntv_el0 = 0x0000000000000000
    cntkctl_el1 = 0x00000000006_el0
    = 0x00007000a3d0
    ISR_el1 = 0x000000000040
    dacr32_el2 = 0x0000000000000000
    ifsr32_el2 = 0x0000000000000000
    cpuectlr_el1 = 0x0000001b00000040
    cpumerrsr_el1 = 0x0000000000000000
    l2merrsr_el1 = 0x0000000000000000
    

    我真诚地想征求您的建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hao、  

    很抱歉耽误你的回答。  

    如果您不执行 EP 脚本、您能否确认 RC 是否可以在不崩溃的情况下引导?

    从内核崩溃的位置来看、RC 似乎尝试配置 EP、并运行到错误的地址空间。 您提到这是一对客户硬件。 如果是、您能否确认:

    1.遥控器能否使用标准 PCIe 卡启动、查看 SSD 或已知的设备?

    2. EP 暴露在 PCIe 空间中的存储器区域是什么?

    此致

    Jian

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您不执行 EP 脚本、您能否确认 RC 是否可以在不崩溃的情况下引导?

    如果我不执行 EP 脚本、 RC 可以在不崩溃的情况下启动。

    RC 能否使用标准 PCIe 卡引导、查看 SSD 或已知的设备?

    很抱歉、我没有 任何标准 PCIe 卡。

    我的 SSD 连接 TDA4的 PCIe2、但 RC 无法使用 lspci 命令看到 SSD。

    RC 只能看到主机桥。

    EP 暴露在 PCIe 空间中的存储器区域是什么?

    除了 前面提到的复位 GPIO 和设置 EP 模式之外、我没有更改任何代码。 因此、 根据以下示例、它应该是使用 sdk7.1的默认值:

    https://software-dl.ti.com/jacinto7/esd/processor-sdk-linux-jacinto7/latest/exports/docs/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point.html

    但在 EP 上执行后、该指令具有以下差异

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    今天、我们购买了一个 PCIe 转 RJ45 (x1平面)卡、并将其安装到 RC 板上进行测试。

    我可以看到卡、因此 RC 工作良好。

x 出现错误。请重试或与管理员联系。