当前位置: 首页 > 面试题库 >

如何强制Linux内核枚举PCI-e总线?

国言
2023-03-14
问题内容

Linux内核2.6

我有一个通过GPIO加载的fpga,该GPIO连接到运行Linux的开发板。fpga将通过pci-
express总线发送和接收数据。但是,这是在启动时枚举的,因此,未发现任何链接(因为在启动时未加载fpga)。

如何在Linux中强制重新枚举pci-e总线?是否有一个简单的命令,或者我必须进行内核更改?我需要热插拔PCIe设备的功能。


问题答案:

我想知道您使用的平台是什么:要在x86系统上运行,可以解决此问题(也称为hack)是让BIOS基本上在FPGA正常运行的任何总线,设备,功能上静态配置PCI设备。枚举设备并为其保留PCI空间(即使设备并不真正存在)。然后,在设备驱动程序中,您必须做一些额外的事情,例如在对fpga进行编程之后手动设置BAR和int行。当然,这需要修改BIOS,如果您与BIOS供应商合作,则可以与他们签约以为您进行更改;如果您与BIOS供应商合作,则将更加困难…也请记住我在x86上使用VxWorks进行工作,我们有一个AMI为我们的主板制作了自定义BIOS

如果没有BIOS,则考虑在引导加载程序中对其进行编程,那里已经可以从磁盘读取数据,并且添加GPIO功能可能不太难(假设您正在使用jtag和GPIO?),事实取决于您使用的引导加载程序可能已经可以执行GPIO?

修改内核以执行此操作的问题在于,必须在PCI枚举之前找到可以读取位文件的最佳位置…例如,如果磁盘设备驱动程序在PCI之后初始化,那么显然您必须执行一些操作仅在PCI枚举之前读取位文件而对内核进行的彻底更改,这可能会导致其他令人烦恼的问题…

您可能已经发现了另一种选择,并且对于开发时间来说这实际上是唯一可行的选择:接通系统电源,对fpga板进行编程,然后进行复位(例如,无需重新启动电源,例如:sudo现在重启),FPGA应该保持其配置,Linux应该枚举它。



 类似资料:
  • 问题内容: 这不是卡住我的问题,而是我正在寻找一种编写代码的整洁方法。 本质上,我正在编写一个事件驱动的应用程序。用户触发一个事件,该事件被发送到适当的对象,然后这些对象处理事件。现在,我正在编写偶数处理程序方法,并且希望使用switch语句确定如何处理事件。现在,在我研究通用结构时,事件类非常简单: 然后,在另一堂课中,我会看到类似以下内容的内容: 我会 喜欢 做的就是这样的事情(尽管我当然会坚

  • 问题内容: 我想知道在Java中是否可以嵌套枚举。 在这里,我想做的是: 拥有一个由CAT和DOG组成的物种,将允许我访问可用CAT和DOG品种的子枚举。例如,我希望能够测试是否装有CAT或DOG,以及动物是否是PERSAN CAT或PITBULL狗。CAT和DOG品种必须是不同的枚举,即CatBreeds枚举和DogBreeds枚举。 这是我要使用的访问模式的示例: 种类: 物种 种狗 品种:

  • 我们正试图找到一种使用JPA来持久化枚举的可靠方法。使用的常见方法是不可取的,因为在重构时破坏映射太容易了。每个枚举都应该有一个单独的数据库值,它可以不同于枚举名称/顺序,这样您就可以安全地更改枚举的名称或内部顺序(例如序数值),而不会破坏任何东西。例如,这篇博客文章有一个如何实现这一目标的示例,但是我们觉得建议的解决方案给代码增加了太多的混乱。我们希望通过使用JPA 2.1中引入的新的机制来实现

  • 问题内容: Linux内核开发人员如何在提交代码后在本地测试他们的代码?他们是否使用某种单元测试,构建自动化?测试计划? 问题答案: linux内核非常重视社区测试。 通常,任何开发人员都会在提交之前测试他们自己的代码,并且经常会使用Linus的内核开发版本,或者与他们的工作相关的项目使用其他不稳定/开发树之一。这意味着他们经常同时测试自己的变更和其他人的变更。 正式的测试计划的方式往往不多,但是

  • 问题内容: 例如,我该怎么做: 结果示例: 问题答案: 迅捷4.2+ 从Swift 4.2(使用Xcode 10)开始,只需添加协议一致性即可从中受益。要添加此协议一致性,您只需要在某处写: 如果枚举是您自己的,则可以直接在声明中指定一致性: 然后,以下代码将打印所有可能的值: 与早期Swift版本(3.x和4.x)的兼容性 如果您需要支持Swift 3.x或4.0,则可以通过添加以下代码来模仿S

  • 枚举类(“新的枚举”/“强类型的枚举”)主要用来解决传统的C++枚举的三个问题: 传统C++枚举会被隐式转换为int,这在那些不应被转换为int的情况下可能导致错误 传统C++枚举的每一枚举值在其作用域范围内都是可见的,容易导致名称冲突(同名冲突) 不可以指定枚举的底层数据类型,这可能会导致代码不容易理解、兼容性问题以及不可以进行前向声明 枚举类(enum)(“强类型枚举”)是强类型的,并且具有类