PCIe调试工具-C Code Silicon Debug

目录

1.PCIe每日一问简介

2.背景-Why We Need

3.C代码访问PCIe Configuration空间

4.C代码访问PCIe Bar空间


1.PCIe每日一问简介

1.文章坚持实际工作中有所帮助---实际工作中遇到问题可查阅。

2.章节内容规划具有连贯性。lspci-setpci-PCIe Configuration Space--next。

3.文章以文字和视频形式发布,建议大家视频和文章结合查阅。

4.视频发布:公众号、B站、抖音,搜寻“芯塾科技”可观看。

5.文章发布: 公众号、CSDN、知乎、B站,搜寻“芯塾科技”可浏览。

2.背景-Why We Need

1.作为芯片的研发人员,在芯片的Bring UP阶段时常面临如下问题。

2.芯片研发验证阶段,有芯片的初始化代码、基本数据调试代码以及非常全面的测试用例集。

3.芯片研发验证阶段,代码格式为UVM Sequence或者DPI-C C代码。

4.芯片Bring UP阶段,时间非常紧迫,第一时间获取芯片的状态至关重要,驱动还处于适配或者其它原因阻碍Bring UP时间。

5.芯片研发人员迫于对驱动以及Linux kernel不了解,但是对芯片非常了解而处于有力使不上的尴尬局面。

6.有没有可能直接将我们上述的验证代码直接跑到silicon上面, 这个就是需要考虑的问题。

7.应用软件需要调用OS内驱动提供的接口访问硬件设备。

8.系统启动BIOS阶段已初始化PCIe设备,也就是在系统空间分配了PCIe BAR以及ECAM;Linux中应用层软件使用虚拟地址(HVA)。

硬件原理:如果配置MMU将应用层软件虚拟地址(HVA转换为CPU系统地址空间中PCIe硬件对应的MMIO地址(HPA),则应用层通过访问HVA就可以访问PCIe硬件设备。

Linux实现:提供mmap 函数。 mmap访问/dev/mem可以实现对物理内存空间的直接操作。

9.mmap 是 Linux 系统中一个重要的系统调用,用于将文件或设备映射到进程的用户地址空间,使得文件内容可以直接通过内存指针访问在用户空间。

10.linux  /dev/mem 是一个特殊的字符设备文件,为物理内存全映像,提供对计算机物理内存(RAM 和内存映射的硬件寄存器)访问权限。通过该设备文件,用户程序可以读写物理地址空间中的任意位置

11.应用层通过open("/dev/mem",O_RD_WR), 然后mmap,用mmap就可以访问物理內存空间。

12.mmap format

3.C代码访问PCIe Configuration空间

1.PCIe 设备的配置空间通过 ECAM(Enhanced Configuration Access Mechanism) 映射到内存地址,需要结合总线号(Bus)、设备号(Device)、功能号(Function)和寄存器偏移(Offset)计算目标地址。

2.代码如下所示

4.C代码访问PCIe Bar空间

1.Bar地址获取方式

  lspci

  /sys/bus/pci../resource x

  /proc/iomem

2.代码如下所示

----------------------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------

文章坚持-工作中查阅可解决实际问题

您的点赞-收藏-转发-评论是我们坚持原创的动力

欢迎关注微信公众号"芯塾科技"

视频发布平台:B站/公众号/抖音,可搜索"芯塾科技"观看

微信搜索:Xinshu Technology, 加入芯塾科技技术交流群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值