![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
韦东山全新Linux教程
文章平均质量分 81
参考韦东山视频
LuckyDog0623
来自一个社会底层打工人的呐喊
展开
-
全新Linux教程-驱动大全-PCI和PCIe子系统-P6-PCIe路由方式
和前面讲的类似,就是通过桥的地址范围进行过滤,不管来自上层的地址还是来自endpoint的地址,桥都会进行处理转发。主要是TLP的头部。主设备要给EndPoint的内存写数据,它发出"内存写报文",不需要对方回应。主设备要给EndPoint的IO写数据,它发出"IO写报文",需要对方回应。主设备要读EndPoint的内存数据,它发出"内存读报文",需要对方回应。主设备要读EndPoint的IO数据,它发出"IO读报文",需要对方回应。PCIe设备(EndPoint)被配置后,它记录有分配给它的基地址。原创 2024-04-20 15:55:11 · 662 阅读 · 0 评论 -
全新Linux教程-驱动大全-PCI和PCIe子系统-P3-PCI设备的访问方法-桥设备
本节主要讲了如何去配置桥设备和桥之后的设备。上节已经讲到可以直接通过不同引脚访问直连的PCIe Agent设备。①IDSEL ②C/BE ③AD[31:0]访问funciotn和寄存器。原创 2024-04-20 12:24:59 · 326 阅读 · 0 评论 -
全新Linux教程-驱动大全-PCI和PCIe子系统-P2-PCI设备的访问方法-非桥设备
主要讲PCI设备的硬件访问方法。原创 2024-04-20 12:17:43 · 634 阅读 · 0 评论 -
全新Linux教程-驱动大全-PCI和PCIe子系统-P1-从软件角度看PCI和PCIE
①使用差分信号串行接口。②PCI和pcie对于CPU来说是兼容的。参考:01_pcie接口引脚电路示例_AX99100.pdf`原创 2024-04-20 11:46:18 · 559 阅读 · 0 评论 -
全新Linux教程-驱动大全-PCI和PCIe子系统-P5-PCIe设备的配置过程
2. 从Bus 0开始扫描(发出配置0的读,读到A的配置寄存器):先尝试读到BDF(0,0,0)设备的Vendor ID,如果不成功表示没有这个设备,就尝试下一个设备BDF(0,1,0)。RC传过来的地址,会经过每个P2P的判断,判断该地址在不在P2P处理的范围之内(图中,假设了每个P2P的地址范围分别是A-B,C-D,E-F)。但是,由于设备号是在硬件上就写死了的,例如RC后pcie桥的所有p2p桥,会从做到右一次进行编号0,1,2(因此在RC这一层也就是bus0这层,可以根据设备号来选择哪个设备)。原创 2024-04-20 11:19:04 · 1081 阅读 · 0 评论 -
linux中断驱动程序
1、内核和芯片初始化代码已经将异常或者中断的架构处理了。此时需要用户提供处理函数。也就说用户需要告诉内核当某一个中发生时,处理哪些内容!!需要使用到的注册函数request_irqint request_irq(unsigned int irq, irq_handler_t handler,unsigned long irqflags, const char *devname, void *dev_id){(1)分配一个irqaction结构 action = kmalloc(si...原创 2021-10-24 23:04:06 · 3004 阅读 · 0 评论 -
Linux内核中断处理机制--初始化
1、Linux内核从start_kernel函数开始进行初始化(1)trap_init主要就是异常的初始化。(2)init_IRQ才是中断的初始化。2、trap_init都干了啥呢?void __init trap_init(void){.... 把向量表拷贝到ffff0000地址memcpy((void *)vectors, __vectors_start, __vectors_end - __vectors_start);.... 把复杂向量表拷贝到ffff0200mem.原创 2021-10-23 09:42:47 · 1886 阅读 · 0 评论