x86类型的CPU如何知道它正在与正确的Linux IO设备通信?
x86类型(32或64位)的CPU如何知道它正在与正确的Linux IO设备通信x86类型的CPU如何知道它正在与正确的Linux IO设备通信?,linux,cpu-architecture,Linux,Cpu Architecture,x86类型(32或64位)的CPU如何知道它正在与正确的Linux IO设备通信 例如,如果将SCSI存储设备插入PCI总线。CPU如何检测并与该设备通信正确的命令?了解这个硬件答案将有助于软件编程。设备树告诉内核使用哪个驱动程序,驱动程序知道如何与设备通信。这是否意味着CPU通过IO设备的IO端口与设备驱动程序通信?CPU使用驱动程序与设备通信。设备树是一个告诉内核“我们有什么硬件”的文件,然后内核调用驱动程序的“probe”函数来验证实际硬件的存在,如果“probe”成功,内核将调用驱动程序
例如,如果将SCSI存储设备插入PCI总线。CPU如何检测并与该设备通信正确的命令?了解这个硬件答案将有助于软件编程。设备树告诉内核使用哪个驱动程序,驱动程序知道如何与设备通信。这是否意味着CPU通过IO设备的IO端口与设备驱动程序通信?CPU使用驱动程序与设备通信。设备树是一个告诉内核“我们有什么硬件”的文件,然后内核调用驱动程序的“probe”函数来验证实际硬件的存在,如果“probe”成功,内核将调用驱动程序来执行读/写/控制任务,驱动程序将执行这些任务。因此,只有驾驶员知道如何“实际”与硬件对话。例如,计算机有一个LED。设备告诉内核有一个LED连接到某个GPIO。然后内核将加载GPIO LED驱动程序并将LED暴露给sysfs。当用户试图通过向sysfs节点写入1来打开LED时,将调用驱动程序中的“打开”函数,该函数知道如何打开LED。然而,LED也可以通过I2C或PWM或其他方法控制,因此需要不同的驱动程序,但内核只调用相同的函数,但由不同的驱动程序提供。Linux内核中的设备驱动程序实际上是高度面向对象的,尽管是用C编写的。类似设备的驱动程序共享相同的“接口”(功能类似于C++中的一个,它是纯虚拟类,但以不同的方式实现,但仍然是一个纯抽象接口,声明“实现该接口的人将能够完成这些操作”。。设备树告诉内核使用哪个驱动程序,驱动程序知道如何与设备通信。这是否意味着CPU通过IO设备的IO端口与设备驱动程序通信?CPU使用驱动程序与设备通信。设备树是一个文件,告诉内核“我们有什么硬件”,然后内核调用驱动程序的“probe”函数用于验证实际硬件的存在,如果“probe”成功,内核将调用驱动程序来执行读/写/控制任务,驱动程序将执行这些任务。因此,只有驱动程序知道如何“实际”与硬件对话。例如,一台计算机有一个LED。设备告诉内核有一个LED连接到某个GPIO。然后内核将加载GPIO LED驱动程序并将LED暴露给sysfs。当用户试图通过向该sysfs节点写入1来打开LED时,“打开它”驱动程序中的函数被调用,它知道如何打开。但是LED也可以通过I2C或PWM或其他方法控制,因此需要不同的驱动程序,但内核只调用相同的函数,但由不同的驱动程序提供。Linux内核中的设备驱动程序实际上是高度面向对象的,尽管是用C编写的。simil的驱动程序AR设备共享相同的“接口”(功能上类似于C++中的一个接口,它是一个纯虚拟类,但以不同的方式实现,但仍然是一个纯抽象接口,声明“实现该接口的任何人都能做到”。